B+木をご存知でしょうか?RDBMSのインデックス作成に採用されているデータ構造で、ディスクの効率的な利用や、検索を行いやすいなどの特徴があります。しかし、耳学問で聞いてもイマイチ特徴がピンと来ないのです。
本トークでは、PHPでB+木のデータ構造を実装して、RDBMSでB+木が採用される理由、インデックスの構造的な仕組み、何故検索が速くなるのか?などなど、データベースの仕組みの根幹を覗いてみましょう。
本トークで話す内容
「PHPUnitでテストカバレッジを取ろう」とすると、phpunit/php-code-coverage
というパッケージによって分析・レポート出力がなされます。
カバレッジのデータは、Xdebug(など)の拡張によって、PHPスクリプトの実行情報を取得されるものです。
一言で「テストカバレッジを取る」といっても、複数のレイヤーに登場人物がいて、それぞれの果たすべき役割が組み合わさって実現されていると言えます。
さて、実際に「それぞれで、どういうデータが出力され、どう変換されるのか」「どのような流れで、カバレッジの収集処理が起動・完了されるのか」が気になりませんか?
内部的な仕組みを知ることで、「単体テストでのテストカバレッジ計測」以外の活用方法も見いだせるかも知れません。
例えば、Xdebugの作者がYoutubeに展開している「Code Coverage for Websites」などは、興味深い例の1つでしょう。
このセッションでは、
について話をします。
「わたしたちのコード(=ドメインロジック)」は安定していますか??
フレームワークを利用している場合にコードの境界がハッキリしていないと、強くフレームワークに依存することにもなりかねません。
フレームワークには便利な機能がたくさんあります。
たとえばLaravelには、Eloquent、Facede、サービスコンテナ、認証、ミドルウェア、Blade、artisanコマンドなどがあり、それらの機能を活用することで、スピード感のある開発ができるでしょう。
しかし依存のしすぎはビジネスの変化への対応による作り直しや機能のバージョンアップの際に思わぬ量のコード修正になってしまうことがあります。
わたしのチームでは主にInterfaceを利用して「わたしたちのコード(=ドメインロジック)」をフレームワークから独立させ、安定させることを心がけており、その方法をご紹介できればと思っています。
皆様はペアプログラミングをしたことはあるでしょうか?では、ペアテストはどうでしょうか?
なぜかあまり有名な方法ではないようで、やったことがなければ聞いた事もない人も多いことでしょう。
自分自身では完璧に作ったと思っていたのに、リリースやQAに回したら、気が付かなかったバグや、想定外の操作による不具合が発生することはめずらしくありません。
後でバグがみつかり、QAからもどされたり(ちなみに私はQAです)、リリースを取り消すことになったりしてとてもつらい気分になったことはありませんか?
「僕のPCでは動いたのに…」と。
そこで、ペアテストです!
ペアテストとは複数人で一つのブラウザなどを囲みながら行うテストです。BDDやAgileの開発手法でも取り上げられることがあります。
自分が気付かないエッジケースや、気が付かなかった仕様漏れの発見に効果的で、品質の向上は勿論、手戻りを防ぐことができ、結果として開発速度も向上します。
私はエンジニアではなくQAですが、皆さんに体感してみて頂きたいとおもっています!
あなたも是非ペアテストで見落としを減らし、品質を向上させ、開発速度を上げていきましょう!
Everything will be Serverless
サーバーレスは正しくアプローチ出来れば、開発コストとしても運用コストとしても非常に高いコスト効率を出すことが出来ます。
今回は私が実際に構築してきたの具体的な事例を通じてサーバーレスがどのようなメリットを与えて来たのかを、
開発、運用、コストの面からお話します。
なぜサーバーレスに価値があるのかを感じてもらい、どのような場合に適用を行うべきなのかを議論、検討する材料になれば幸いです。
2023年6月にGoogleが運営するドメイン登録サービス「Google Domains」の売却が発表されました。 また同年の9月にはNTTドコモが2021年に終了した金融サービス「ドコモ口座」のドメインがオークションで落札されたことが話題となるなど、インターネットドメインに関わるニュースは時折世間で話題となっています。
一般的にインターネットドメイン(以下ドメイン)とはインターネット上のURLのことであるくらいの認識で、普段Webサービスを開発・運営していたとしてもドメインに直接関わる機会は意外と少ないと思います。
しかしドメインは2024年においてもインターネットにおいてとても重要な要素の1つです。
そこで今回、普段ドメイン登録サービスの開発・運用を主な業務として行っている私がドメインについての入門的な基礎知識や、普段あまり知ることがないドメインの管理構造や管理ポリシーなどについて紹介し、みなさんにドメインについてより関心・興味をもっていただきたいと思っています。
本トークでは以下についての発表を行います
最近のプロダクト開発においてSPAやマイクロサービスといったアーキテクチャを採用しているケースが多く、バックエンドのWeb APIの開発を避けて通れないと思います。
登壇者も近年数多くのAPIの開発を行ってきました。その中でスキーマ駆動開発も取り入れた開発プロセスを取り入れるなど、APIのスキーマ定義・管理方法ついて試行錯誤を重ねてきました。
その中でAPIのスキーマのバージョン管理がコラボレーションを行う上で大変重要であると気づきました。
如何に開発コストを増やさず
など、実践してきたことと取り組みにおかえるメリットについて紹介します。
みなさま、技術コミュニティは好きですか?私は好きです。
そんな私は福岡という地方都市で暮らしていて、技術コミュニティが大好きです。
東京に比べると地方でのイベントというのは絶対数は少なくなり、参加者の人数も少ないのかもしれません。
実際私はコロナ禍においても、ひたすらコミュニティ活動を続けていましたが、
そこで断絶したコミュニティを見てきました。
地方でコミュニティに求められる属性として、コミュニティの継続性という観点があると思います。
コミュニティの継続性とは何なのでしょうか。
今回は、私が今までコミュニティ活動を10年間行ってきて見えてきた
コミュニティに必要な要素としての「熱」のお話をします。
カンファレンスのみなさまだからこそ、目を向けるべきコミュニティを言語化して振り返ってみましょう。
そこで見えてくるなぜコミュニティが楽しいのか、続くのかを皆さんと一緒に考える機会になれば幸いです。
みなさまは技術広報という役割をご存知でしょうか。
私は所属する株式会社Fusicにてエバンジェリストという役割を担っているのですが、
その中で技術広報という役割も一部担っています
正直私は広報という分野の専門家ではありませんしド素人です。
それ故自らの登壇という以外の広報アクションはかなりの悪戦苦闘をしています。
そこで私はエンジニア以外も巻き込みながら技術広報チームを立ち上げて、
素直に自分以外の力を借りながら技術記事の執筆や自社オンラインイベントの立ち上げなどを実施し、
失敗を繰り返しながら少しづつ少しづつ改善を行ってきました。
そしてほんの少しではありますが、芽が開いてきて繋がったような気がします。
今回は専門ではないながら、その技術広報チームで試行錯誤しながら行ってきた活動を振り返り、その中で得た知見を言語化してお伝えします。
みなさんLaravelは使っていますでしょうか?
LaravelはPHPの中でも最も広く使用されているフレームワークの一つであり、その中でも「セッション」はWebアプリケーション開発において重要な機能の一つです。
そんなセッションですが、我々はLaravelのセッションの仕組みを理解せず利用し失敗をしてしまいました。
本トークでは、なぜそのようなミスが発生したのかを理解し、Laravelのセッションの仕組みを紐解いていきます。
Laravelのセッション機能は非常に便利である一方で、その仕組みを正しく理解していないと予期せぬ問題が発生することもあります。
具体的な事例を通じて、どのようにして問題が引き起こされたかを明らかにし、それを回避するためにはどのように対処すべきかを解説します。
フレームワークの便利な機能は深く理解せずに利用することもできますが、理解することでより堅牢なコードを書くことが可能になります。
本トークを通じてLaravelのセッション機能を理解することで、同様の失敗を未然に防ぎ、よりLaravelを活用できるようになりましょう!
心理学者のロサダをご存知でしょうか。
ロサダは対人関係において、ポジティブな表現とネガティブな表現の比率を3:1とすると信頼感や安心感を与えやすいことを提唱しました。
俗にこれはロサダ比と言われています。
また私事ではございますが、先日PHP Conference2023にて「CodeReviewerが求められること」を発表してまいりました。
https://fortee.jp/phpcon-2023/proposal/25891e6c-7762-47b5-8cb3-e3db7f056abc
そこで、CodeRevieweeが求めるものの中に「自信を持ちたい、安心したい」という気持ちがあることが明らかとなりました。
本セッションでは、CodeReviewerが求められることを満たすために、ロサダ比を用いることはできるのかという点に迫ります。
また、僕の現場におけるコードレビューの実例や、エンジニアにインタビューなどにより、「自信を持たせるReviewerの極意」を考察していきます。
レビュー時、依頼時に少しでもお役に立てると幸いです。
対象者: コードレビューを行う全エンジニア(役職問わず)
お話しないこと: 心理学の専門家ではありませんので、心理学の深いお話をする予定はありません。
皆さんはPHPアプリケーションのリアルタイムログ分析は行っていますか?
適切にログを収集することで、問題の早期発見や素早い意思決定などのメリットがあります。
今回紹介するのは、高い柔軟性と信頼性を持つデータ収集ツールのFluentdです。
Fluentdはクロスプラットフォームで動作し、アクセス、アプリケーション、システム、データベースなどの様々なログの収集に対応しており、
PHPアプリケーションのログ管理も非常に効率的に行うことが出来ます。
このセッションでは、リアルタイムログ分析の基礎的な部分から、PHPアプリケーションとFluentdの統合の手法まで、Step-by-Stepで解説します。
クリーンアーキテクチャを知っていますか?
そう(層)ですね。
クリーンアーキテクチャは層を切り分けることで、テストをし易い構造を作る設計手法です。
Controller -> UseCase -> Repository -> DataAccessObject
-> QueryService -> DataAccessObject
-> Service -> DomainService
こういった IO や処理を切り離し、各層において逆順での接続を許さないことで
ある程度のビジネスや機能に沿った実装をメインに置きながら、テストをしやすくした機構になります。
これだけをメインに据えたものは 軽量DDD ともいわれますね。
この構造を維持をするのは、人力レビューが基本のため、とても手間がかかります。
しかし、 php には phpat というアーキテクチャの定義ライブラリが有るのです。
これを使うことで、この構造を機械的に確認してくれるようになります。
リアーキテクチャを行う際に phpat を設定し、
1 年程度 実際に運用した内容とその変遷、
簡単な設定方法について皆さんにお話させていただきたいと思います。
皆さんはPHPサーバーのセットアップをどのように行っていますか?
手動で行う方法、構築済みサーバーを利用する方法、コンテナ技術を用いる方法など、様々な方法があると思います。
しかし、これらの方法は時間がかかったり、手順が複雑であったり、構成変更の柔軟性に欠けたりすることがあります。
今回紹介するのは、Ansibleという強力な構成管理ツールを用いた、PHPサーバーの構築・デプロイメントの自動化です。
AnsibleはSSH接続によってエージェントレスで動作し、軽量で学習コストも低いため、PHPサーバーの環境構築に最適なツールです。
このセッションでは、PHPエンジニア向けに、柔軟な構成で効率的にPHPサーバーを自動構築する手法についてお伝えします。
PHP8.3で追加されたjson_validate()
ですが、痒いところに手が届く大変素晴らしい関数です。
この機能について、具体的にどの辺が便利になったのかを、自身が経験してきたケースと実際の解決方法、json_validate()
を用いた場合どう改善するかのご紹介をします。
そして内部処理がどのようになっているかphp-src
の内部処理から深掘りをしていきます。
json_validate()
を用いない場合の実装ケース
json_validate()
を用いた場合の実装ケースjson_validate()
の内部処理を深掘りしていこうこのトークでは、LaravelのORMシステムであるEloquentのアクセサ・ミューテタが何か、またクエリビルダとの違いは何かについて、PHP初心者に向けてわかりやすく解説します!!
その後、Eloquentとクエリビルダを組み合わせて使用する際の注意点について、実際に起こった失敗談を紹介します。
そして、この失敗から得た教訓をもとに、同様の問題を避けるためにはどうしたら良いのかについても掘り下げます。
このトークを聞くことで、Laravelを利用しているけれどもEloquentとクエリビルダの違いが分かっていない方も、明日からこの2つの違いを理解し、安全にデータベース操作ができるようになるでしょう!乞うご期待!
みなさん情報設計という言葉を聞いたことはありますか?
PHPerのみなさんは普段からどういった情報を扱っていますか?
情報設計は、扱う複雑な情報を整理することでチーム開発をより円滑にすることが期待されます。
本トークでは情報設計という考えを実プロダクトの開発フローに組み込み、具体的に何をやってどんな知見を得られたかをお話しします。
また導入はしていないが、他の情報設計を開発フローに組み込むかの方法についても考察します。
PHP8.3ではOpcacheにも改善が入りました。php.iniを僕は雰囲気で使っていますが、これを機会にしっかり最高の設定を考えたい。本業でECSで利用しているphp.iniについて最高のパフォーマンスを出すためのPHP
にするための設定を考えます。
WordPressが好きなエンジニアがいるでしょうか?いいやいない。と反語を使いそうな勢いで、エンジニアは嫌いだという方を多く見ます。
もしかしたら、そんな中で良いところや悪いところを整理できていないかもしれないと考えました。
(ああぁ!!!!と叫びたくなる衝動を抑えて)冷静にWordPressの良いところ、悪いところを整理して発表します。
ジュニアエンジニアが多く、テックリードがあまりいないかも・・・?そんな環境でお仕事した方々はいないでしょうか?
ジュニアエンジニアの方々はすごく頑張ってくれているので、しっかりレビューしたいけど、する時間がない!
やるならできれば自分が本当に必要なレビューだけ頑張れるようにしたい!そう思っている方々も多いことでしょう!特にLaravelなら!!!
そんな時に僕がやっていたCI/CDを公開しつつ、何を考えてそのようなことをやっていたのか?についてお話しさせていただきます!