Laravel8からInertia.jsを利用できるようになり、シンプルな設計でLaravelでSPAアプリケーションの構築ができるようになりました。
Laravel + Inertia.js + React.js + Vite + Typescript でアプリケーションを作った話をします。
【トーク対象】
PHPerの皆さんが大好きなLT会、開催していますか?
開催したい気持ちはあるけど実際にやるのは難しい。。という方も多いのではないでしょうか。
私たちは社内LT会を毎月オンラインで開催しています。
4〜5人で運営しており、「2週間前の準備・当日の準備/運営・振り返り」のサイクルで行っています。
このトークでは、毎月開催するための準備・運営でやっていること、実際にやってみて上手くいったこと/いかなかったことを詳しくお話します。
メインの参加者はエンジニアですが、事業部側の人たちも多く参加してくれているので、その様子もお伝えしたいと思います。
オンラインイベントを運営したい方の参考になると嬉しいです。
皆さんが所属してるエンジニア組織の課題はなんでしょうか?
どの組織も何かしらの課題があるのではないかと思います。
弊社ではPHPで開発された複数メディアを運営し、
エンジニアの人数も増加しながら継続的にリリースすることで順調に事業を成長させてきました。
一方で、事業が成長するにつれて「スキル獲得に漠然とした不安がある」や
「他エンジニアと交流・切磋琢磨が生まれにくい」と言った声も聞こえるようになりました。
こういった課題に対して、エンジニアリングマネージャーやテックリードを中心に「技術推進委員会」という名の横断組織を爆誕させ、
メンバーで熱い議論を交わしながら課題解決の施策を考え、実施してきました!現在も実施中です。
このセッションでは、
横断組織の立ち上げから2年間の間で実施してきた多くの施策や施策を実施したことでの組織の変化について話します。
Symfonyドキュメントの日本語訳を進めています。
Symfonyは世界でも有名なフレームワークですが、最新バージョンに追従するドキュメントの日本語訳がないのが現状です。
日本語訳があるLaravelやCakePHPに比べると、初学者にとって難しいかもしれません。
そこで、Symfonyの学習を支援するために、公式ドキュメントの日本語訳を作成しています。
PHPerKaigi 2023にてこのプロジェクトの紹介と協力者の募集を行いたいと考えています。
また、日本語訳に協力していただける仲間も募集していますので宜しくお願いいたします!
PHPer界に光あれ!
Symfonyドキュメント日本語訳で輝く未来を切り拓きましょう!
普段いつものようにphp-srcをソースコードリーディングをしているとき、配信しながらアバター姿でやってたり、
PHPのバグを見つけて報告するときもアバター姿で配信しながらやっています。
その際のノウハウやメリット・デメリットをトークします。
(アーカイブ残してるのでアーカイブ見るとわかりやすいです😁)
登壇する際にもアバター姿で登壇しています。登壇の方法は配信とちょっと違ってくるので、
どうやってやるの?というのもトークします。
PHPerKaigi 2021からアバター姿で登壇して2年になりますが、もっとアバター姿で登壇する人が増えると嬉しいです!
ちなみに、このトークの概要も、配信しながら作りました。
https://youtu.be/1r5CQ3u8GF8
開発組織の開発力、生産性を上げるために避けては通れないエンジニア一人ひとりの技術力アップ。
私がEMとしてここ数年考え実践してきたエンジニアの教育において必要な要素や考え方について整理して話します。
メンバーを教育する際に気をつけていること
エンジニア教育する際のマインド
レベルごとの教育スタンス(ティーチング、コーチングの使い分け)
教育にまつわる理論(認知特性やラーニングピラミッドを活用する話)
組織のエンジニア教育にミッションを持ち悩んでる人
エンジニアとして今後の成長方針に悩んでる人
教育に興味がある人
エンジニアに必要な個別技術の習得方法
エンジニアとしてどのような個別技術を学ぶべきか
PHP によって書かれた一般的な Web アプリケーションはリクエストごとに独立したプロセスによって処理が行われます。
そのようなアーキテクチャは ISUCON の参考実装が提供されている言語の中でも異質です。
RoadRunner は Go 製の PHP アプリケーションサーバで、リソースをリクエストをまたいで使い回すようにでき、他の言語と近いアーキテクチャを実現できます。
これによって他の言語と同じ土俵で戦うことができるのか、は気になるところですが、それ以前にそもそも RoadRunner に載せ替えることはできるのでしょうか?
本セッションでは ISUCON 12 予選問題の PHP 実装を RoadRunner で動作させるために必要なことと、RoadRunner に載せ替えたことによって変わることを説明します。
DORAによる調査、State of DevOpsが定義し、書籍「LeanとDevOpsの科学」の広まりと共に浸透したFour Keysという指標は、ソフトウェアデリバリのパフォーマンスを示すだけでなく、組織そのもののパフォーマンスに因果関係があると知られています。
ところで、この「組織そのもののパフォーマンス」というのは一体なんのことなのでしょうか?
本トークでは、「組織そのもののパフォーマンス」を財務諸表の観点から眺めることでFour Keysとの関連性を考えてみようと思います。
ソフトウェア開発の現場に限らず、あらゆる改善活動において「正確な現状把握」は必要不可欠です。
パフォーマンスチューニングはその代表的な例でしょう。
では、リアーキテクチャリングやリファクタリングなどの改善においては、どのように「正確な現状把握」を行えばよいのでしょうか??
本トークでは、アーキテクチャの「正確な現状把握」に役立つアーキテクチャメトリクスという概念をご紹介し、後半ではPHPのアプリケーションで使えるツールをご紹介します。
本トークでお話しすること
"Lean と DevOpsの科学" で有名になった Four Keys など、最近はメトリクスという言葉をよく聞くようになりました。
ソフトウェアの改善においては、まずメトリクスを計測し、KPI を定め、改善を進めるのが王道です。
ところで、PHP のウェブアプリケーション開発で使えるメトリクス計測ツールは、どれくらいあって、何の指標が測れるのでしょうか?
一通り目についた計測ツールを試してみて、その結果をまとめてみます。
本トークで話すこと
弊社は11月に新しいサービスをリリースいたしました!
約半年間という限られた期間の中で2つ目のサービスを開発することは、試行錯誤と学びの連続でした。皆さんも新サービス開発時にAPI設計や既存サービスとの棲み分けに頭を悩ませたことはありませんか?
この登壇では新サービスリリースまでに蓄積された開発ノウハウをご紹介できればと思います。
・新サービスAPIの設計、構築
・既存サービスとの棲み分け
・ログイン、メール基盤
・その他
・feature flag運用
・リリース前後の準備
メソッドインジェクション、使っていますか?
Laravelではコントローラーのインスタンス化の際にコンストラクタに明示された依存クラスを注入してくれる「コンストラクタインジェクション」だけでなく、メソッド実行時に引数に明示された依存クラスをフレームワーク側が自動で解決してくれる「メソッドインジェクション」と呼ばれる便利な仕組みがありますが、この便利機能はどうやったら実現できるのでしょうか?
今回のトークでは簡易ルーティングライブラリを実装して、その大まかな仕組みを実演してみたいと思います!
昨年のPHPerKaigiで「エラー監視とテスト体制への改善作戦」というタイトルでチームへのテストコード推進と奮闘についてトークをしました。
https://fortee.jp/phperkaigi-2022/proposal/4a7e3ded-9134-4919-955c-ec7bf4491c0d
あれから一年。テスト体制がどのように変わってきたかの話と、テストコードを高カバレッジで維持したシステム開発・運用をして得た話をします。
【トーク対象】
プログラマやIT系エンジニアの実務は、(漫画やハリウッド映画でのイメージとは違い)ステークホルダーや同僚・部下との関係が欠かせず、絶え間ない学習・成長が必要で──とても「人間的な」側面が大きいものです。
何だって、人間を学ばないと!
「アドラー心理学」って言葉に聞き覚えは?仕事にどう役立つのでしょう。「認知負荷」って聞きますよね。その定義は説明できますか?
「言っている事が伝わらない」「教えても伸びない」等々、人間関係やメンタルモデルの問題は普段の仕事と密接に関わります
リーダーシップやコーチングを学ぶ中で出会った「こういう領域があるんだ」について共有します
Web系の開発に携わっていると、「作って終わり」ではなく「ちゃんと動き続けていること」が重要になります。
そのための行為が「監視」であり、その質を保証する特性が「可観測性(Observability)」です。
私はこれまで「開発」「運用」「保守」といった区分けの無いような小規模組織で過ごした時間が長く、その経験から「アプリの人こそ、監視や可観測性を強く意識すべきだ」と確信しています。
皆さんのチームでは、「システムが動いているか気にする人/関心が薄い人」といった分断は発生していませんか?
もしくは、「監視の必要性は理解しているが、”良い監視”って?」と悩んでいる人もいるかも知れません。
このトークでは、「なぜ監視を」「なぜアプリの人が」に触れつつ「可観測性とは何か」について考えを深めていきます。
みんな大好きComposer、もっと仲良くなりたいです。
仲良くなるにはどうすれば・・・やっぱりバラバラに解剖して、自分なりに構築してみることだと思います。
突き詰めれば、やっていることは「JSONを解釈して」「ネットワーク越しにファイルを落として」「ZIPを解凍して」「良い感じに展開すること」になります。
PHP自体の実行箇所(Pluginやscriptsの実行)を除けば、動かすことができるのでは・・?
Composerの一部の機能をGoで再発明してみると同時に、「Composerってそういう仕組なんですね」をシェアします!
レガシーなコードと向き合っているとリファクタは避けては通れないものです。
レガシーでなくてもコード書きながら「なんかイケてないんだよな〜」となってリファクタすることも多いかと思います。
このあたりのコツをお話できればと思います。
皆さんはPHPのビルトインウェブサーバーを使ったことはありますか?
Laravelユーザの皆さんはphp artisan serveで馴染みがあると思います。
HerokuやECSへのDeploy時にphp artisan serveでWebサーバを起動する、といったサンプルが巷に大量に転がっています。
公式サイトさえこのような記述がされているというのが現状です。
ビルトインウェブサーバーを使った時にどういう弊害がおこるのか、実体験を踏まえて話していこうと思います。
近年、PHPプロジェクトの品質を高めるためのツールとしてPHPStanのような静的解析ツールが導入されるケースが増えています。
しかしながら、PHPStanをただ単に導入しただけではバグを完全に潰すには足りません。
PHPStanに新たなルールを加えて、更に厳しくするためのPluginがphpstan-strict-rulesです。
PHPには厳密性に欠ける関数が散在します。
例えば、 in_array
に第三引数を渡さないと厳密性が損われるので警告を出してくれるといったものです。
phpstan-strict-rulesを普及すれば、誰もが安心して開発できる環境が整うと信じています。
「良いテストを作る」もしくは「より信頼できるコードのためのテストを書く」という夢があります。
例えば、「アプリケーションコードを破壊した時、テストが気付けるかを知る」「色々な入力を渡して、どういう組み合わせで変になるかを知る」なんて面白そうですよね?
その為のテスト手法があり、開発されたツールがあります。
PHPでの例を取り上げながら、それはどんなにエキサイティングか?を覗いてみましょう。
本トークには、サンプルコードや動作の様子が含まれます。聴講者は、これらの手法やツールの書き味や世界観も味わえるはずです。
もし上手く現場に導入できたなら、コードやテストに対する信頼性をガバっと上げるきっかけになるかも知れません。