Technote

by sizuhiko

PHPカンファレンス関西2017に参加してRoboについて発表してきました

2017/7/15 に行われたPHPカンファレンス関西2017に参加してきました。

昨年に続いて参加

今年は場所がGRAND FRONT OSAKAという、梅田にできたすげービルのカンファレンス会場になっています。これは豪華! しかもなんか最近どこもホテルが空いてなくて、仕方なく高いホテルへ、こちらもそれなりに豪華….(なんとかならんのか)

今年も上半期はとにかく忙しく、スライドやデモが直前の完成となってしまったため、新幹線の中とホテルでリハーサル。時間はだいぶヤバそう(なんといっても本当は1時間の内容なのだ)だが、どこの説明に時間がかかるかはわかったので、当日の雰囲気からスキップできそうだったら…という気持ちに。今年から使っているプレゼンポインターも不安の1つだ…

夜はスピーカーとスタッフの前夜祭から、コミュニティ前夜祭と合流しての2次会へと流れ、日付が変わった頃ホテルに戻りました。その後、3次会、4次会があったとかないとか…(これ去年のコピペのままですwww)

PHPカンファレンス関西2017

昨年同様3トラック+スポンサーブースで、会場はどこも広かったものの、人気コンテンツに集中するのは仕方がないですね…。それと朝一番の基調講演に参加者が多かったのもびっくりしました(割と東京のカンファレンスとか午後から来る人も多い)。 参加できたセッションは

  • [基調講演] PHPの現場から
  • PHPにおけるDSL
  • Robo を使ったモダンなタスク管理(自分のセッションです)
  • 現代におけるプロダクト開発とPHPを選定するワケ
  • LT

昨年よりPHP成分多めな気がしました(私が見たところだけかもしれないですが…)

印象的だったことを振り返っておきます。

  • 会場がすごい(かっこいい&おしゃれ)
  • いつもより初心者多め?(最初に質問なかったけど、雰囲気で)
  • 若手が多い(昨年もおもったが)
  • @shin1x1 の基調講演と、 @Potato4d のPHPを選定するワケが、現在のPHPを取り巻く環境についてズバリと攻めていて、すごいと思った

イベントの後は懇親会、二次会、三次会の順に巡りホテルに戻りました(去年のコピペで今年も同じw)。

Roboについて発表しました

なんかPHPの話したの久しぶりな気がします。

最近タイトルで釣らないことに決めているのと、裏のセッションが確実に人気セッションと予測できたのですが、やっぱりその通りとなりました…(気持ち的には残念)。

スライド見ても、お題しか書いてないので、見ても伝わらないと思いますので、トーク用のカンペから抜粋して解説します。

まずタスクランナーとは「タスクを定義し実行することをコンピューターに任せる」ということから自動化と強く関係しているので、最初に自動化やDevOpsの話をしました。 「参加者の中で何か1つでも自動化している人?」という問いに3割ぐらいしかいなかったのは、比較的想定の範囲です。なぜかというと、春先に開催した明日の開発カンファレンスのパネルで同じ質問をして、そのぐらいだったので…

今回は何から自動化するといいよ、という話はしませんでした(時間の余裕がない)が、とにかく静的解析だけでもやるといいですよ。Robo使うと楽になると思います。

で、Jenkinsは2.0からパイプラインでフローを書けるようになったので、実際にJenkinsfileでタスクは自動化できます。ただJenkinsfileは1つのタスクしか流せないし、うまくいかないときローカルで再実行してみようと思っても、そうはいきません。そこでCI環境でもローカルでも動かせるタスクランナーの出番があると思っています。

で、これまではどうしてきたか、というと Phing (セッション中ではファイングと言ってしまいましたが、フィングの方が正しいと思うので修正します)ですね。 でもXMLの定義は学習コストが高いし、仕組みも古いのでカスタムタスク作るのもつらいです。OSSで公開されているタスクとか、標準で用意されているタスクの多さは魅力の一つだとは思いますが。

で、現場ではPHP以外の言語で書かれたツールを使っているケースもあるんじゃないかと思います。特にNode.js系のツールは使われていることが多いかと。 もちろんPHPがバックエンドのAPIだけ(HTMLレンダリングしない)で、フロントエンド全部Node.jsみたいなケースはリポジトリも分かれているし、必要ないかもしれないです(後述のComposer Scriptだけで良い)。ただまだまだサーバサイドレンダリングのWebシステムはたくさんあります。そこで、そういったツールも同じ言語でやれたら良いよね、ということで、ComposerやRoboの出番だと思っています。

Composerは、もうデファクトと言ってもいいPHPのツールで、依存関係を管理するツールです。以下の代表的な特徴があります。

  • コンポーネントをインストールする
  • コンポーネントをソースコードから利用する:オートロード
  • コンポーネントのバイナリーを実行する:スクリプト

Composerのスクリプトは、もちろんカスタムスクリプトをPHPクラスで定義できるのですが、本来は after install などのフックように考えられているので、タスクランナーとしてはちょっと足りません。

そこで、Roboと組み合わせてみましょうということです。

ここからはデモになります。リポジトリの README に詳しい説明が書いてあるので、そちらを見ながらコードを動かしてみてください。

PHPカンファレンス関西2017デモプログラム

裏話

セッションがちょうど30分かかって、質疑応答の時間作れなかったので、もくもくスペースに居るので、質問ある人は聞きに来てください、という Ask for Speaker にしてみたのですが、誰も来ませんでした(実は寂しかった)。 たまたまそのときLT(当日募集)と懇親会LTの内容が書き出されていて、懇親会LTが1枠空いている状況になってました(本編キャンセルで懇親会から1枠移動したため)。

で、それとは関係なく昨年の思い出と、以下の進捗を @tanakahisateru さんに報告していたら、懇親会LTやったら?みたいな話になり、やりました!

スライドは勢いで5分ぐらいで作ったものなので、まぁ良いとして、実際に作ったものが以下になります。

https://github.com/polyester-cms/polyester

これはまだプロトタイプ版で、できも良くないのですが、今後ちゃんとした仕組みでやっていきたいと思っています。

大阪を堪能

最終日は恒例の ねぎ焼き やまもと へ。 今年も東京のPHPerを3人引き連れ、梅田エスト店にやってきました。 そのあと @hamaco とビール飲みに行って、聖地タイガースショップで買い物をして帰京しました。

さいごに

今年もPHPカンファレンス関西楽しかったし、たくさんの刺激をもらいました。ありがとうございました。