Because We Love Happy Coding

フリーライターがPHPとかJavaとか勉強してます

第121回PHP勉強会に行ってきた! #phpstudy

PHP勉強会に行って、発表までしてきたのでそのレポートなど。

whisper.74th.net

参加者の自己紹介から。Laravel、Zendを使っている人がけっこう多い? 今回の発表がLaravelだからかな。

laravelのいいところ

www.slideshare.net

@fagai さんの発表。

  • サービスコンテナ(旧IoCコンテナ)が超強力
  • ソースがクリーン(無駄なソースが少ない)
  • 基盤にSymfony Componentを利用
  • 拡張性が高い
  • テストが書きやすい

サービスコンテナ

DIコンテナとほぼ同義。 基本的にクラスをnewしない限りはサービスコンテナを必ず通る。 メソッドインジェクション機能(これが非常に強力)。

DI(Dependency Injection)とは?

  • DIしていないプログラムは例えるなら「ソフト依存のゲーム機(単機能のテトリス端末など)」
  • DIは「ソフトに依存しないゲーム機(ファミコンなど)+カセット」

インターフェースさえ合えばなんでも挿せる。挿す=インジェクション

自分なりに調べてみたDI。

https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5ja.wikipedia.org

qiita.com

qiita.com

qiita.com

qiita.com

http://blog.a-way-out.net/blog/2015/08/31/your-dependency-injection-is-wrong-as-I-expected/blog.a-way-out.net

ちょっと難しい……が、まぁなんとなくわかるような。

メソッドインジェクション

サービスコンテナがインスタンスを生成する際に、コンストラクタや呼び出すメソッドのタイプヒンティング(Reflection)をもとにして再帰的に引数を解決する

微妙なところ

「速度よりも書きやすさ、テストしやすさ重視」の志向らしい。

質疑応答

テストが書きやすい。HTTPリクエストのモックとかはある?

PHPStormでクラスを作る時にnewするといい感じにやってくれる。Cakeではアノテーションをつけることになる。

Laravelではメソッドインジェクションとコンストラクタインジェクションがある。

レンタルサーバー上でComposer installはきついが、手元でやってから上げればいい

若手に教える時にDIとかサービスプロバイダの考え方が理解してもらいにくい。おっさんはSPRINGなどで苦労した経験があるから分かるのだが、その経験がない人にどうやって概念を教えたらいいのか。
→最初まったくわからなかった。サービスコンテナも。IoCコンテナの頃からわからない。最終的にはそのDIやってるっぽいところのソース、LaravelだとApplication.php、Container.phpあたりを追いかけた。makeやbindをおいかけて一行ずつ追っていってなんとなく理解し、繰り返し。

Laravelの名前の由来は『ナルニア王国』のパラベルから、らしい。

エンジニアの価値をリセットするブロックチェーン

@nakamurakaikan

ブロックチェーン=信用を組み立てるシステム

Uberとタクシー、AirBnbとホテル。貨幣とBitcoin 地球規模OS

量子コンピュータが暗号を解いてしまう危険性はある。

  • 実体経済÷発行数=貨幣の価値。
  • 期待÷演算処理=仮想通貨の価値

採掘

2140年に採掘が終わる。前倒しで終わる可能性もある。採掘が終わるとどうなる? 金のような状態。採掘が終わったもの。

設計の失敗もある。通貨はだんだん価値が減るのが適性。しかしビットコインは上限をきっちり設定してしまったために、次第に価値が高まる。その結果、通貨として流通せず保有されてしまう。

CakePHPCMS baserCMS

docs.google.com

Cakeのコア、Baserのコア、自分のコア、3つに分けて開発できる。
テーマ、プラグインもある。

Webサービスを作ると、Cakeなのでカスタマイズが容易 管理画面が使える。

実際に作ったサービス

  • モーニングコールセンター
  • PRバズーカ:プレスリリース配信サービス

プレスリリースと同時にアドワーズも配信。AI×高火力プレスリリース。 送り先をAIが選別する。 アクセスランキングで広告予算ゲットできるシステム。予算を1位が総取りできる。予算は右のアフィリエイト収入から。

質疑応答

WordPressはブログ特化。Baserは固定ページ管理がメイン。

英語の質問サイトStackOverflowに質問したら15分でベストアンサーが来た話。

自分の発表

1drv.ms

OneDriveのPowerPointシェアする機能初めて使って見たけど、はてなブログからプレビューされなくて使いづらいな……。やっぱスライドシェアか。

検索ステルスとは

資料の中の自己紹介で触れている「検索ステルス」というのはちょっとしたジョーク。
何らかの不具合だと思うが、私のTwitterアカウントはハッシュタグ付けて投稿してもフォロー外からだとハッシュタグ検索にヒットしない。謎の「検索八分」状態になってしまっている。この現象をなんとか前向きに捉えようとした結果、「検索ステルス」という単語が生まれた。どんなに書き込んでも検索されないんだぞ! スゲーだろ!