こんにちは。サイオステクノロジー技術部の武井です。PHPフレームワークBEAR.SundayのMeetup(2018年4月28日開催)に参加してきましたので、そのレポートを記載させて頂きたいと思います。その前に簡単にBEAR.Sundayのご紹介を超簡単にさせて頂きます。詳細は以前記載したこちらの記事や、ソフトウェアデザイン2018年3月号をご覧頂ければと思います。
BEAR.Sundayとは?
BEAR.Sundayとは、Restful APIの開発を容易にするフレームワークです。
以下の特徴があります。
リソース指向
先程ご説明したRestful API4原則を満たす考え方です。
DI
JavaアプリケーションフレームワークSpringやSeasarでも採用されている技法で、インスタンスを作成する(つまりnewする)処理をバラバラに記述するのではなく、一か所に集めて、プログラム同士の結びつきを弱くしましょうという考え方です。
AOP
メソッドの前と後で行われる定型的な処理(認証処理やロギングなど)を自動化しましょうという考え方です。
非常に多機能で、ここでは全てを紹介しきれないのですが、一つ目のリソース指向の部分だけ簡単にまとめてみました。
BEAR.Sundayは大きく分けて、「App層」「Page層」の二つに分かれています。「App層」はいろいろなところから共通で利用するAPIのようなイメージです。「Page層」は表現の形式をつかさどる部分でApp層で作成したAPIを利用し、JSON形式で表現したり、HTML形式で表現したりします。
なので、アプリケーションが動作する順番は以下のようになります。ブラウザでユーザーがアクセスしたことを前提とします。
- ユーザーはブラウザでPHPのプログラムにアクセスする。
- HTTPのメソッドに応じたPage層のメソッドが呼ばれる。(※参照)
- Page層からApp層のメソッドを呼ぶ。(HTTPのgetメソッドでリクエストがあった場合は、App層のクラスのonGetメソッドを呼ぶ)
- App層のメソッドからJSONのレスポンスが返る。
- Page層のメソッドはApp層から返されたJSONのレスポンスを受け取って、HTMLに整形してHTTPレスポンスとして返す。
※ Page層、App層ともに4つのメソッドがあります。それぞれ「onGet「onPost」「onPut」「onDelete」です。これはHTTPメソッドに対応していて「Get「Post」「Put」「Delete」のときにそれぞれのメソッドが呼ばれます。
BEAR.Sunday Meetsupについて
少々、前置きが長くなりましたが、このBEAR.SundayのMeetsup(6回目)に参加させて頂きました。参加人数は20数名、小規模な会場でフリードリンクという開放的な雰囲気の中で行われました。主旨としましては、普段BEAR.Sundayを利用されている方が、その事例を紹介しながら、意見を出し合い、アイデアを交換し合うというものです。Meetsup内では内容盛りだくさんだったのですが、特に私が感銘を受けたものについて、以下に記載します。
郡山昭仁さんのセッション
BEAR.Sundayの開発者である郡山昭仁さんのセッションから始まりました。郡山さんは初めてMeetsupに参加した私にも気さくに話しかけて頂いたり、気を使って頂いたりして、本当に助かりました。
私の話はさておき、そのセッションの内容ですが、技術的なところはもちろん、私の雲の上を行くような方のお話でしたので、非常に感銘を受けながら聞いていたのですが、なによりも技術に対する強い情熱に心を打たれてしまいました。
セッションの中でOSI基本参照モデルを例に上げて、エンジニアとしてのあるべきモデルを以下のように説明されていました。
OSI基本参照モデルは以下ですが・・・
郡山さんの言われていた、エンジニアとしてのあるべきモデルを以下のように説明されていました。
Health(健康面)の基礎が出来ているのは当然として、その上に積み重なるのがMindset(思考態度)、Idea(創意工夫)、Skill(技術力)、Practice(実践)と話しておられました。特に郡山さんは、Ideaの面を重視されていて、Practiceだけではなく、創意工夫を持って、技術に取り組んだほうがよいとのことでした。確かにここ数年の私の仕事や本ブログの記事を見ても、Practiceばかりで、Ideaがない・・・。もっと自分なりの味を加えたい!!と強く思った一日でした・・・^^;
BEAR.Sundayを実践で利用している方のLT
そんな素敵なIdeaを持った方たちのLTでした。みなさんが自身のIdeaをLTで披露し、そのIdeaに対して活発に意見を交流しあうという、私が今までのセミナーや勉強会などでは経験したことのないような光景が眼前で繰り広げられていました。1つのIdeaに対して、皆が活発に意見交換をし、さらによいIdeaを出し合っていくという形でMeetsupは進んでいきました。きっと、BEAR.Sundayはこのようなプロセスを経て、今のような形に進化をしてきたのだろうなぁと思いました。私はただ、今回は、聞いていただけになってしまいましたが、もっともっとIdeaを出して、積極的にOutputしようと誓いました(`・ω・´)シャキーン
@ZingoooさんのLTされた、Varnishのキャッシュ対象を定義するためにHTTP Responseに埋め込むxkeyヘッダーの生成を、アノテーションで行うというのがすごいと思いました。これも1つの素晴らしいIdeaですよね。
最後に
なんだか、BEAR.Sunday Meetsupに語られた技術的内容云々という話よりも、そこで語られたMindsetや技術に対する情熱等、そういった切り口での内容や、ワタクシ個人的な意気込みの話になってしまいましたこと、ご容赦下さいm(_ _)mそれだけ有意義な時間でしたので、それを本記事をご覧になっている皆さんにも共有頂き、同じように感じてくれる方がいたらいいなぁと言う意味で、一筆したためた次第でございます。