例外はただのトラブルシューターじゃありません。コード内の誰が何を担当するのかを教えてくれる、責務の指針なんです。
『PHPの例外、多すぎてどれ使えばいいかわかんない!』『例外、いつキャッチすればいいの?』『エラー情報、どこに吐き出すのが正解?』こんな疑問を持ったことはありませんか?
PHPの組み込み例外クラスの選び方から、自分で独自例外を定義するノウハウまで、コードをもっと読みやすく、管理しやすくするための実践的なアプローチについて考察してみます。
例外をマスターして、エラーハンドリングをもっとスマートに。
私たちが働く IT の業界は変化が激しく、既存のスキルが数年ですぐに陳腐化してしまいます。
変化のなかで生産性の高いエンジニアであり続けるためには新たな事柄を戦略的に学んでいくことが重要です。
本セッションでは戦略的な学習習慣を身につけること「学び方の学び方」についてブレイクダウンして考察していきます。
Laravelをウェブアプリケーションフレームワークとして採用している会社はたくさんあるようです。これほどまでに人気のフレームワークですが、長期運用をしていくと、ちょっとずつツラミが現れてきます。
本トークでは、実際に行われている施策なども紹介しながら、どうしたら、それなりに運用・保守が可能なLaravelアプリケーションを作っていけるのか?を紹介します。
本トークで話す内容
B+木をご存知でしょうか?RDBMSのインデックス作成に採用されているデータ構造で、ディスクの効率的な利用や、検索を行いやすいなどの特徴があります。しかし、耳学問で聞いてもイマイチ特徴がピンと来ないのです。
本トークでは、PHPでB+木のデータ構造を実装して、RDBMSでB+木が採用される理由、インデックスの構造的な仕組み、何故検索が速くなるのか?などなど、データベースの仕組みの根幹を覗いてみましょう。
本トークで話す内容
プログラムを書くときに計算量を意識していますか?計算量の基本を理解することで、サービスが成長したときに問題を起こしにくいプログラムを作成することができます。簡単なプログラムを例にして、まず計算量という概念に慣れてみましょう。
熟練のエンジニアたちがプロジェクト参加時に何を考えているのか、知りたくありませんか?
もしかして、設計のことを考えている?利益?事業ドメインの理解?
いやいや違うんです、兎にも角にも真っ先に確認しておかないといけないことがたくさんあるんです。
このトークでは、シニアエンジニアがプロジェクトを成功させるために何を考えているのかをぶっちゃけてみます。
これからPHPを始めようとしている方向けのセッションです。
PHPの入門は、応用に興味があるならLaravelやWordPressから入っても良いのですが、フレームワークの使い方に振り回されて、基礎が疎かになるのが心配だと感じる方も(こんなカンファレンスに参加するタイプならきっと何人かは)おられることでしょう。まずは「PHPそのもの」をしっかり押さえてから、理解の枝を広げていく道順を、手を動かして実際にやってみませんか。
ウェブ開発環境の変化は日進月歩です。古い書籍の案内は、時代に合わなくなることもあります。今しかないからこそベストな、2024年版のPHP入門を。
(ご注意:PHPは初心者でも構いませんが、全くのプログラミング初心者、パソコン初心者でもわかるレベルの内容ではありません。プログラミング入門としてのPHPではない点をご了承ください)
みなさんは、PHP で正規表現を使っていますか?
ちょっとした条件判断や、文字列の整形などで使われていると思いますが、その正規表現は複数あることをご存知でしょうか?
Perl準拠の正規表現である preg 系関数、マルチバイト文字列の正規表現が使える mb_ereg 系関数 の2つです。
しかし、PHP プログラマーは一体どういう時にどっちを使えばよいのでしょうか?
このセッションでは、PHP の正規表現が今までどのように実装されていて、どう使われてきたのかを順を追って説明します。
用途に合わせて、どの正規表現関数を選択すればよいのかを自分で考えられるようになりましょう。
Xdebug は開発時に最も頼りになる相棒です。
一般的には、ウェブアプリケーションのステップ実行が有名ですが、コンソールコマンドや、PHPUnit のテストでもステップ実行させることが可能です。
しかし、慣れていない人には、Xdebug の設定はむずかしいです。あれもこれも色々試すけど、上手く行かないことも多いです。
本LTでは、ポイントを一つに絞り、PhpStorm と Xdebug の連携方式にのみフォーカスします。
仕組みさえ押さえれば、どう設定すればよいかは自ずと思い浮かんで来ます!
Xdebug の設定はこわくない!上手に Xdebug を設定して、スムーズなウェブアプリケーション開発を楽しみましょう!
コロナ禍を経て、働き方に多様性が生まれました。リモート勤務、ハイブリッド勤務、出社勤務と開発者を取り巻く勤務環境も様々です。
このトークでは、それぞれの状況を考慮しつつ、どのようなことを開発メンバーが理解していれば現場で活躍できるのか?という視点で開発メンバーが現代で備えるべき前提知識や振る舞いについて語ります。
SaaS全盛の昨今、マネージドなデータベースにロードバランサー、セッション用のKVSなどを含めるとPHPアプリケーションの運用費用は軽く月額数万円になってしまいます。ステージング環境や、CI後の確認環境を含めると運用費は掛け算で増えていきます。
本トークでは、なるべく安い値段でPHPアプリケーションを本番運用する可能性を探求します。
2018年に「Laravel Collection の計算量を調べてみた」というタイトルで PHP勉強会で発表を行いました。
https://speakerdeck.com/hanhan1978/laravel-collectionfalseji-suan-liang-wodiao-betemita
あれから、5年。月日が流れて、Collection にはメソッドが追加され、ロジックにも変更が入りました。
というわけで、今、計算量がどうなっているのか測り直してみました。
このセクションではリアルなLaravelのプロジェクトを例に、ドメインイベントを用いてどうやってコードをすっきりさせるかをナビゲートします。
テストも楽チンになるし、コードも再利用しやすくなるような、ちょっとした工夫を伝授します。
リファクタリングって難しそう?
いえいえ、このセッション後は、もう怖くないですよ。
Laravelとともに、もっとコードライフを楽しみましょう!
コミュニケーションにおける「パス」について、「コミュニケーションパス」がまず頭に浮かぶと思います。
いわゆる、1対1のコミュニケーションがどれだけ発生するか?というコミュニケーションパスとともに、チーム間を跨ぐ場合に誰を経由してコミュニケーションするか?という経路としてのパスもあります。
個人的に、直接のコミュニケーションにおけるやりとりも「パス」(pass)することだと考えていて、相手にいいパスを出せるか?というのもチームコミュニケーションにとって大切な要素ではないでしょうか。
本トークでは、1対1のコミュニケーションにおける対話(パス交換)に着目して、私が大切にしていることを共有したいと考えています。
PHPはWeb開発に適した言語とされ、筆者は主にWebバックエンドや簡易なCLIツールの実装に用いてきました。
しかしそれ以外の用途で私はPHPを使用したことがありません。
そんなPHPの可能性を探るべく、任意音階の波形を生成し、簡単なメロディを再生するプログラムをPHP(とC言語)で書きました。
本トークではPHPのFFIという機能を用いて簡単なメロディを再生する「なんちゃって」ソフトシンセを実装し「ドレミの歌」を演奏します。
※演目は変更される可能性があります。
アプリケーションのパフォーマンス改善を行う場合、適当に手を動かしてもうまくいかないことが多いと思います。
少しでもよいカイゼンを行うためには「事実」を把握するために「計測」するというアクションが大事です。
ツールを使ってコードのメトリクスの取得するのも1例です。
コードのサイズ、重複コードの有無、コーディング規約の遵守状況、循環的複雑度、エラーの有無などコードに対する「事実」を把握することができます。
把握できた色々な「事実」を元に、どこがアプリケーションの改善点なのか…?何がアプリケーションにとって最適なのか…??プロダクトにもっとも寄与するためには…???を考え「判断」し、「行動」に繋げていきたい。
このトークではどのように考えてカイゼンのための行動をとっているのか?をお伝えしたいと思っています。
Laravelには便利な機能がたくさんあり、Eloquent、Facede、サービスコンテナ、認証、ミドルウェア、Blade、artisanコマンドなどの機能を活用することで、スピード感のある開発ができることは間違いありません。
ただ、それらに依存しすぎることによる弊害も少なくないでしょう。ビジネスの変化への対応による作り直し、各機能のバージョンアップの際に思わぬ量のコード修正になってしまうことがあります。
そんなことを想定し、Laravelのコードからドメインのコードが独立するよう、主にInterfaceを利用してドメインロジック(=わたしたちのコード)を切り出すことを心がけています。
まずLaravelで素早く開発するための例を紹介し、どのようにしてLaravelのコードとドメインのコードの距離を保っているか、どんなメリットがあるのかを事例を交えて紹介させていただきます!
PHPドキュメンテーション
「password_hash() は、 アルゴリズムやコスト、ソルトといった情報もハッシュに含めて返すことに注意しましょう。 」
ぼく
「え、ソルトも同じところにあったら意味ないんじゃ?」
このセッションでは、そんな疑問に答えるべく、password_hash関数について掘り下げて解説します。
そもそもパスワードをハッシュ化する目的や、パスワードにまつわる攻撃手段とその対応を見ていきましょう。
話すこと
・ハッシュ化とは何か
・なぜパスワードはハッシュ化するのが良いのか
・ソルトは何を解決するか
・ブルートフォース攻撃やタイミング攻撃への対応
みなさんは Serverless アーキテクチャをお使いでしょうか。
PHP では、 Bref と呼ばれるサードパーティ製のランタイムを用いることで Serverless 、正確に言えば Function as a service 環境上でアプリケーションを動かすことが可能です。
しかしながら、このアーキテクチャは専ら CDN を組み合わせ、公開されたインターネット環境から アクセスしてくることを基本としており、それ以外のアクセスが制限されている環境 = 閉域網下において、このアーキテクチャが採用されたケースは、あまり見ることができません。
このセッションでは、 DirectConnect を用いた閉域網下の環境にて、 Serverless アーキテクチャを採用した Laravel アプリを実装し得られた知見についてお話ししたいと思います。
私の所属する株式会社リンケージは、CTOの曽根壮大をはじめPHPカンファレンスやコミュニティに関わりの深いエンジニア社員・業務委託が多く働いています。
私は、エンジニア社員に誘われたのをきっかけに、今年の6月に開催されたPHPカンファレンス福岡2023に参加してみたのですが、あまりの楽しさと面白さに感動し、その後、9月の沖縄(オンライン)、10月の東京(オフライン)と3連続でPHPカンファレンスに参加しています。
私自身はPHPerでも、もはやエンジニアですらなく、事業開発出身のプロダクトマネージャーです。
傍から見ると、講演内容は分からず、参加しているエンジニアの方々とも話せないのではないか?と思われる方もいるかもしれません。
私がなぜPHPカンファレンスに参加し続けているのか、その魅力を「非PHPer」「非エンジニア」という私にしかない視点から熱くお伝えします!