REPL(Read-Eval-Print Loop)はコードのデバッグ、小さなスクリプトの実行、簡単な計算などを行うのに便利な対話式環境です。
代表的なREPL環境にはRubyのirbや、PHPのbobthecow/psysh があります。
使ってみて便利な一方でどのような仕組みで動いているのでしょうか?
このセッションではREPLの解説から実際、Read(読み込み、)Eval(評価)、Print(出力)、Loop(ループ)
それぞれの処理をPHPで書きながらどのような仕組みで動いているのかを解説して、紹介を行います。
「テストがないコードはレガシーコードだ!」
Webアプリ開発においてPHPUnitなどでテストが書かれることは一般的になりました。
ですが、テスト完走までにかかる時間は適切でしょうか?
テストにかかる時間は生産性に直接的な影響を及ぼす重要な要素です。早ければ早いほど良い。
本トークでは、PHPUnitで書かれているテストを高速化するテクニックについてお話します。
Webアプリケーション開発でデータストアとして良く使われているRDBMS 「MySQL」。
大きなシェアを誇るMySQLですが、ご存知の通り2023年10月に5.7系はEOLを迎えます。
安全のためにもMySQL 8へのバージョンアップが必要となりますが、メジャーバージョンアップとなると押さえておくべきことがたくさんあります。
本トークでは、MySQLを8へバージョンアップするに当たって押さえておくべきこと、省力化する方法についてお話致します。
サーバーレスPHP、凄いんです。
BrefというOSSのお陰で、驚くほど簡単に環境が作れて、デプロイまで出来てしまう。
今回はサクッと作れてコストメリットが高いサーバーレスPHPの魅力を語ります
実行環境の1つとして、是非サーバーレスPHPを選択肢に加えてください。
話者は昨年HTTP3について調べた結果「スゲー!」ってなりました。
この体験を皆さまにスピーディーに体験していただくために、
HTTP3のいいところを仕組みにちょっと触れながらライトニングに話します。
細かいことは良いんです、HTTP3スゲー!ってなって欲しいんです。
その結果、HTTP3やってみるか〜!というモチベーションに繋がる事を望んでいます。
日付計算の正確性は非常に重要であり、それには月末の計算、閏年、タイムゾーン対応など、考慮すべき事項が数多く存在します。
このトークでは、「13月が出現するバグ」や「プラン終了の1ヶ月前に送るべきメールが送信されていなかったバグ」を具体例に取り上げます。
これらのバグが生じた原因とその解法について、実際のコードを使って掘り下げます。
これらのバグは特定の日付だけで発生し、手動テストでは見つけにくいという性質があります。
そこで、Unitテストを活用することで、このような問題を早期に発見し、予防する具体的な戦略とコード例を紹介します。
バグから学ぶことの重要性と、Unitテストの利用がいかに有効であるかについてお伝えします。
開発者数が多く、MVPアプリにも高トラフィックなアプリにも採用できるPHP。
インターネットではPHPのゆるい使い方ばかりが槍玉に上がっていますが、最近のPHPは言語仕様としての型サポートも強固になってきています。
もう一歩進んで、より安全に仕様変更やリファクタリングを行うためにどういう工夫が出来るでしょうか?
本セッションでは、プロダクト開発時に堅牢性を高めるための仕組みと文化についてお話致します。
みなさんSymfony Messenger使ってますか?
Symfony MessengerはSymfony Componentsのひとつで、非同期処理を扱うことができます。
このトークでは、DelayStampを使って非同期処理の実行タイミングを制御する方法や、ドキュメントには載っていない利用上の注意を実務で得た知見をもとに紹介します。
皆さんが所属してるエンジニア組織の課題はなんでしょうか?
どの組織も何かしらの課題があるのではないかと思います。
当社ではPHPで開発された複数メディアを運営し、
エンジニアの人数も増加しながら継続的にリリースすることで順調に事業を成長させてきました。
一方で、事業が成長するにつれて「スキル獲得に漠然とした不安がある」や
「他エンジニアと交流・切磋琢磨が生まれにくい」と言った声も聞こえるようになりました。
こういった課題に対して、エンジニアリングマネージャーを中心に「技術推進委員会」という名の横断組織を作り、
メンバーで熱い議論を交わしながら課題解決の施策を考え、実施してきました。
このセッションでは、
横断組織の立ち上げからこれまでに実施してきた多くの施策や、施策を実施したことでの組織の変化について話します。
チームのタスク管理について、以下のようなお悩みはありませんか?
・ タスクの優先順位がよくわからず、大事なタスクが締め切り直前なのに終わってない!
・ タスクが属人化していて、タスクは計画通りなのか、なにか問題を抱えてしまっているのかを把握するのが難しい!
私たちのチームはこの対策として、チームの開発効率と生産性を向上させるアジャイル開発手法の一つ、スクラムを始めました。
スクラムを活用することで、タスクの優先順位や進捗がチームで共有され、柔軟に見直すことが可能になりました。
また、アジャイルのマインドセットが身につき、日々のタスクへの向き合い方にも良い変化がありました。
こんな良いことづくしのスクラム、軽い気持ちで始めてみませんか?
【このLTで話すこと】
・ スクラムってなに?
・ なんでスクラムを始めたの?
・ スクラムの始め方
・ スクラムを始めたことによるチームの変化
皆さん、コードリーディングは得意ですか?
私には苦手意識がありました…
しかし、仕事で他者が書いたコードをメンテナンスしなければなりませんし、OSSを使いこなすため、あるいは、使いやすくするためにそれを読みたくもあります。
苦手なりに工夫することで、仕事に支障なく、他者が開発したOSSを理解しPRを送ったりできるようにもなりました。
このトークではPHPで書かれたコードを理解するために行なっているプラクティスやツールを共有します。
PHP カンファレンス福岡 2023にて「APIシナリオテストを書くべき10の理由」というセッションで登壇を行いました。
その登壇までに至る経緯を推しツールであるrunnの出会いからお話したいと思います。
個人的にはOSSへの貢献や取り組み方など、貴重な経験になったと感じており、またカンファレンス駆動開発も大変魅力的でその一部をお伝えできたらと考えています
皆さんAPIテストの自動化を行っていますか?
APIテストでは効率よくカバレッジを上げることができます。ただしE2EでのテストとなるとControllerテストとは異なりそのままではコードカバレッジを測定することが出来ません。
E2Eテスト(APIテスト、ブラウザテスト等)でバックエンドのコードカバレッジを取得する際の方法をお話させて頂きたいと思います。
世の中には止むに止まれぬ事情で古いバージョンのPHPを使用することもあります。
世の中にはコンテナという便利な技術がありますが、止むに止まれぬ事情で手元にインストールしたいときもあります。
決してそういう事情があったわけではありませんが、今回はPHP4系から8系まで手元でビルドしインストールしてみようと思います。
弊社はPHP >= 8.1 以上しか使用しないので決してそういう事情があったわけではありません。
【トーク概要】
『コードレビューやペアプロの文化がない環境で過ごした転職前の5年間』と『チーム開発が活発な職場に転職してからの半年間』では、
確実に後者の方が私に多くの学びや恩恵を与えてくれています。
1人ではなくチームで開発をすること、人を頼ることのメリットについて、お話したいと思います。
【対象者】
・職場にコードレビューやペアプロの文化がなく、基本的に一人で開発している方
・人を頼るのが苦手な人
・スキルアップに伸び悩んでいる人
※大きめなカンファレンスでの登壇は今回がはじめてです。
PHPerな僕がアルケミストになってElixirを触っている話。
PHPがメイン言語な僕がElixirを触っていてPHPと似ているところやElixirの良いところや癖など紹介。
Elixirからの良い文明をPHPに持ってきたい。
【対象者】
受け持っているプロジェクトの進行と新人教育の両立は、多くのエンジニアが直面する課題です。
この課題を解決するために、PHPの研修をDockerとDevContainerを使用して自動化する方法を思いつき実践してみました。
どのようにしてPHPの研修を自動化し、新人が自己学習を進められる環境を整えたのかを共有します。
具体的には、問題を作成し、自動テストで答え合わせを行うことで、新人が自己ペースで学習を進められる環境を提供しました。
この方法により、新人の教育を効率的に行うことができました。
みなさん、PSRを全部覚えてますか?
私は覚えてません。
なので、SymfonyでIntefaceを実装している具体的な部分を読んでみます。
その一部をご紹介します。
普段からPHPやフレームワークのバージョンアップ対応、技術的負債の解消、新しい技術の導入など技術的な改善活動が日常的にできていますか?
技術的改善を進めたいけど事業を優先して時間がとれずなかなか進められないといったことがあるのではないでしょうか。
コネヒトでもこの問題に直面し、長年に渡り様々な試みをしてきました。
これらの試みでうまくいったことうまくいかなかったこと両方についてお話します。
みなさんの組織運営のヒントになると幸いです。
みなさんDTO(Data Transfer Object)使ってますか?
実際使用すると、Getter/Setterや型変換など、コード量が肥大化してしまうケースもあるのではないでしょうか。
それらの課題を解消すべく、入出力や加工をシンプルにできるデータオブジェクトライブラリ「Laravel-data」を導入してみました。
本セッションでは、Laravel-dataの機能を活用した「気が利くDTO」の作り方をご紹介します。