2024年12月22日(日)、GMOインターネットグループは国内最大級のPHPイベント「PHPカンファレンス2024」にスペシャルスポンサーとして参加しました。
スポンサーセッションでは、GMOインターネットグループ株式会社 デベロッパーエキスパートである成瀬允宣さんが登壇。前半はプログラミングの実践から得られる教訓、後半はソフトウェアアーキテクチャ選定における実践的なアプローチについて、ときおり冗談を交えながらも実践的な知見を語りました。
また、ブースではAI画像生成サービス「ConoHa AI Canvas」を使ったワークショップを開催。AI技術を駆使し、PHPのマスコット「ElePHPant」に並ぶキャラクターを生み出せるのか?といった主旨でプロダクトを体験いただきました。
このレポートでは、成瀬さんのセッション内容とブースの盛り上がりの様子を詳しくお届けします!
目次
スポンサーセッション:PHPから学ぶ、ベストプラクティス
成瀬さんによるスポンサーセッション前半のテーマは「PHPで学ぶプログラミングの教訓」。具体的なコード例を交えつつ、プログラミングにおける教訓が3つの視点から紹介されました。
コードの教訓(The Code)
プログラミングにおいて、良いコードを書くための基本的な教訓を意識することは非常に重要です。このパートでは、成瀬さんが自身の経験を基にした「コードの教訓」を紹介し、それらがなぜ重要であるか、またどのように実践すべきかについて、具体例を交えて解説しました。
The Code
- 再代入を避ける
- システムハンガリアン
- ド・モルガンの法則
- デッドコードを葬れ
- DRY(Don’t repeat yourself:同じことを繰り返さない)
- OAOO(Once and only once:同じコードを二度と書かない)
「再代入を避ける」「DRY(Don’t Repeat Yourself)」といった基本的な原則から、「デッドコードを葬れ」「システムハンガリアン」といった実務的なテクニックまで、成瀬さんの現場での視点から様々な教訓が飛び出します。
特に「DRY」や「OAOO(Once and Only Once)」については、コードの重複を排除することで保守性を高め、将来的な問題を未然に防ぐ重要性を強調。重複したコードは放置すれば分岐し、統合が困難になるため、気づいた瞬間に対応することが肝要だと述べました。
これらの教訓は一つひとつはシンプルで、場合によっては地味に見えるものもあるかもしれません。しかし、それぞれがプログラミングの品質向上に寄与し、保守性を高めるためには欠かせない要素です。開発チームの規模やスキルレベルに関係なく、どのような状況でも応用可能な原則として、今一度意識したい教訓が得られました。
設計の教訓(The Design)
ソフトウェア開発において、良い設計は長期的なプロジェクトの成功を支える基盤となります。このパートでは、成瀬さんが「設計の教訓」として提案した考え方を通じて、設計の重要性や実践的なアプローチについて解説しました。
The Design
- 入出力処理を分けること
- 相互参照はやめとこう
- Tell,Don’t ask:求めるな、命じよ
- KISS(Keep it simple,stupid:誰でもわかるくらいシンプルにしよう)
- デフォルト安全
- 警鐘よりコンポジションを好む
- 単一責務の原則
- 開放閉鎖原則
- 小さく試す
- Single Source of Truth:情報源を一元化する
「Tell, Don’t Ask」「KISS」といった設計の基本原則から、「開放閉鎖原則」「Single Source of Truth」といった実践的な手法まで、成瀬さんの視点から設計における様々な教訓が共有されました。
特に「Tell, Don’t Ask」では、オブジェクトの内部状態に依存しない設計の重要性を強調。「KISS」では、シンプルさが必ずしも容易さではないことを示し、複雑さを排除した堅牢な設計の大切さが語られました。また、「開放閉鎖原則」や「Single Source of Truth」といった原則は、拡張性や整合性を高める設計方法として、多くの場面で役立つ知見として紹介されました。
一見すると基礎的で地味に感じられる教訓もありますが、いずれも設計の質を向上させるために欠かせない要素です。プロジェクトの規模や開発者のスキルレベルにかかわらず適用できる普遍的な原則として、設計段階での指針にできる考え方と言えるでしょう。
プログラマーの心構え(The Spirit)
ソフトウェア開発では、技術だけでなく、開発者の姿勢や心構えもプロジェクトの成功に大きな影響を与えます。このパートでは、成瀬さんが「プログラマーの心構え」として共有した、実務に役立つ哲学やアプローチを紹介しました。
- 読めないコードはない
- 予測するな、計測せよ
- 驚き最小の法則
- 千里の道も一歩から
- 統一感なぞ〇〇喰らえ
- 書く努力をせよ
- めんどくさいものは使われない
- ボーイスカウト原則
- ルールではなくレールを敷け
「読めないコードはない」「驚き最小の法則」といった開発者の心構えから、「めんどくさいものは使われない」「ボーイスカウト原則」といった実務的な教訓まで、成瀬さんの視点からプログラミングにおける心の持ちようが語られました。
特に「読めないコードはない」では、どんなに複雑なコードでも読み解く覚悟が重要であることを強調。「驚き最小の法則」では、同僚のプログラマーを驚かせない直感的なコードの重要性が語られました。また「めんどくさいものは使われない」では、デフォルト値やシンプルな構造を取り入れることで、他の開発者が手軽に使える設計を心掛ける必要性が示されました。
さらに「ボーイスカウト原則」「ルールではなくレールを敷け」といった教訓では、コードやプロジェクト全体をより良い状態に保ちつつ、開発者が自然と望ましい方向へ進む環境を整える大切さが強調されました。
一見すると感覚的なものに思えるかもしれない教訓ですが、いずれもチーム開発において欠かせない心構えです。日々の開発での思考や行動を少しずつ見直すことで、より良いコードとより良いチームが生まれるでしょう。
最適なバックエンドアーキテクチャを選ぶために
成瀬さんのセッション後半「PHPで学ぶバックエンドソフトウェアアーキテクチャ選定の勘所」では、さまざまなアーキテクチャの種類と、それらの選定方法について詳しく解説されました。
一般的なバックエンドソフトウェアアーキテクチャには、次の3つの種類があるといいます。
- ヘキサゴナルアーキテクチャ
- レイヤードアーキテクチャ
- クリーンアーキテクチャ
ヘキサゴナルアーキテクチャは、別名「ポートアンドアダプター」とも呼ばれます。システムの中心にある「アプリケーション」(つまりビジネスロジック)をコアとして、その周辺を交換可能なコンポーネントで構成する設計手法です。
ソフトウェア設計で広く知られるレイヤードアーキテクチャは、システムをレイヤー(層)に分けることで責務を明確化し、インフラ層を下層に位置付けます。
クリーンアーキテクチャは、ソフトウェア開発においてドメイン層を中心に据え、各コンポーネントを独立させることで柔軟性と保守性を高める設計手法です。
これら3つのアーキテクチャ手法は目的こそ異なりますが、「目指す方向性は一致している」と成瀬さんは指摘します。
では、アーキテクチャ選定はどうすべきか。成瀬さんは「チームの状況に応じて選ぶべき」と結論づけます。経験豊富なチームにはヘキサゴナルアーキテクチャのような柔軟な設計が適し、不慣れなチームにはクリーンアーキテクチャのような明確なルールが役立つと説明しました。また、コード生成ツールを活用することで、誰もがルールに沿った開発ができる具体例も紹介されました。
最終的に、アーキテクチャ選定のカギは「チームの善性に頼る」ことにあると成瀬さんは強調します。経験豊富なチームであれば、コンセプトを理解し、自然と適切なコードを書くことが期待できるためです。この考え方は、前半のセッションで触れられた「人の善性を信じるべき」というテーマとも重なり、成瀬さんの開発哲学を体現しています。
ブース出展
ConoHa AI Canvas 体験
会場では、GMOインターネットグループとして「ConoHa AI Canvas」の体験ブースを設け、多くの参加者にご来場いただきました。
ConoHa AI Canvasは、AI技術を活用して簡単に高品質な画像を生成できるサービスです。Stability AI社の画像生成AI「Stable Diffusion XL」を採用しており、短いプロンプト(キーワードや文章)を入力するだけ。コマンド操作なしでかんたんにStable Diffusionを利用でき、高画質な画像を手軽に生成することができます。
テーマは、「PHPの公式キャラクター『ElePHPant』に並ぶキャラクターをつくろう」です。
来場者が自由にプロンプトを入力し、オリジナルのキャラクターをAI生成するという内容です。
生成されたキャラクターはブース裏で印刷され、即時特設パネルに貼り付けられました。完成したパネルは、参加者たちの個性あふれるキャラクターでカラフルに彩られ、会場の注目を集めていました!
ワークショップに参加した方には、特製のくじ引きにも挑戦していただきました。景品にはConoHa応援団長でもある「美雲このは」のオリジナルグッズをはじめ、シークレット賞品として特製マフラータオルもご用意。皆さん、ご希望の景品を手にできたでしょうか…?
今回のイベントで多くの方に体験していただいたように、ConoHa AI Canvasは簡単操作で本格的な画像を生成できる画期的なツールです。まだ試したことがない方は、ぜひ公式ページをチェックしてみてくださいね!
さいごに
今年も多くの方にセッション聴講いただき、ブースにも足を運んでいただきました。ありがとうございました。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(457)
-
イベント(164)
-
カルチャー(36)
-
デザイン(19)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudflare
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- Desiner
- DeveloperExpert
- DevSecOpsThon
- DNS
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOソリューションパートナー
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- perplexity
- PHP
- PHPcon
- PHPerKaigi
- PHPカンファレンス
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- アドベントカレンダー
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- マルチプレイ
- ミドルウェア
- モバイル
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- 京大ミートアップ
- 協賛レポート
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP