SlideShare a Scribd company logo
1 of 34
Download to read offline
CocoaPodsのはなし※ ただしObjective-Cに限る
@hironytic
CocoaPods
https://cocoapods.org/
Objective-C/Swiftライブラリの依存管理
RubyでいうところのRubyGems + Bundler
Node.jsでいうところのnpm
Gettig Started - はじめよう
インストール
$ sudo gem install cocoapods
↓
セットアップ
$ pod setup
※ 実のところ、この辺のことは覚えてません‥‥
使い方
Pod(ライブラリ)を必要とするプロジェクトに
カレントフォルダを移す。
HogeFuga/ ← ここ
├ HogeFuga/
│ ├ AppDelegate.h
│ ├ AppDelegate.m
│ │ :
├ HogeFugaTests/
│ ├ HogeFugaTests.m
│ │ :
└ HogeFuga.xcodeproj
$ cd path/to/HogeFuga
Podfileの作成
使いたいPodを記述する。
空のファイルから作ってもいいが、
便利なコマンドも
$ pod init
↓
HogeFuga/
├ HogeFuga/
│ ├ AppDelegate.h
│ ├ AppDelegate.m
│ │ :
├ HogeFugaTests/
│ ├ HogeFugaTests.m
│ │ :
├ HogeFuga.xcodeproj
└ Podfile ← これができる
Podfile
こんなのができてる。
# Uncomment this line to define a global platform for your project
# platform :ios, '6.0'
target 'HogeFuga' do
end
target 'HogeFugaTests' do
end
Podfile
使いたいPodを記述する。
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'HogeFuga' do
pod 'BFTaskPromise', '~> 2.0'
end
target 'HogeFugaTests' do
end
メモ:バージョンの指定
指定 意味
'1.3' 1.3
'>1.3' 1.3より上(1.3は含まない)
'>=1.3' 1.3以上(1.3を含む)
'<1.3' 1.3未満(1.3は含まない)
'<=1.3' 1.3以下(1.3を含む)
'~>1.3.2' 1.3.2 <= ver < 1.4(いい感じに)
'~>1.3' 1.3 <= ver < 2.0(いい感じに)
Podのインストール
$ pod install
↓
HogeFuga/
├ HogeFuga/
│ ├ AppDelegate.h
│ ├ AppDelegate.m
│ │ :
├ HogeFugaTests/
│ ├ HogeFugaTests.m
│ │ :
├ HogeFuga.xcodeproj
├ HogeFuga.xcworkspace ← 増えた
├ Podfile
├ Podfile.lock ← 増えた
└ Pods/ ← 増えた
Podを使った開発
以後は*.xcworkspaceの方をXcodeで開く。
HogeFuga/
│ :
├ HogeFuga.xcodeproj
├ HogeFuga.xcworkspace ← こっち
│ :
ライブラリへのヘッダパス
ライブラリのコンパイル・リンク
そのまま#importしてビルドするだけ。
使いたいPodが増えた
Podfileを修正。
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'HogeFuga' do
pod 'BFTaskPromise', '~> 2.0'
pod 'Realm'
end
target 'HogeFugaTests' do
pod 'Realm/Headers'
end
↓
$ pod install
Podfile.lock
podinstallで作られたファイル
HogeFuga/
├ HogeFuga/
│ ├ AppDelegate.h
│ ├ AppDelegate.m
│ │ :
├ HogeFugaTests/
│ ├ HogeFugaTests.m
│ │ :
├ HogeFuga.xcodeproj
├ HogeFuga.xcworkspace ← 増えた
├ Podfile
├ Podfile.lock ← 増えた
└ Pods/ ← 増えた
Podfile.lock
PODS:
- BFTaskPromise (2.1.0):
- Bolts/Tasks (~> 1.2)
- Bolts/Tasks (1.2.0)
- Realm (0.93.2):
- Realm/Headers (= 0.93.2)
- Realm/Headers (0.93.2)
DEPENDENCIES:
- BFTaskPromise (~> 2.0)
- Realm
- Realm/Headers
SPEC CHECKSUMS:
BFTaskPromise: 25007577307dcd4dc657a143ac6a63f3356652c2
Bolts: d176cb1e0012175589e389a9db49b85e27787576
Realm: 2fdd0ae74f730e190384e0338d8a0d3654df8220
Podfile.lock
インストールされたPodのバージョンが書かれてい
る。
podinstallしても、ライブラリのバージョンが勝手
に上がったりはしない。
Podfile.lockはソース管理(git)に追加しよう!
バージョンを更新したければ?
$ pod update [POD_NAMES ...]
Pods
podinstallで作られたファイル
HogeFuga/
├ HogeFuga/
│ ├ AppDelegate.h
│ ├ AppDelegate.m
│ │ :
├ HogeFugaTests/
│ ├ HogeFugaTests.m
│ │ :
├ HogeFuga.xcodeproj
├ HogeFuga.xcworkspace ← 増えた
├ Podfile
├ Podfile.lock ← 増えた
└ Pods/ ← 増えた
Pods
インストールしたPodのソースファイル等と
それをビルドするプロジェクト
HogeFuga/
│ :
└ Pods/
├ BFTaskPromise/
├ Bolts/
├ Headers/
├ LocalPodspecs/
├ Realm/
├ TargetSupportedFiles/
├ Manifest.lock
└ Pods.xcodeproj
ソース管理に追加するか、除外(.gitignore)するか?
→ CocoaPods公式サイトは追加を推奨。
Pods
公式サイトのドキュメントの要約
追加するメリット
チェックアウト後のpodinstallが不要
Podの取得元(GitHub)がダウンしていてもOK
Podが確実に同一だと保証できる
除外するメリット
リポジトリを小さくできる
通常は、Podの取得元が生きている限り、同じもの
がインストールされるはず
使っているPodのバージョンが異なるブランチ間で
のマージがやりやすい
Podの作り方
‥‥その前に準備を
CocoaPods Trunk
認証とPodリリースのためのAPI
デバイス毎に「セッション」を登録。
次のように一度だけ実行。
$ pod trunk register mailaddr@example.com 'Your Name' --description='macbook
cocoapods.orgからメールが届くので、
そのメールのリンクをクリック。
登録済みセッションの一覧を見るには
$ pod trunk me
Podの作り方
必要なもの
Podに含めるソース、ライブラリ
*.podspecファイル
LICENSEファイル
テンプレートから作成
質問に答えていくと、Podの種を作ってくれる。
$ pod lib create [pod name]
↓ 実は初めて実行してみた
$ pod lib create Piyo
Cloning `https://github.com/CocoaPods/pod-template.git` into `Piyo`.
Configuring Piyo template.
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
2015-07-04 21:25:09.912 defaults[82243:2285211] 
The domain/default pair of (org.cocoapods.pod-template, HasRunbefore) does not exist
If this is your first time we recommend running through with the guide: 
 - http://guides.cocoapods.org/making/using-pod-lib-create.html
 ( hold cmd and double click links to open in a browser. )
 Press return to continue.
What language do you want to use?? [ ObjC / Swift ]
 > 
objc
Would you like to include a demo application with your library? [ Yes / No ]
 > 
yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > 
テンプレートから作成
こんな感じのファイル群が生成される。
Piyo/
├ .git/
├ .gitignore
├ .travis.yml
├ _Pods.xcodeproj
├ Example/
│ ├ Piyo/
│ ├ Piyo.xcodeproj
│ ├ Piyo.xcworkspace
│ ├ Podfile
│ ├ Podfile.lock
│ ├ Pods/
│ └ Tests/
├ LICENSE ← MITLicenseになってた
├ Piyo.podspec
├ Pod/
│ ├ Assets/
│ └ Classes/
└ README.md
Podspec
Piyo.podspec
Pod::Spec.new do |s|
s.name = "Piyo"
s.version = "0.1.0"
s.summary = "A short description of Piyo."
s.description = <<-DESC
An optional longer description of Piyo
* Markdown format.
* Don`t worry about the indent, we strip it!
DESC
s.homepage = "https://github.com/<GITHUB_USERNAME>/Piyo"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screens
s.license = 'MIT'
s.author = { "Hironori Ichimiya" => "hiron@hironytic.com" }
s.source = { :git => "https://github.com/<GITHUB_USERNAME>/Piyo.git"
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
Podのバージョンの付け方
に従って付ける。Semantic Versioning
X.Y.Z (例:1.0.4)
X: メジャーバージョン
APIに互換性がなくなったら上げる
Y: マイナーバージョン
APIの後方互換を保った機能追加で上げる
Z: パッチバージョン
APIの後方互換を保ったバグフィックスで上げる
Podの開発中
Podfileに:pathを付けると
開発中のPodをインストールできる。
Piyo/
├ Example/
│ │ :
│ └ Podfile ← これ
├ LICENSE
├ Piyo.podspec
├ Pod/
└ README.md
※ Piyo/Example/Podfile
pod "Piyo", :path => "../"
リリース
1. Podの検証
2. タグを作って自分のリポジトリへプッシュ
podspecのs.source=で指定したリポジトリ/タグ
3. Specs repoへプッシュ
$ pod lib lint
:
s.version = "0.1.0"
:
s.source = { :git => "https://github.com/<GITHUB_USERNAME>/Piyo.git", :ta
:
$ pod trunk push Piyo.podspec
おまけ
Private Pods
オープンじゃないPod
社内ライブラリとか
利用方法
参照
というか、使ってみたことがないのです。
いつか利用してみたら、また報告します。
https://guides.cocoapods.org/making/private-
cocoapods.html
Carthage(カルタゴ)
https://github.com/Carthage/Carthage
CocoaPodsのライバル
CocoaPodsとの違い
Specs Repoに相当するものがない
workspaceを強制しない
基本はDynamic Frameworkを使う方式なのでiOS 8以
降のみに対応→ 今後普及するはず
というか、使ってみたことがないのです。
いつか利用してみたら、また報告します。
以上、CocoaPodsのはなしでした。

More Related Content

What's hot

.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説Cherry Pie Web
 
Dive into dockerネットワーク
Dive into dockerネットワークDive into dockerネットワーク
Dive into dockerネットワークKazuyuki Mori
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springTakuya Ueda
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Yasutaka Kawamoto
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefsguest172cfb
 
あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。Masahito Zembutsu
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレperyaudo
 
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンJAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンRyo Nakamaru
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?ogawatti
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.specKent Ohashi
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHPSho A
 

What's hot (20)

.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
 
Dive into dockerネットワーク
Dive into dockerネットワークDive into dockerネットワーク
Dive into dockerネットワーク
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
Capistrano
CapistranoCapistrano
Capistrano
 
あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。
 
Flask勉強会その1
Flask勉強会その1Flask勉強会その1
Flask勉強会その1
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
 
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンJAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.spec
 
Rake
RakeRake
Rake
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHP
 

Similar to CocoaPodsのはなし

Docker handson
Docker handsonDocker handson
Docker handsonkoda3
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修Suguru Yazawa
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたFuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたtoshihirock
 
Symfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるSymfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるKoji Iwazaki
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesYukiya Hayashi
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Nobuhiro Iwamatsu
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in SapporoYoshikazu Aoyama
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックEmma Haruka Iwao
 
DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築Yoshihiro Mizoguchi
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン啓介 大橋
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションKazuhiro Hara
 

Similar to CocoaPodsのはなし (20)

Docker handson
Docker handsonDocker handson
Docker handson
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Sinatra and heroku for mac
Sinatra and heroku for macSinatra and heroku for mac
Sinatra and heroku for mac
 
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたFuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
 
Symfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるSymfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみる
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 

More from Hironytic

DroidKaigi 2018報告会(公式アプリへのコントリビュート)
DroidKaigi 2018報告会(公式アプリへのコントリビュート)DroidKaigi 2018報告会(公式アプリへのコントリビュート)
DroidKaigi 2018報告会(公式アプリへのコントリビュート)Hironytic
 
DroidKaigi 2018報告会(はじめてのKotlinハンズオン)
DroidKaigi 2018報告会(はじめてのKotlinハンズオン)DroidKaigi 2018報告会(はじめてのKotlinハンズオン)
DroidKaigi 2018報告会(はじめてのKotlinハンズオン)Hironytic
 
DroidKaigi 2018報告会(会場の風景)
DroidKaigi 2018報告会(会場の風景)DroidKaigi 2018報告会(会場の風景)
DroidKaigi 2018報告会(会場の風景)Hironytic
 
Firebaseの新しいデータベース
Firebaseの新しいデータベースFirebaseの新しいデータベース
Firebaseの新しいデータベースHironytic
 
RxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけRxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけHironytic
 
RxSwiftをバインディングツールとして使ってみる
RxSwiftをバインディングツールとして使ってみるRxSwiftをバインディングツールとして使ってみる
RxSwiftをバインディングツールとして使ってみるHironytic
 
Heroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバーHeroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバーHironytic
 

More from Hironytic (7)

DroidKaigi 2018報告会(公式アプリへのコントリビュート)
DroidKaigi 2018報告会(公式アプリへのコントリビュート)DroidKaigi 2018報告会(公式アプリへのコントリビュート)
DroidKaigi 2018報告会(公式アプリへのコントリビュート)
 
DroidKaigi 2018報告会(はじめてのKotlinハンズオン)
DroidKaigi 2018報告会(はじめてのKotlinハンズオン)DroidKaigi 2018報告会(はじめてのKotlinハンズオン)
DroidKaigi 2018報告会(はじめてのKotlinハンズオン)
 
DroidKaigi 2018報告会(会場の風景)
DroidKaigi 2018報告会(会場の風景)DroidKaigi 2018報告会(会場の風景)
DroidKaigi 2018報告会(会場の風景)
 
Firebaseの新しいデータベース
Firebaseの新しいデータベースFirebaseの新しいデータベース
Firebaseの新しいデータベース
 
RxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけRxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけ
 
RxSwiftをバインディングツールとして使ってみる
RxSwiftをバインディングツールとして使ってみるRxSwiftをバインディングツールとして使ってみる
RxSwiftをバインディングツールとして使ってみる
 
Heroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバーHeroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバー
 

CocoaPodsのはなし