あなたは"良い"テストが書けていますか?
普段テストを書いている人でも、良いテストを意識して書くことは意外と難しいです。
高品質なアプリケーションを開発するためにテストは必要不可欠ですが、
品質の悪いテストが増加すると、かえって開発の足かせになりかねません。
本トークでは、15年以上の歴史を持ち、数万のテストを有するPHPアプリケーションの開発に参加して得た経験や反面教師をもとに、
持続可能で保守性の高いテストを書く方法について解説します。
PHPerな僕がアルケミストになってElixirを触っている話。
PHPがメイン言語な僕がElixirを触っていてPHPと似ているところやElixirの良いところや癖など紹介。
Elixirからの良い文明をPHPに持ってきたい。
【対象者】
受け持っているプロジェクトの進行と新人教育の両立は、多くのエンジニアが直面する課題です。
この課題を解決するために、PHPの研修をDockerとDevContainerを使用して自動化する方法を思いつき実践してみました。
どのようにしてPHPの研修を自動化し、新人が自己学習を進められる環境を整えたのかを共有します。
具体的には、問題を作成し、自動テストで答え合わせを行うことで、新人が自己ペースで学習を進められる環境を提供しました。
この方法により、新人の教育を効率的に行うことができました。
みなさん、PSRを全部覚えてますか?
私は覚えてません。
なので、SymfonyでIntefaceを実装している具体的な部分を読んでみます。
その一部をご紹介します。
普段からPHPやフレームワークのバージョンアップ対応、技術的負債の解消、新しい技術の導入など技術的な改善活動が日常的にできていますか?
技術的改善を進めたいけど事業を優先して時間がとれずなかなか進められないといったことがあるのではないでしょうか。
コネヒトでもこの問題に直面し、長年に渡り様々な試みをしてきました。
これらの試みでうまくいったことうまくいかなかったこと両方についてお話します。
みなさんの組織運営のヒントになると幸いです。
PHP には古くから PHP Extension という機構が備わっており、ネイティブで高速な言語拡張を提供することが可能です。
普段からよく利用されているであろう APCu や PhpRedis なども PHP Extension という形で提供されています。
実は、 PHP Extension 取り巻く環境が以前と比べて変わりつつあるのはご存知でしょうか?
今回はそんな PHP Extension の今について発表させていただきます。
PHP を使っていて予期せぬクラッシュなどに遭遇したことはありませんか?
バグ報告するにもバックトレースやコアダンプをどうやって取れば良いか悩むことも多いかと思います。
今回は PHP 本体のデバッグ手法について説明し、最低限のバグ報告ができるようになるまでを説明させていただきます。
PHPStan や Psalm 等の静的解析が急速に普及する中、既存の大規模プロジェクトに対し持続可能な形で導入するためには考慮しなければならないことが数多く存在します。
PHPStan を導入した実例を元に、大規模なコードベースに対しどのようなアプローチで静的解析を導入していったかについて説明させていただきます。
みなさんDTO(Data Transfer Object)使ってますか?
実際使用すると、Getter/Setterや型変換など、コード量が肥大化してしまうケースもあるのではないでしょうか。
それらの課題を解消すべく、入出力や加工をシンプルにできるデータオブジェクトライブラリ「Laravel-data」を導入してみました。
本セッションでは、Laravel-dataの機能を活用した「気が利くDTO」の作り方をご紹介します。
弊社では数年間運用してきた業務システムをフルリプレイスしました。
既存のシステムでは、業務ロジックが分散されていたり、業務知識の属人化などによって、開発スピードが出せなくなってきていました。
この状況では、機能拡充のボトルネックになることが明らかだったため、今回のリプレイスでは、ドメイン駆動設計(DDD)やテスト駆動開発(TDD)、依存関係や責務を明確にしたレイヤードアーキテクチャなどを取り入れた、よりモダンな開発に挑戦しました。
本セッションでは、モダン開発への挑戦にあたり、具体的に実践したことや直面した課題、工夫したことなどを話したいと思います。
みなさんDTO(Data Transfer Object)使ってますか?
実際使用すると、Getter/Setterや型変換など、コード量が肥大化してしまうケースもあるのではないでしょうか。
それらの課題を解消すべく、入出力や加工をシンプルにできるデータオブジェクトライブラリ「Laravel-data」を導入してみました。
本セッションでは、Laravel-dataの機能を活用した「気が利くDTO」の作り方をご紹介します。
Laravelのアップデートを、Laravel Shiftを使いながら行ってきました。
実際にどのようなことを行ってきたかをお話しできればと思います。
アップデートをいずれ行う予定の方や、Laravel Shiftの導入を検討している方に
経験したことをシェアすることで、何かしらの参考になればと思います。
ーーー 深淵をのぞく時、深淵もまたこちらをのぞいているのだ。 (フリードリヒ・ニーチェ『善悪の彼岸』より)
ということは、私たちはPHPを触る時、無意識的にC言語をPHPという壁越しにのぞいているとも考えられるのでは?🤔
(たぶんC言語も私たちをPHP越しにのぞいている気がする)
というわけでC言語完全初見の自分から見たC言語の印象・PHPとの比較、
向き合った結果わかったこと・わからなかったこと等をお話してみようと思います。
【対象者】
多くのWEBアプリケーションで導入されているであろう ECS(Fargate) 環境では DB マイグレーションってどうやってますか?
弊プロダクトでは マイグレーション用のコンテナを用意する 方法を採用しています。
コンテナ環境での DB マイグレーションの実行方法はあまり情報がないように思われるので参考になれば嬉しいです。
弊社では数年間運用してきた業務システムをフルリプレイスしました。
既存のシステムでは、業務ロジックが分散されていたり、業務知識の属人化などによって、開発スピードが出せなくなってきていました。
この状況では、機能拡充のボトルネックになることが明らかだったため、今回のリプレイスでは、ドメイン駆動設計(DDD)やテスト駆動開発(TDD)、依存関係や責務を明確にしたレイヤードアーキテクチャなどを取り入れた、よりモダンな開発に挑戦しました。
本セッションでは、モダン開発への挑戦にあたり、具体的に実践したことや直面した課題、工夫したことなどを話したいと思います。
Instagram使ってますか?
仕事でInstagramからデータを取得するAPIを毎日何万回と叩いてるんで、普通の人より詳しいです。
Meta社への問い合わせや許せねえ!というエピソードなど素早くたくさん話します。
Instagramのサービス作ってみようかな〜とか、Meta社が最近ThreadsだしたしAPI公開されたら気になってる〜や、外部API利用で起こる怖い話ききたい〜みたいな人に大変刺さる内容になるはずです。
最近流行り?のエンジニアリングマネージャー。
ある日突然上司(非エンジニア)から会社初の技術職でのマネージャーをやってくれないかと打診があった私。
エンジニアリングマネージャーになって何したの〜から、上手くやれた話、上手くやれなかった話、めちゃ大変だった話をします。
エンジニアの少ない会社でエンジニアリングマネージャーになるのって何が大変?
実際にどんな仕事が増えたの?
なりたい人はどういうことやってくとよさそう?
みたいなことお話します!
Symfonyフレームワークを使って、リアルタイムでメモアプリを作ります。
5分という限られた時間の中で、どれだけの機能を実装できるかを実証するために、ライブコーディングを行います。
もちろん、トラブルが発生する可能性もありますが、その場合はその場での対応をお見せします。
SymfonyはLaravelやCakePHPなどのフレームワークと比べ、少し敷居が高いと感じられるかもしれませんが、実際そうでもないと思っています。
1年間のSymfony経験で得た知見や手法を駆使し、5分間でどれだけ素早くアプリケーションを構築できるかを発表しようと思います!
Symfonyに興味を持つ全ての方々に、実際の開発をリアルに感じていただける内容にしようと思います!
新型コロナウィルスの流行により、リモートでのやり取りが多くなりました。
これは技術イベントも例外ではありません。
手軽に東京をはじめとする遠隔地の人々とコミュニケーションをとるようになった現在に、地方でカンファレンスを行う意義はなんでしょう?
そこには「最新の技術を知りたい」「楽しく盛り上がりたい」以外の重要なミッションがあります。
このトークではリモートが当たり前になった時代に、わざわざ地方でカンファレンスを開催する意義について、お話しします。
ノンフレームワークのプロダクトに、フレームワークを導入した経験はありますか?
計画で諦めた人、チャレンジして失敗した人もいるかもしれません。
私の開発しているプロダクトは2001年にリリースされました。
当然設計もレガシーで
・PHPファイルにHTMLがベタ書きされている
・ルーティングはページごとにxxx.phpが存在する
など、非常に”牧歌的”設計になっています。
そんなプロダクトを、Laravelに移植するプロジェクトが立ち上がりました。
誰もが無理だと思ったこのプロジェクトは
""載せる""をキーワードに設計され、無事にリリースされました!
このトークでは”載せる”をキーワードに
”載せる”戦略と、そのメリット
”載せる”ときに苦労した点
”載せた”あとの世界
についてお話します!
※このトークは、PHPerKaigi2023で行ったLTのレギュラートーク版です。