PHPカンファレンス登壇風景

PHP Conference Japan 2019に参加しました!(弁護士ドットコム株式会社)

2019/12/1に開催されたPHP Conference Japan 2019に参加しました!

弁護士ドットコム株式会社は、PHPカンファレンスのプラチナスポンサーです。当日はブースを出しており、たくさんの方にお越し頂きました!

弁護士ドットコムのブースの様子

以下では、私が参加したセッションについてレポートを書いていきたいと思います。

MVCにおける「モデル」とはなにか - 天重誠二

まず、「MVCにおける「モデル」とはなにか」というセッションに参加しました。登壇者は弊社テックリードの天重(@tenjuu99)です。

この講演は、トリグヴェ・リーンスカウク博士が考案したMVCの考え方を通して、コンピュータと人間の関わり方を探求するセッションです。講演内容は「ドメインモデル」「メンタルモデル」「パーソナルコンピュータ」「MVCとは何か」という4つのセクションに分かれています。「デザイン」「ユーザー」「社会」「個人」「分散情報システム」など根底にあるテーマが非常に多岐にわたるので、要点のみ紹介します。

ドメインモデルについて天重は、メイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係という杉本氏のスライドを引用し、ドメインとドメインモデルを区別します。ドメインをビジネス、つまり目的であり、ドメインモデルをドメインに対する情報処理の手段であると考えます。ドメインモデルは情報処理の手段なので、ITシステムに限った話ではなく、飲食店であれば複写式伝票や自動券売機などがあることを例に挙げます。

注文の複写式伝票をデータ化した図

また、メンタルモデルという概念はドナルド・ノーマン氏の「誰のためのデザイン?--認知科学者のデザイン原論」という本をきっかけに広まったことを紹介します。メンタルモデルは「頭の中にある、ああなったらこうなるという行動のイメージを表現したもの」であり、さらにノーマンの言葉を引用し、ソフトウェアデザインにとっては「人が作業そのものに没頭し、コンピュータを使っているという意識がなくなるソフトウェア」が重要と語ります。

次に「パーソナルコンピュータ」について、ダイナブックを引き合いに出します。ダイナブックとは、アラン・ケイが考案した個人向け(パーソナル)コンピュータです。ここでは、アラン・ケイが、ダイナブックを使う人たちを想定した架空のエピソードが紹介されます。

「9歳のジミーとベスがダイナブックの宇宙船ゲームで遊んでいる。ジミーはゲームに負け惜しみのようにに、『宇宙船の動きが太陽の重力を無視して不正確なんだ』とベスに話す。二人は図書館で宇宙について調べた後、プログラムを修正して再び宇宙船ゲームを始める」(「A Personal Computer for Children of All Ages」より抜粋・筆者による要約。日本語訳はこちら。)

そして、パーソナルコンピュータを使って、ユーザーが自分でシステムを書き換えることが重要だと話します。

ドメインモデル、メンタルモデル、パーソナルコンピュータのまとめ

このセッションを通して、天重はシステムと個人の関わり方を語りました。ドメインモデルについて、ドメインと情報処理手段であるドメインモデルの関係を語り、メンタルモデルについて、ユーザーが作業に集中することができるためには、コンピュータを操作している意識がなくなるシステムが理想であり、そのためにはユーザーイリュージョンが必要だと語りました。

また、パーソナルコンピュータについて、「理想的なMVCのソリューションは、ユーザーがドメインの情報を直接見て操作するという、ユーザーイリュージョンをサポートすること」というリーンスカウク博士の言葉を引用して、人間が作業に使用するシステムは、限られたソフトウェア開発者のみではなく、ユーザー自身によって容易に改変可能であることが理想であると語りました。

リーンスカウク氏が人権宣言にシステムとの関係で人が幸福を追求することを追加する提案

なぜユーザーがシステムを改変できることが重要なのか。それは、社会(会社)が個人(社員・作業者)に業務を行うためのシステムを一方的に押し付けることになると、人間がコンピュータに行動を規定されてしまい、「仕事の楽しみ」が奪われるからです。

私は、ここでのシステムを「業務マニュアル」と読み替えてもいいと思います。マニュアルから逸脱した行動を一切許されない場合、仕事を楽しむことは難しいでしょう。

この講演は、テーマが多岐にわたり、ソフトウェアに対して非常に示唆に富むセッションでした。

「弁護士ドットコム」を作り続ける開発組織について

弊社テックリード狩野による発表です。

弁護士ドットコムという会社・事業から話は始まります。弁護士ドットコムというプロダクトは10年以上PHPで開発されており、PHPファイル数は約5000、コードの行数は約55万という大きなシステムです。

組織について、弊社では組織体制が機能別から事業部制になり、さらに現在ではマトリクス型の組織に発展したことに触れ、その時々で発生する問題に対して組織体制を柔軟に変更してきたことを説明しています。技術についても、サービスを成長させることを軸に、基盤部分は堅実に、新規案件ではチャレンジした技術を採用していると述べます。例えば、新規案件でPHPフレームワークであるBEAR.Sundayを使っているシステムもあります。また、技術レベル向上のため、社外向け勉強会を開催したり、書籍購入制度を整えていることを語りました。

また、現在はマネージドサービスの活用も進めていることにも触れ、SREチームを中心にインフラの民主化に向けて動いており、アプリケーションエンジニアでもインフラの設定を行えるようにして、ボトルネックの解消を目指していると述べました。

Tech Focus Dayの説明

さらに、弊社では毎週金曜日はTech Focus Dayという名前で20%ルールを運用しています。これは一般的な20%ルールとは少し違い、エンジニアがミッションを持ったチームとなって改善活動を行っていると語りました。この日はエンジニアは技術的負債の返済、サイトの価値向上に取り組む日としていることを説明しました。

最後に社員のマインドセットについて語っています。それは、ビジネスを行うにあたり「覇道より王道」を掲げ、一人勝ちではなくwin-winになるようなことを重視しているというものでした。また、弁護士ドットコムでは何より人を大切にしているという話で締められました。

講演後には、参加者から「Tech Focus Dayでの具体的な成果を教えてください」という質問がありました。これには「サイトの表示速度の改善をすることができました。これによりSEOも良くなり、エンジニア以外の方ともメリットを共有することができました」と答えていました。また、狩野曰く、「サイトの表示速度改善は、エンジニアの視点から負債解消の必要性を発信した例であり、単に負債を解消するだけではなく、サービスとしてユーザーに価値を提供できた好例です」とのことでした。

PHPUnit: Past, Present and Future - Sebastian Bergmann

当日の資料はこちらから見ることができます

このセッションでは、Sebastian氏がプログラマになろうと思ったきっかけや、PHPのバージョンアップとともに歩んできたPHPUnitの歴史が語られました。

PHPUnitの最初のレポジトリには6ファイルしかなく、開発を一歩ずつ進めてきたことや、Xdebugの作者の方とたまたま同じ職場になり、しかもご近所同士だったので、互いのコードをレビューし合っていたというエピソードが披露されました。

その他、今までPHPUnitにはロゴはありませんでしたが、PHPUnit8をリリースするとともに、ついにロゴを作成したそうです。

PHPUnitのロゴ

また、「いつPHPUnitを開発しているのですか」という質問に対しては、「開発は週末だけにしていて、普段は旅行をして過ごしています。OSSの作者によくある燃え尽き症候群を避けるためです。PHPUnitのようなOSSは多くのプロダクトに使われるが故に社会的責任を負っており、開発を止めてしまうようなことがあってはならないと考えているからです。自分はOSS開発にはお金という見返りを期待していません」と答えておられました。

REST 6+4の制約  - 郡山昭仁

PHPフレームワークのBEAR.Sunday作者であり、弊社技術アドバイザーの郡山のセッションです。

ロイ・フィールディング氏の論文で提唱されたRESTのアーキテクチャの誤解を説明します。フィールディング氏の論文について、誤解が広まってしまってました。本来REST APIはいいURLや/v1、/v2などAPIのバージョニングとは無関係のものです。REST APIとはハイパーメディアAPIであると説明し、WebとRESTの関係を語ります。

WebとAPIの対比

Webが成功した理由は、「サイト制作の参入障壁が低いこと」「サーバーとクライアントが独立しているため、拡張性があること」「サーバー同士が通信をする分散ハイパーメディアの構成であること」「インターネット上でスケーラビリティがあること」であるとしています。RESTはそのうち、ハイパーメディアであり、拡張性があり、インターネット規模にスケールできることを共通点としていると語ります。

また、RESTは下記に挙げる6つのアーキテクチャ制約と、4つのインターフェイス制約があるとしています。各項目の詳しい説明は動画をご覧ください。

RESTの制約

講演の最後に郡山が「新しい技術は大切だが、ソフトウエアの進化は層を成してきた。過去の遺産を塗り替えたり置き換えたりするのではなく、積み重ねていく技術の継承が重要だ。偉人達が築き上げてきたものを学ぶことは大きな意味あり、未来に向かっていく事でもある」と語っていたことがとても印象的でした。

まとめ

今年のPHPカンファレンスでは、「英語のセッションを増やす」というチャレンジをしたそうです。また、PHPに限らず、様々なテーマのセッションがありました。学びがとても多く、来年もぜひ参加したいと思います!

弁護士ドットコムでは共に働く仲間を募集しています!興味を持たれた方はまず弁護士ドットコム主催の勉強会に遊びに来てください!

この記事が気に入ったらサポートをしてみませんか?