SlideShare a Scribd company logo
1 of 53
Download to read offline
PHPerのためのSwift入門
デジタルサーカス(株)長谷川智希
⾃自⼰己紹介
長谷川智希 / デジタルサーカス(株) 副団長CTO
とも き
@tomzoh

とむぞう
iOS Swift
Coming
Soon
開発系趣味
その他趣味
iOSアプリ開発, Web開発 趣味のプログラム
レンタルカートレース, 電子工作(mbed), …
TOMZOH
デジタルサーカス(株)
・ Webサイト受託開発
・ スマホアプリ受託開発
・ 自社サービス
(PHP, Drupal, CakePHP)
(iOS, Android)
(http://appbuilder.jp)
Twitter: @tomzoh
Twitter: @tomzoh
今日のテーマ:
PHPerのためのSwift入門
iOS開発の開発言語
Objective-C
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
MonsterList* ml = [[MonsterList alloc]
initWithListName:@"EVOLUTION"];
NSMutableArray* evolutionIds = [[NSMutableArray alloc] init];
for (NSDictionary* item in ml.items){
if (! [[item allKeys] containsObject:@"evolution_id"]){
continue;
}
[evolutionIds addObject:item[@"evolution_id"]];
}
_materials = [DBUtil
evolutionMaterialsWithEvolutionIds:evolutionIds];
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
}
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
MonsterList* ml = [[MonsterList alloc]
initWithListName:@"EVOLUTION"];
NSMutableArray* evolutionIds = [[NSMutableArray alloc] init];
for (NSDictionary* item in ml.items){
if (! [[item allKeys] containsObject:@"evolution_id"]){
continue;
}
[evolutionIds addObject:item[@"evolution_id"]];
}
_materials = [DBUtil
evolutionMaterialsWithEvolutionIds:evolutionIds];
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
}
何コレ
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
MonsterList* ml = [[MonsterList alloc]
initWithListName:@"EVOLUTION"];
NSMutableArray* evolutionIds = [[NSMutableArray alloc] init];
for (NSDictionary* item in ml.items){
if (! [[item allKeys] containsObject:@"evolution_id"]){
continue;
}
[evolutionIds addObject:item[@"evolution_id"]];
}
_materials = [DBUtil
evolutionMaterialsWithEvolutionIds:evolutionIds];
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
}
何コレ
キモい
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
MonsterList* ml = [[MonsterList alloc]
initWithListName:@"EVOLUTION"];
NSMutableArray* evolutionIds = [[NSMutableArray alloc] init];
for (NSDictionary* item in ml.items){
if (! [[item allKeys] containsObject:@"evolution_id"]){
continue;
}
[evolutionIds addObject:item[@"evolution_id"]];
}
_materials = [DBUtil
evolutionMaterialsWithEvolutionIds:evolutionIds];
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
}
めんどい
何コレ
キモい
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
MonsterList* ml = [[MonsterList alloc]
initWithListName:@"EVOLUTION"];
NSMutableArray* evolutionIds = [[NSMutableArray alloc] init];
for (NSDictionary* item in ml.items){
if (! [[item allKeys] containsObject:@"evolution_id"]){
continue;
}
[evolutionIds addObject:item[@"evolution_id"]];
}
_materials = [DBUtil
evolutionMaterialsWithEvolutionIds:evolutionIds];
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
}
めんどい
何コレ
キモい
難儀!
WWDC2014 Swift登場!
Swift
override func viewDidLoad() {
super.viewDidLoad()
var ml = MonsterList(name: "EVOLUTION")
var evolutionIds = Array<Int>()
for item in ml.items {
if let id = item["evolution_id"] {
evolutionIds.append(id)
}
}
_materials = DBUtil.evolutionMaterials(evolutionIds)
}
Swift
override func viewDidLoad() {
super.viewDidLoad()
var ml = MonsterList(name: "EVOLUTION")
var evolutionIds = Array<Int>()
for item in ml.items {
if let id = item["evolution_id"] {
evolutionIds.append(id)
}
}
_materials = DBUtil.evolutionMaterials(evolutionIds)
}
ですよねー
Swift
override func viewDidLoad() {
super.viewDidLoad()
var ml = MonsterList(name: "EVOLUTION")
var evolutionIds = Array<Int>()
for item in ml.items {
if let id = item["evolution_id"] {
evolutionIds.append(id)
}
}
_materials = DBUtil.evolutionMaterials(evolutionIds)
}
ですよねー
ですよねー
Swift
override func viewDidLoad() {
super.viewDidLoad()
var ml = MonsterList(name: "EVOLUTION")
var evolutionIds = Array<Int>()
for item in ml.items {
if let id = item["evolution_id"] {
evolutionIds.append(id)
}
}
_materials = DBUtil.evolutionMaterials(evolutionIds)
}
ですよねー
ですよねー
ですよねー
Swift
override func viewDidLoad() {
super.viewDidLoad()
var ml = MonsterList(name: "EVOLUTION")
var evolutionIds = Array<Int>()
for item in ml.items {
if let id = item["evolution_id"] {
evolutionIds.append(id)
}
}
_materials = DBUtil.evolutionMaterials(evolutionIds)
}
ですよねー
普通!
ですよねー
ですよねー
「PHPerのための」Swift入門
Swift、PHPerにオススメ
変数
int foo = 3
Objective-C
型推測
変数
int foo = 3 var foo: int = 3
Objective-C Swift
型推測
変数
int foo = 3 var foo: int = 3
var foo = 3
Objective-C Swift
型推測
型推測
変数
定数
int foo = 3 var foo: int = 3
NSString* const it = @ go
var foo = 3
Objective-C Swift
Objective-C
型推測
型推測
変数
定数
int foo = 3 var foo: int = 3
NSString* const it = @ go
var foo = 3
Objective-C Swift
Objective-C Swift
型推測
型推測
変数
定数
int foo = 3 var foo: int = 3
NSString* const it = @ go let
var foo = 3
Objective-C Swift
Objective-C Swift
型推測
型推測
変数
定数
int foo = 3 var foo: int = 3
NSString* const it = @ go let
var foo = 3
Objective-C Swift
Objective-C Swift
型推測
型推測
it =
変数
定数
int foo = 3 var foo: int = 3
NSString* const it = @ go let
var foo = 3
Objective-C Swift
Objective-C Swift
型推測
型推測
it = go
「型とか評価値、分かってるんだよね」感。
PHP
$items = $this->Item->find(‘all')
if (count($items) > 0){
echo $items[0][“name”];
}
if ($items = $this->Item->find('all')){
echo $items[0][“name”];
}
「型とか評価値、分かってるんだよね」感。
PHP
$items = $this->Item->find(‘all')
if (count($items) > 0){
echo $items[0][“name”];
}
if ($items = $this->Item->find('all')){
echo $items[0][“name”];
}
「型とか評価値、分かってるんだよね」感。
PHP
配列は要素数が0ならfalse,
1以上ならtrue扱いって「分かってる」
$items = $this->Item->find(‘all')
if (count($items) > 0){
echo $items[0][“name”];
}
if ($items = $this->Item->find('all')){
echo $items[0][“name”];
}
「型とか評価値、分かってるんだよね」感。
PHP
配列は要素数が0ならfalse,
1以上ならtrue扱いって「分かってる」
シンプルに省略
$items = $this->Item->find(‘all')
if (count($items) > 0){
echo $items[0][“name”];
}
「型とか評価値、分かってるんだよね」感。
Swift
let food: [String: [String]] = items.find(‘all’)
let count = food[“主食”]?.count
「型とか評価値、分かってるんだよね」感。
Swift
let food: [String: [String]] = items.find(‘all’)
let count = food[“主食”]?.count
$food = [
"主食" => [“米”, “パスタ”, “パン”],
"スープ" => [“味 汁”, “コンソメ”]
]
PHPで書くとこんなイメージの定義
「型とか評価値、分かってるんだよね」感。
Swift
let food: [String: [String]] = items.find(‘all’)
let count = food[“主食”]?.count
「型とか評価値、分かってるんだよね」感。
Swift
let food: [String: [String]] = items.find(‘all’)
let count = food[“主食”]?.count
let count = items.find(‘all’)[“主食”]?.count
「型とか評価値、分かってるんだよね」感。
Swift
let food: [String: [String]] = items.find(‘all’)
let count = food[“主食”]?.count
let count = items.find(‘all’)[“主食”]?.count
items.find()の返値が[String: [String]]
だって「分かってる」
「型とか評価値、分かってるんだよね」感。
Swift
let food: [String: [String]] = items.find(‘all’)
let count = food[“主食”]?.count
let count = items.find(‘all’)[“主食”]?.count
items.find()の返値が[String: [String]]
だって「分かってる」
シンプルに省略
トレイリング 「 , 」
PHP
$foods = [
"curry" => "カレー",
"onigiri" => "おにぎり",
"ramen" => "ラーメン",
]
トレイリング 「 , 」
PHP
$foods = [
"curry" => "カレー",
"onigiri" => "おにぎり",
"ramen" => "ラーメン",
]
トレイリング 「 , 」
PHP Swift
$foods = [
"curry" => "カレー",
"onigiri" => "おにぎり",
"ramen" => "ラーメン",
]
var foods = [
"curry" : "カレー",
"onigiri" : "おにぎり",
"ramen" : "ラーメン",
]
トレイリング 「 , 」
PHP Swift
$foods = [
"curry" => "カレー",
"onigiri" => "おにぎり",
"ramen" => "ラーメン",
]
var foods = [
"curry" : "カレー",
"onigiri" : "おにぎり",
"ramen" : "ラーメン",
]
join / split
PHP
$elements = split(",", "a, b, c");
$string = join(",", $elements);
join / split
PHP
Swift
$elements = split(",", "a, b, c");
$string = join(",", $elements);
join / split
PHP
Swift
let elements = split("a,b,c", { $0 == ","})
let string = join(",", elements)
$elements = split(",", "a, b, c");
$string = join(",", $elements);
多言語とPHPを行き来して
「ああ…らくちん」と思うポイントが
Swiftにも生きてる。
あ、あと…
Swiftも参照カウント方式です。
でも、循環参照は回収されません。
Swift
PHPerにオススメ!
iOSアプリの開発環境
必須 Mac
OS X 10.9.4以降
必須 Xcode
Apple Developerに登録(無料)すればダウンロード可能。
必須 Objective-C or Swift
どちらか一方、または両方を使用。
任意 iOS Developer Program & iOS実機
実機デバッグや、AppStore公開するなら必要。
¥11,800/年
iOS開発、やってみよう!
Enjoy Swift!!
ありがとうございました。
@tomzoh
人材募集中!

PHP, Drupal, スマホ…
デジタルサーカス(株)

More Related Content

What's hot

ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~Akabane Hiroyuki
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室Yusuke Ando
 
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識Nao Oec
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integrationaccount inactive
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発Shinzo SAITO
 
⽇本語全⽂検索
⽇本語全⽂検索⽇本語全⽂検索
⽇本語全⽂検索kmiyako
 
Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話do_aki
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable TypeMTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable TypeYujiro Araki
 
プロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメプロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメNorito Agetsuma
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトアシアル株式会社
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室Yusuke Ando
 

What's hot (13)

ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
 
⽇本語全⽂検索
⽇本語全⽂検索⽇本語全⽂検索
⽇本語全⽂検索
 
Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable TypeMTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
 
プロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメプロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメ
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
 

Viewers also liked

Memento: Updated technical details (May 2011)
Memento: Updated technical details (May 2011)Memento: Updated technical details (May 2011)
Memento: Updated technical details (May 2011)Herbert Van de Sompel
 
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理Masahito Zembutsu
 
Wireshark入門(3)
Wireshark入門(3)Wireshark入門(3)
Wireshark入門(3)彰 村地
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?Masahito Zembutsu
 
さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2ozuma5119
 
要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのことcodecampJP
 

Viewers also liked (6)

Memento: Updated technical details (May 2011)
Memento: Updated technical details (May 2011)Memento: Updated technical details (May 2011)
Memento: Updated technical details (May 2011)
 
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
 
Wireshark入門(3)
Wireshark入門(3)Wireshark入門(3)
Wireshark入門(3)
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
 
さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2
 
要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと
 

Similar to PHPerのためのSwift入門

学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)Itsuki Kuroda
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swiftYuki Asai
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swiftYuki Asai
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo Yamasaki
 
WordPressで始めるphp入門
WordPressで始めるphp入門WordPressで始めるphp入門
WordPressで始めるphp入門Hiroaki Murayama
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
初めての Data api
初めての Data api初めての Data api
初めての Data apiYuji Takayama
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.124時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1聡 中川
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -Yuji Takayama
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter IntegrationKazuki Nakajima
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 

Similar to PHPerのためのSwift入門 (20)

学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
WordPressで始めるphp入門
WordPressで始めるphp入門WordPressで始めるphp入門
WordPressで始めるphp入門
 
CoffeeScript
CoffeeScriptCoffeeScript
CoffeeScript
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
Scala with DDD
Scala with DDDScala with DDD
Scala with DDD
 
Teclab3
Teclab3Teclab3
Teclab3
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
初めての Data api
初めての Data api初めての Data api
初めての Data api
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.124時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 

More from Tomoki Hasegawa

Reading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulatorReading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulatorTomoki Hasegawa
 
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMSDrupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMSTomoki Hasegawa
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境Tomoki Hasegawa
 
iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016Tomoki Hasegawa
 
エンジニアのお祭り
エンジニアのお祭りエンジニアのお祭り
エンジニアのお祭りTomoki Hasegawa
 
勉強会のこちら側とあちら側
勉強会のこちら側とあちら側勉強会のこちら側とあちら側
勉強会のこちら側とあちら側Tomoki Hasegawa
 
tvOSでWebSocketを使う
tvOSでWebSocketを使うtvOSでWebSocketを使う
tvOSでWebSocketを使うTomoki Hasegawa
 
「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP sideTomoki Hasegawa
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作るTomoki Hasegawa
 
「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみたTomoki Hasegawa
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSTomoki Hasegawa
 
TestFlightみたいなのを自作する
TestFlightみたいなのを自作するTestFlightみたいなのを自作する
TestFlightみたいなのを自作するTomoki Hasegawa
 
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知するPHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知するTomoki Hasegawa
 
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったPUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったTomoki Hasegawa
 
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきたPHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきたTomoki Hasegawa
 
CakePHP3ウォークスルー
CakePHP3ウォークスルーCakePHP3ウォークスルー
CakePHP3ウォークスルーTomoki Hasegawa
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版Tomoki Hasegawa
 
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するAppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するTomoki Hasegawa
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版Tomoki Hasegawa
 

More from Tomoki Hasegawa (20)

Reading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulatorReading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulator
 
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMSDrupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境
 
iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016
 
エンジニアのお祭り
エンジニアのお祭りエンジニアのお祭り
エンジニアのお祭り
 
勉強会のこちら側とあちら側
勉強会のこちら側とあちら側勉強会のこちら側とあちら側
勉強会のこちら側とあちら側
 
tvOSでWebSocketを使う
tvOSでWebSocketを使うtvOSでWebSocketを使う
tvOSでWebSocketを使う
 
「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作る
 
「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
 
TestFlightみたいなのを自作する
TestFlightみたいなのを自作するTestFlightみたいなのを自作する
TestFlightみたいなのを自作する
 
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知するPHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知する
 
Stargazer Meetup #1
Stargazer Meetup #1Stargazer Meetup #1
Stargazer Meetup #1
 
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったPUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作った
 
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきたPHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
 
CakePHP3ウォークスルー
CakePHP3ウォークスルーCakePHP3ウォークスルー
CakePHP3ウォークスルー
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
 
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するAppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
 

PHPerのためのSwift入門