PHPカンファレンス2019 開催

PHPカンファレンス2019参加レポート[中編]

この記事を読むのに必要な時間:およそ 5.5 分

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

弁護士ドットコム Tech Leadの狩野秀明さんは,開発組織が最も大切にしている「人」について,そして組織の変遷と文化について話しました発表資料⁠。

狩野さん(撮影:萩原崇之)

画像

課題に合わせて柔軟に変化

弁護士ドットコムでは機能別組織,事業部別組織,マトリクス組織と,それぞれの組織体制をとるなかで発生した課題の解決を目的として,柔軟に組織体制を変化させていることを紹介しました。

機能別組織では,エンジニアの仕様理解が十分にできなかったことで,コードが複雑になってしまうという課題がありました。その課題を解決するために事業部別組織に移行しましたが,事業部ごとのエンジニア同士の会話が減ってしまい,知識が事業部内に閉じてしまうという課題が発生しました。現在は機能別組織,事業部別組織それぞれの利点を盛り込むべく,マトリクス組織を採用しています。現状の組織体制も課題が出てきた場合にその解決に向けて組織体制を変化させる可能性があるとのことです。

すべては「サービスの成長」のため

また,⁠専門家をもっと身近に」という理念のもと作りたい機能がたくさんあるなかで,限られたリソースを効率的に投入すべく,チームとしてアジャイルな開発に挑戦しているとのこと。サービスの成長のために必要なことは,職種関係なく提案してチームとして解決を試みているそうです。事業のコアとなる機能は堅実な作りで安定したサービス提供に注力する一方,新規事業やリスクの小さい案件では,Bear.Sundayを利用するなど技術的なチャレンジもしていると紹介しました。さらに,自社運用をしていたインフラをマネージドサービスに置き換えることで,インフラチームの負荷を減らして,よりサービスに注力できるような技術を選定していると語っていました。

カイゼンを支える文化

社外のエンジニアとのコラボレーションを目的とした,タピオカLTやRESTful WEB APIs読書会など勉強会を主催したり,チームの成長と理解を促進するための必読書の設定,書籍購入の補助にも積極的であることも取り上げました。特に,毎週金曜日をTech Focus Dayとしてミッションごとにチームを組織して,技術的負債の返済やサイトのスピード改善などユーザーのためのカイゼン活動にも注力しているそうです。会場からもこうした取り組みについて,より詳細な内容を知るために質問が投げかけられていました。

狩野さんは「このような組織体制,文化の中で共通のマインドセットを持ち,職種にかかわらずチームメンバーにリスペクトを持ってコミュニケーションをとることができる『人』を大切にしている」と締めくくりました。

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

弁護士ドットコム エンジニアの天重誠二さんは,MVCモデルとは何かについて,ドメインモデル,メンタルモデルそして設計について話しました発表資料⁠。

天重さん(撮影:杉本展将)

画像

天重さんは業務での経験やDCIアーキテクチャとの出会いから,MVCはフレームワークとして表現されるソリューションというより,一般的な問題であるとの思いを抱くようになったと言います。

ドメインモデルとは

今回の発表では,飲食店での注文処理フローと複写式伝票を例に,ドメインモデルを説明しました。ここでいうドメインとは問題領域であり,ビジネスの目的「お客さんの食べたいものを提供する。利益をあげる」であるとします。またドメインモデルとは解決領域であり,ビジネスを駆動する手段「調理する。注文を受ける。伝票によって厨房とホールが情報を伝達する」であるとします。こうした視点からドメインモデルとは,⁠ドメイン(目的)を情報処理システム(手段)によってモデル化したもの」であると語ります。

しかし,このように形成されたモデルは「いったい誰のためのモデルなのか」という疑問が生まれると語ります。

メンタルモデルとは

次にメンタルモデルを説明するにあたり,左右という観念が上下のスイッチ操作に対応づけられているスーパーカブのウィンカーの例を挙げました。⁠誰のためのデザイン?』⁠D.A.ノーマン⁠⁠ では,道具から適切なメンタルモデルを構成するには「可視性」⁠よい概念モデル」⁠よい対応づけ」⁠フィードバック」が重要であるとします。さらにアラン・ケイの論文『コンピュータソフトウェア』から,コンピュータの操作は粘土と違ってあまりに間接的でメンタルモデルを構築しづらいことを示します。また,D.A.ノーマンとアラン・ケイを対比させながらそうしたギャップを埋めるための「ユーザーイリュージョン」の重要性を説明しました。

MVCとは

そして,既存のコンピュータプログラムにあるようなユーザーとシステムの間にあるギャップに注目しました。こうしたギャップは,ユーザーのメンタルモデルとコンピュータが表現しているドメインモデルの間に差があることから発生するものだと指摘します。MVCモデルにおいては「Controller」「View」がそうしたギャップを埋めるための「ツール」であり,ユーザーのメンタルモデルを反映したコンピュータモデルとその背後にドメインモデルが存在すると説明しました。また,人間が仕事を楽しむためには,システムによって業務を強制されず,システムをコントロールしているという実感をもつことが必要であることも強調しました。

最後に,天重さんは「プログラマも『そのデザインは,いったい誰に力を与えるものなのか』を問うべきである」と結びました。

著者プロフィール

川原英明(かわはらひであき)

放浪のITエンジニアとして人生は常に勉強だ!ということでPHPもやり続けていたが,Perlも含めて最近あまり使っていない。最近はPythonやRubyをやっている。2020年からは新しい職場で頑張っていく。

Twitter:@sapi_kawahara


花井宏行(はないひろゆき)

スタディプラス株式会社所属。日本Symfonyユーザー会メンバー。PHPカンファレンスには2015年から参加。

Twitter:hanahiro_aze


田添春樹(たぞえはるき)

広島工業大学所属。広島でLaravel.hiroshimaという勉強会を主催。普段はLaravelを使い,個人開発を行なっている。ユーザーの役に立てるサービスを作りたいと思い日々頑張っている。

Twitter:@jdkfx