検索機能は現代の情報検索の基礎で, 多くのWebサービスに搭載されています.
検索機能の実装者としてElasticsearchなどの全文検索エンジンを使ったことのある方も多いと思われます.
一方で, その内部実装を知っている方は多くないのではないでしょうか?
本セッションは検索エンジンをフルスクラッチ実装しながら解説するパワフルなコンテンツです!
基本的な検索エンジンの実装のトピックとして、以下を想定しています
このセッションの対象者:
約1年前に主だったメンバーの退職を機に組織体制が大きく変更されました。
様々な組織イベントの移り変わりがあるなか、私達のチームは社内LT会という文化の重要性を理解し、この文化を残し発展させることを選びました。
旗振り役がいなくなった後、この社内LTの文化をどの用に引き継ぎ継続していったのかを話します。
話す内容
非同期処理やマイクロサービス間の通信などで利用頻度が増え続けているQueuingシステムを、PHPとAmazonSQSでの実装を用いて解説します。
Queueの基本であるFIFOの考え方から、それをコンピューティングに応用する方法、AmazonSQSの設定でQueuingシステムを制御する方法までが本発表の対象となります。
扱うトピック
・Queueの基本とFIFO
・Queueって何が嬉しいの?どう利用されてるの?
・Queuingシステムに欠かせない「ポーリング」について
・Dockerでマイクロサービスをローカルに再現し、通信をSQSで管理するデモを動かす
SQS操作を通じてQueuingシステムについての理解に集中していただく為に、LaravelデフォルトのJobクラスなどのフレークワーク依存ではなく、PHPのみでサンプルを記述して解説を行います。
私は学生時代から個人開発をはじめ、社会人エンジニアとなった今でも個人でWebサービスを開発・運用し続けています。
その中で一際思い入れが深いサービスが「National Economy Online」です。当時はコロナ禍がちょうど始まった頃で、物理的な交流や遊びができなくなってしまい退屈な生活を送っていました。ボードゲームが趣味の友人とリモートでも楽しく過ごすため、「ナショナルエコノミー」というボードゲームがオンラインで遊べるものを開発しました。今では友人だけでなく多くのユーザーに何千回と遊んでもらっています。
個人開発を通して習得できる技術や審美眼、また実際にPHPでボードゲームが遊べるWebサービスを作る際のテクニックについてご紹介します。
cf.) https://speakerdeck.com/arthur1/hatena-engineer-seminar-number-28
以前「心理的安全性の育て方」という記事を書きました。
https://tech.innovator.jp.net/entry/how-to-promote-psychological-safety
一読して、「わかる」と思われた方も「そうは言っても」と思われた方もいるのではないでしょうか。
このトークでは、中原淳さんの書籍『「対話と決断」で成果を生む 話し合いの作法』をベースに、
チームのメンバーの相互理解を深めるための「対話」と「決断」をどう進めていくべきか、私自身の体験も交えながらお話しします。
実は私たちは、正しい「話し合い」のやり方を習ったことがないかもしれません。
でも大丈夫、今からだって学んでうまくなれるようにしていけばよいのです。
「プレゼンの極意を伝授してやる」というお話ではありません。
ただ「傍目八目」とはよく言ったもので、PHP カンファレンスをはじめとする技術系のイベントに参加してトークを拝聴していると「このあたりを意識すれば、もっと素敵な発表になるのではないか」と思うことがよくあります。
時間をかけて念入りに支度し、伝えたいことをたくさんの人に聞いてもらうせっかくの機会ですから、話し手にとっても聴き手にとってもより有意義なものにしたいと思いませんか。
準備と本番において頭の片隅に置いておくとより魅力的なセッションにつながるかもしれない8つのことがらを厳選してお伝えします。
皆さんはPHPサーバーのセットアップをどのように行っていますか?
手動で行う方法、構築済みサーバーを利用する方法、コンテナ技術を用いる方法など、様々な方法があると思います。
しかし、これらの方法は時間がかかったり、手順が複雑であったり、構成変更の柔軟性に欠けたりすることがあります。
今回紹介するのは、Ansibleという強力な構成管理ツールを用いた、PHPサーバーの構築・デプロイメントの自動化です。
AnsibleはSSH接続によってエージェントレスで動作し、軽量で学習コストも低いため、PHPサーバーの環境構築に最適なツールです。
このセッションでは、PHPエンジニア向けに、柔軟な構成で効率的にPHPサーバーを自動構築する手法についてお伝えします。
主な対象
PHPサーバーの環境構築に興味のある方
インフラ・DevOpsに興味のある方
現代のウェブ開発では、クラウドベースのアプリケーション開発が主流となっています。
一方で、時代背景や特定のニーズ、コスト等の観点から、オンプレミスを選択する企業も少なくありません。
特にLAMP(Linux, Apache, MySQL, PHP)環境は、その堅牢性と信頼性で、10年以上にわたり多くのウェブアプリケーションの基盤として選ばれてきました。
しかし、オンプレミス環境におけるPHPやOSのバージョンアップは、複雑で手間がかかり、特に運用中のサービスにとっては高いリスクと大きな挑戦を伴います。
本トークでは、実際に運用している大規模サービスのPHP7からPHP8へのバージョンアップをゼロダウンタイムで行った経験を元に、
オンプレミスのLAMP環境において、安全で効率的にバージョンアップを行うための技術的戦略をお話しします。
技術選定で「何を選べばいいかわからない」「何が適切なのかわからない」など悩む方も多いのではないでしょうか。私自身もたくさん悩んできました。
一介のエンジニアとして開発に携わった経験,エンジニアリングマネージャーやテックリード,CTO 経験など多くの屍を超えて辿り着いた結論は「答えがない」です。それは,事業のフェーズ,ビジネスモデル,既存プロダクトの状態や既存のエンジニア組織の性格など技術選定において必要なパラメータが多岐に渡るためです。
それでも,技術選定を進めなければプロダクト開発はもちろんのこと,圧倒的な事業への成長に貢献できません。
では,ハードシングスを必要とするようなシーンの技術選定は,どのように行っていけばよいのでしょうか。
本トークでは,どういう視点で技術選定を行えばよいのかを皮切りに,様々な事業の状況を仮定しながら最適な技術選定に近づけるためのノウハウについてお話します。
システム運用/開発において、取り扱いが難しいもののうちのひとつとして、「過去」や「未来」があると思います。
たとえば、「履歴データ」と呼ばれるようなものの取り扱い、あるいは「予約された時間になんらかの処理をしたい」という要件に対しては、「システムを作ったはいいけど運用していく中で取り扱いに困ってしまった」という経験はないでしょうか?
「現在の状態」だけを相手にすればいい場合は非常にシンプルで済むシステムも、過去や未来を取り扱おうと思った途端に複雑性が上がるというのは、私の実感とも一致します。
本セッションでは、「過去」「未来」を取り扱うにあたって、「そもそも何が難しいのか」と、その難しさに対する処方箋、およびそこから見えてくる勘所と考え方を考えてみたいと思います。
アプリケーション開発で、単に要求に答えるための開発をするだけでなく、
データ分析に関する知識や幅広いドメイン知識が必要となる機会も多いのではないでしょうか?
このセッションではドメインイベントの理解がアプリケーション開発において中心的な役割を果たすかを探求します。
この概念を踏まえることで、分析の段階から境界づけられたコンテキストを明確にし、
如何にデータ分析設計やシステムアーキテクチャの進化に寄与するかを解説します。
このセッションでドメインイベントを中心とした考え方を得ることで、
柔軟なシステム設計・ドメイン理解のための洞察力を養い、
ビジネス要件の迅速な変更に対応し、継続的な成長と進化を実現するアプリケーションの開発が可能になるかもしれません。
発表では具体的な事例とともに、ドメインイベント中心の技術がもたらす可能性についても深く掘り下げていきます。
配列は、柔軟なデータ構造で便利である一方、使い方を間違えるとしばしば不具合の原因となります。
配列は==
や===
を使って比較することができますが、例えば ['a' => 'aaa', 'b' => 'bbb']
と ['b' => 'bbb', 'a' => 'aaa']
の比較では、 ==
ではtrueに、===
ではfalseになります。
このトークでは、PHPが配列の等しさをどう扱っているのかをphp-srcを読み解きながら深掘りしていきます。
みなさんはFormRequestのルール部分のUnitテストを書いていますか?
dataProviderに全てのケースを洗い出し、それを使っているのをよく見ますが、
なんか違うんだよな〜と思ったことはないでしょうか?
このトークでは、FormRequestのテストをより快適に書くやり方について、
実際のコード例と共に説明いたします。
話す内容
フロント側のテストって何を書いていいかわからない、UI部分のテストって書くのが難しそう、と思ったことはないでしょうか。
私はすごく難しいんじゃないかと思っていました。
そこでフロント開発の自動テストについて調べて、実際に作成した時、こんなライブラリやツールを使ってこんなテストをしたよ、っていうようなことを話したいと思います。
具体的には以下のような内容を話す予定です。
•Storybookを使った自動テストの作成
•Jestを用いたテストの作成
•Chromaticを用いたUIの変更点のテスト作成
•Codecovを用いてコードカバレッジを取る
ピクシブではドメインごとにクロスファンクショナルチームを事業部体制として構築し、会社としてのミッション達成を目指しています。
そういう環境で、2018年よりエンジニアギルドというエンジニア職の単一職能の横断体制を敷いて、事業部横断でエンジニア全体としての採用・評価・育成を同じ思想で強化していく活動を進め続けています。
わたしはその活動をとくに中心で、ときに一歩引いたところから推し続けてきたのですが、実現されるエンジニアリング強化とは事業を実現するケイパビリティの一つとして捉えており、またエンジニアひとりひとりの成長したい意欲を後押しすることも仲間同士で実現していきたいと常々考えていました。
5年ほど運用してきて再現性もあると考えたため、このカンファレンスの機会でこの知見をお伝えすることで、業界全体としてのエンジニア成長の加速の一助になればと思います。
「プログラマが知るべき97のこと」「ソフトウェアアーキテクトが知るべき97のこと」「スクラム実践者が知るべき97のこと」など、「97」というマジックナンバーを使った名著が10年代初頭から20年代にかけて出版されてきました。
2011年頃に当時の「IT勉強会」によく参加していたエンジニアたちが ぼっちが懇親会でするべき97のこと という大喜利を当時のTwitterで繰り広げ、 まとめが今でも残っています https://togetter.com/li/140804
それから10数年、令和の時代になって、エンジニアたちも取り巻く環境も大きく変わりましたが、まだまだコミュニケーションの不安感は人々の間にあり続けています。
その大喜利の一員として、また参加者・登壇者・開催者・企業側スポンサー担当者・技術広報など様々なロールを体当たりで担ってきたものとしての、カンファレンス参加戦略をお話します。
わたしは、かつてPHPカンファレンスやRubyKaigiなどで技術発表を行ってきましたが、近年ではこのカンファレンスのスポンサーも務めているピクシブという事業会社全体の制度作りの一翼を担ってきました。
ジョブチェンジをしたわけではなく、ソフトウェアエンジニア及びその分野のマネジメントの経験から設計スキルを武器として活用しています。
このセッションでは、わたしが実際に行った取り組みをもとに、それらの背景、思考プロセスを紹介し、今後のキャリア選択のフロンティアとしての発展像を示します。
なお取り上げる事例は以下を想定しています。
https://inside.pixiv.blog/2022/10/31/140000
https://inside.pixiv.blog/2023/02/22/115500
https://inside.pixiv.blog/2023/11/28/130000
皆さんは普段一緒に働いているチームにおいて、しばしば品質の基準がズレていると感じたことはありませんか?それがズレていると後に多大なる影響が及びます。
チームにおける「品質」が何を指していて、どのレベルになることを期待しているのかを明確にすることで、チームが同じゴールを目指しやすくなり、製品の提供スピードや品質が改善されたり、チームでの相互理解や尊敬を作るきっかけにもなります。
今回は品質を起点とした期待値のすり合わせについて、チーム全員が期待する品質を把握するメリットを事例を交えて紹介したいです。
内容
・ チームのみんなで品質やテストに関する資料を読む
・ 開発チームみんなで品質の基準をすり合わせる
・ エンジニアと一緒にテストを作る
Webサービスの開発運用においてセキュリティは一つの重要なテーマです。CSP(Content Security Policy)はwebの標準仕様であり、クロスサイトスクリプティングやデータインジェクション攻撃などのような特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティレイヤーです。しかし実際にこれをサービスに導入し運用をしているという事例をまだ多くは聞きません。
発表者が所属する組織においてもセキュリティ対策の一環でCSPを導入しプロダクト運用に組み込んでいます。どういった意図で導入し何が発生してそこからどういったことを学んだか、一つの事例として発表を通じて共有したいと思います。
[想定オーディエンス]
One Line Programmingを始めましょう!
プログラムの実行というと, 作成したファイルコンパイルしたり, インタープリタで読み込ませることを想像される方が多いと思います. しかし, PHPをはじめ, 多くのプログラミング言語ではシェルに直接コードを書き込んで実行する方法
があります. 例えばPHPはphp -r
を使うことで直接コードを渡すことができます.
一行では何もできない!と思われる方もいらっしゃるかと想像しますが, Shellのpipe機能などを使うことで実用的なアプリケーションを作ることも可能です.
https://zenn.dev/shundeveloper/articles/e113c189e3cc97
本セッションは「一行でプログラムを書く」ことに焦点を当てた発表です. 紹介するコードはどれも一行ですので初心者から上級者まで楽しめます!