Suche senden
Hochladen
20120327 phpstudy58-phake
•
4 gefällt mir
•
2,119 views
Katsuhiro Ogawa
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 26
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
CodeIgniter入門
CodeIgniter入門
Sho A
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
最近の PHP の話
最近の PHP の話
y-uti
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
Kazunori Tatsuki
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
Cherry Pie Web
Empfohlen
CodeIgniter入門
CodeIgniter入門
Sho A
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
最近の PHP の話
最近の PHP の話
y-uti
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
Kazunori Tatsuki
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
Cherry Pie Web
Local php-100828 2
Local php-100828 2
Akio Ishida
JavaScript超入門 基礎
JavaScript超入門 基礎
tetsu6
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
Ext.directことはじめ
Ext.directことはじめ
Shuhei Aoyama
PHP の GC の話
PHP の GC の話
y-uti
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
JavaScript入門-基礎編
JavaScript入門-基礎編
mactkg
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
PHPの今とこれから2014
PHPの今とこれから2014
Rui Hirokawa
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
WebAPIではじめるphp入門
WebAPIではじめるphp入門
Hiroaki Murayama
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
higaki
アプリコンテスト
アプリコンテスト
Tomonori Yamada
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
君にグロースハックはいらない
君にグロースハックはいらない
Takaaki Umada
Weitere ähnliche Inhalte
Was ist angesagt?
Local php-100828 2
Local php-100828 2
Akio Ishida
JavaScript超入門 基礎
JavaScript超入門 基礎
tetsu6
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
Ext.directことはじめ
Ext.directことはじめ
Shuhei Aoyama
PHP の GC の話
PHP の GC の話
y-uti
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
JavaScript入門-基礎編
JavaScript入門-基礎編
mactkg
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
PHPの今とこれから2014
PHPの今とこれから2014
Rui Hirokawa
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
WebAPIではじめるphp入門
WebAPIではじめるphp入門
Hiroaki Murayama
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
higaki
アプリコンテスト
アプリコンテスト
Tomonori Yamada
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
Was ist angesagt?
(20)
Local php-100828 2
Local php-100828 2
JavaScript超入門 基礎
JavaScript超入門 基礎
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Ext.directことはじめ
Ext.directことはじめ
PHP の GC の話
PHP の GC の話
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
JavaScript入門-基礎編
JavaScript入門-基礎編
Hack/HHVM 入門
Hack/HHVM 入門
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
PHPの今とこれから2014
PHPの今とこれから2014
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
はじめてのCodeIgniter
はじめてのCodeIgniter
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
WebAPIではじめるphp入門
WebAPIではじめるphp入門
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
アプリコンテスト
アプリコンテスト
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Andere mochten auch
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
君にグロースハックはいらない
君にグロースハックはいらない
Takaaki Umada
とあるスタートアップの評価指標(メトリクス)
とあるスタートアップの評価指標(メトリクス)
Takaaki Umada
深層学習の非常に簡単な説明
深層学習の非常に簡単な説明
Seiichi Uchida
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
Itsuki Kuroda
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
Itsuki Kuroda
Andere mochten auch
(6)
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
君にグロースハックはいらない
君にグロースハックはいらない
とあるスタートアップの評価指標(メトリクス)
とあるスタートアップの評価指標(メトリクス)
深層学習の非常に簡単な説明
深層学習の非常に簡単な説明
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
Ähnlich wie 20120327 phpstudy58-phake
20091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
Ruby test double
Ruby test double
Naotoshi Seo
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
Hiroki Shimizu
An Internal of LINQ to Objects
An Internal of LINQ to Objects
Yoshifumi Kawai
CocoaPodsのはなし
CocoaPodsのはなし
Hironytic
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
KUNITO Atsunori
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
FlexUnit4とMockitoFlex
FlexUnit4とMockitoFlex
Yasuhiro Morikawa
Weeklycms20120218
Weeklycms20120218
Yoshi Sakai
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
Hideki Hashizume
Php+Word Press
Php+Word Press
Hideo Kashioka
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
miso- soup3
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
ksimoji
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
ria1201
How To Drink Wsgi
How To Drink Wsgi
Atsushi Odagiri
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
Webサーバ勉強会03
Webサーバ勉強会03
oranie Narut
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
Takashi Uemura
Ähnlich wie 20120327 phpstudy58-phake
(20)
20091030cakephphandson 01
20091030cakephphandson 01
Ruby test double
Ruby test double
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
An Internal of LINQ to Objects
An Internal of LINQ to Objects
CocoaPodsのはなし
CocoaPodsのはなし
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Web技術勉強会 20100925
Web技術勉強会 20100925
FlexUnit4とMockitoFlex
FlexUnit4とMockitoFlex
Weeklycms20120218
Weeklycms20120218
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
Php+Word Press
Php+Word Press
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
How To Drink Wsgi
How To Drink Wsgi
第21回Creators MeetUp
第21回Creators MeetUp
Webサーバ勉強会03
Webサーバ勉強会03
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
Mehr von Katsuhiro Ogawa
オレオレSecurityバンドル作っちゃいました
オレオレSecurityバンドル作っちゃいました
Katsuhiro Ogawa
Twigエクステンションの作り方
Twigエクステンションの作り方
Katsuhiro Ogawa
Symfony Update 2011
Symfony Update 2011
Katsuhiro Ogawa
Symfony2のフォームフレームワーク
Symfony2のフォームフレームワーク
Katsuhiro Ogawa
Contribute to Symfony
Contribute to Symfony
Katsuhiro Ogawa
究極のPHP本完成
究極のPHP本完成
Katsuhiro Ogawa
Symfony updates
Symfony updates
Katsuhiro Ogawa
日本電子卒業生とPHPとsymfony
日本電子卒業生とPHPとsymfony
Katsuhiro Ogawa
sfWebDebugToolbarを拡張してみる
sfWebDebugToolbarを拡張してみる
Katsuhiro Ogawa
symfony 1.2を支えるサブフレームワーク
symfony 1.2を支えるサブフレームワーク
Katsuhiro Ogawa
Doctrineではじめるsymfony1.2開発
Doctrineではじめるsymfony1.2開発
Katsuhiro Ogawa
Mehr von Katsuhiro Ogawa
(11)
オレオレSecurityバンドル作っちゃいました
オレオレSecurityバンドル作っちゃいました
Twigエクステンションの作り方
Twigエクステンションの作り方
Symfony Update 2011
Symfony Update 2011
Symfony2のフォームフレームワーク
Symfony2のフォームフレームワーク
Contribute to Symfony
Contribute to Symfony
究極のPHP本完成
究極のPHP本完成
Symfony updates
Symfony updates
日本電子卒業生とPHPとsymfony
日本電子卒業生とPHPとsymfony
sfWebDebugToolbarを拡張してみる
sfWebDebugToolbarを拡張してみる
symfony 1.2を支えるサブフレームワーク
symfony 1.2を支えるサブフレームワーク
Doctrineではじめるsymfony1.2開発
Doctrineではじめるsymfony1.2開発
Kürzlich hochgeladen
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Kürzlich hochgeladen
(9)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
20120327 phpstudy58-phake
1.
Phakeで簡単 モックオブジェクト作成
Katsuhiro OGAWA @fivestr 2012.03.27 - PHP勉強会@東京 #58
2.
2 About Me 小川 雄大
- OGAWA Katsuhiro @fivestr 株式会社クロコス 会社では高橋って呼ばれてます パーフェクトPHP書きました 5月にもPHPの本出すみたいです (色々未定) OOP、MVC、DDD
3.
3
Agenda スタブとモック Phakeとは Phake API Phakeのインストール
4.
4 テストが遅い? DBやIO、Web APIなどへのアクセスを伴う処理のテス トってどうしてますか? DBアクセスしてたらテストが遅くなったりするし、Web APIだとネットワークにつながってないとテストできない ですよね そんなときはスタブの出番です
5.
5 スタブとは 前述のような外部の何かへのアクセスの代わりに定数を 返すようにしたものがスタブ stub out
- もみ消す 従来: return $webservice->api($id); スタブ: return [‘id’ => ‘1’, ‘name’ => ‘takahashi’]; 定数に置き換える
6.
6 サンプル Facebookクラスは Facebookが提供する PHP SDK。 api()メソッドでAPIへ アクセス Clientクラスは Facebookオブジェク トを使ってデータアク セス
7.
7 スタブで差し替え Facebookクラスの api()メソッドを上書き して定数を返すように すれば、Web APIへの アクセスをなくせる 上位モジュール 下位モジュール
8.
8 スタブの活用 スタブを使うと、DBやWeb APIといった、外部の何かへ の依存を切り離すことが可能 外部の何かへのアクセスができない状態でも、アクセス 処理をスタブに置き換えることで上位モジュールのテス トが可能
9.
9 モックオブジェクトとは モックオブジェクトはスタブの一種 スタブが何らかの動作の代用品でしかないのに対して、 モックオブジェクトは上位モジュールが下位モジュール を正しく使用しているかをテストするためのもの
10.
10 モックオブジェクトの活用 DBに保存するような戻り値を伴わないメソッドをスタブ 化したいときは、戻り値が何であるかではなく、メソッ ド自体が呼び出されていることを確認する
11.
11 モックオブジェクトの作り方 単なるスタブと違って、モックオブジェクトはメソッド が呼び出されたことをテストしなければならない モックオブジェクトフレームワークを使ってモックオブ ジェクトを作成するのが一般的 代表的なものがPHPUnit標準のPHPUnit_MockObject 今回紹介するPhakeもフレームワークの1つ
12.
12 Phake 直感的に使えるモックオブジェクトフレームワーク JavaのMockitoがベース PHPUnitにも対応
13.
13 ;
PHPUnit_MockObject
14.
14 ;
Phake
15.
15 Phake Phake::mock モックオブジェクトの作成 Phake::when
スタブメソッドの作成 Phake::verify メソッドが正しく呼び出されたか
16.
16 Phake::mock Phake::mock( $classname
[, $arg1[, $... ]] ) 指定したクラス名を元にモックオブジェクトを作成 第2引数以降がコンストラクタの引数
17.
17 Phake::when Phake::when( $mock
) ->スタブ化したいメソッド(期待する引数) ->呼び出されたらどうなるか() スタブ化したいメソッドと引数をそのまま記述 Phake::when($mock)->foo(Phake::anyParameters()) foo()メソッドが引数問わず呼び出される
18.
18 Phake::when - Answers
thenReturn( $value ) $value を返す thenThrow( $exception ) $exception をスロー thenCallParent() parent呼び出し
19.
19 Phake::verify Phake::verify( $mock
[, $mode ] ) ->検証するメソッド(期待する引数) Phake::verify($mock, Phake::times($n))->foo() foo()メソッドが$n回呼び出されたことを検証 Phake::verifyNoIntaraction($mock) $mockオブジェクトのスタブメソッドが何も呼び出さ れなかったことを検証
20.
20 Partial Mocks 通常
Phake::mock() でモックオブジェクトを作成する と、すべてのメソッドがスタブ化される 一部のメソッドのみスタブ化したい場合はパーシャル モックとして作成する パーシャルモックオブジェクトは基本的にはメソッドが そのまま呼び出されるが、Phake::when()で部分的にスタ ブメソッドに置き換えることが可能
21.
21
22.
22
23.
23 Partial Mocks パーシャルモックが必要になるようであれば、部分的設
計を見直すいい機会かも パーシャルモックでスタブ化した部分を別のクラスとし て抽出して、モックオブジェクトで置き換える方がたぶ ん素直でわかりやすいと思います
24.
24 Installation pear config-set
auto_discover 1 pear install pear.digitalsandwich.com/phake include_pathを設定してPhake.phpを読み込むだけ
25.
25 まとめ Phakeを使うと直感的にモックオブジェクトを作れる 思考の流れに沿ってスムーズにモックオブジェクトが 作れるためテストが
る PHPUnitのMockObjectで十分なら無理に使わなくていい んじゃないですかね……
26.
26 Links http://phake.digitalsandwich.com/ https://github.com/mlively/Phake
http://fivestar.hatenablog.com/ ご清聴ありがとうございました
Jetzt herunterladen