サービスの立ち上げ、数年間の運用を通し
「試行錯誤を繰り返し、致命傷を負わない戦い方」
を少しずつ学んできました。
その経験を通し
と感じた話をします。
熟練のエンジニアの方にも、初心者の方にも「わかる、ウケる」と感じてもらえる話をして
「いいものを作ろうとしている仲間」
として交流のきっかけができればいいなと思います。
「ブラウザでURLを入力してwebページが表示されるまでの仕組みを説明してください」
こんな質問をされたら、あなただったらどのように答えますか?
webアプリケーションを開発する上で、多くの技術的要素を理解していることが求められますが、
正直なところ現時点では上記の質問に対してうまく説明できるかは不安です。
この状況を踏まえ、普段何気なく利用しているブラウザの向こう側の仕組みについて、
自分なりに色々と調べてみて、当日の登壇では時間の許す限りその調査結果をお伝えしようと思います。
PHPで実際にモノを動かしてみたいと思ったことはありませんか?
ラズペリーパイ(ラズパイ)のGPIOをPHPで制御することで、アクチュエータ(電気シリンダなど)を動作させることができます。
ラズパイとはシングルボードコンピュータで、電子工作や、近年では産業用途・IoTなどでも使用されています。
普段PHPを扱っているとPC上で完結する仕事が多いと思いますが、たまには現実のモノを動化してみると面白いです。
Slackのtimes文化根付いてますか〜?
Slackにて個人チャンネルを作りtwitterのようにつぶやく分報チャンネルことtimesですが、油断すると業務の話ばっかりになったり、投稿ハードルがあり投稿されなかったり、、うまく運用していくのがなかなか難しいものです。
そこで私がtimesでやっている様々な工夫を一挙に公開したいと思います。
開発組織の開発力、生産性を上げるために避けては通れないエンジニア一人ひとりの技術力アップ。
私がEMとしてここ数年考え実践してきたエンジニアの教育において必要な要素や考え方について整理して話します。
メンバーを教育する際に気をつけていること
エンジニア教育する際のマインド
レベルごとの教育スタンス(ティーチング、コーチングの使い分け)
教育にまつわる理論(認知特性やラーニングピラミッドを活用する話)
組織のエンジニア教育にミッションを持ち悩んでる人
エンジニアとして今後の成長方針に悩んでる人
教育に興味がある人
エンジニアに必要な個別技術の習得方法
エンジニアとしてどのような個別技術を学ぶべきか
先輩「この実装はどうしてこうなっているの?」
自分「ここは〇〇という理由でこうしています!」
先輩「了解です、その説明はコードコメントに書いておくとよいので追記お願いします~」
コードレビューを受けているとき、こんな経験はありませんか?
コードで表現できないことを説明したいとき、それを書く場所の候補はコードコメント、コミットメッセージ、プルリクエスト(説明欄やコメント)と多岐に渡ります。
「どこに書けばいいのかわからない!」そんなときの指針となるお話をします。
PHP によって書かれた一般的な Web アプリケーションはリクエストごとに独立したプロセスによって処理が行われます。
そのようなアーキテクチャは ISUCON の参考実装が提供されている言語の中でも異質です。
RoadRunner は Go 製の PHP アプリケーションサーバで、リソースをリクエストをまたいで使い回すようにでき、他の言語と近いアーキテクチャを実現できます。
これによって他の言語と同じ土俵で戦うことができるのか、は気になるところですが、それ以前にそもそも RoadRunner に載せ替えることはできるのでしょうか?
本セッションでは ISUCON 12 予選問題の PHP 実装を RoadRunner で動作させるために必要なことと、RoadRunner に載せ替えたことによって変わることを説明します。
テストコードの書き方について説明する資料等は世の中に充実しつつあります。
一方で具体的にテストコードを書いていく様子を説明、実演する資料というのはまだ数が限られています。
そこで今回はソフトウェアテストの領域でよく題材とされる「マイヤーズの三角形問題」の実装を取り上げ、
素朴な PHP コードからはじまり、テストコードを補いながら、ときにつまづきつつ、解くべき問題を捉えたコードへと洗練させていく過程を実演します。
同じPHPでも、単一ファイルでWebページを表示するのとフレームワークを使うのとでは書き方が大きく変わります。
みなさんは不思議に思ったことはないでしょうか?
フレームワークが動く仕組みを理解すれば適切な実装方法を判断したり、デバッグの際に役に立つでしょう。
本トークでは以下に示すフレームワークを取り上げ、index.phpを起点にフレームワークが動く仕組みを説明します。
みなさんはPHPからディレクトリを作ったことはありますか?
PHPには mkdir というファイルシステム関数があるため、ディレクトリを作成するのに困ることは少ないかもしれません。
しかしながら、パスの指定方法や実行タイミング、パーミッションの指定方法を正しく理解していないと、
mkdirでエラーが発生したり、思った通りのディレクトリが作成されなかったりします。
このトークでは、ラッパー関数を作成しながらmkdirだけでもどのような問題が発生する可能性があるのかをお話しします。
PHP現場に放り込まれた、右も左も分からないジュニアエンジニアがどうサバイブすればよいのか…を偏見で語ります
PHPエンジニア初心者が心がけるべき事を紹介します
「先輩」へのメッセージもあります
※ N個の現場経験を元にしており、特定現場の話ではない
※ もっと良い「先輩」がいればそちらを優先せよ
※ 「お前はそんな立派なの?」「自分を棚上げは『先輩しぐさ』の基本ですよ」
「 なんてこった!PHPウェブアプリ公開は何かと金がかかる!なんでかJS方面は無料が多いってのに!?」そんな嘆き声が聞こえてきます。どうですか?
「当たり前では?」と思いますが、やはり金はかけたくないと思う、リーンですよリーンスタートアップ。
あげく円安の時代、t2.microですら¥2000円弱/月かかる今、我々PHPerはどのように無料もしくは低料金でPHPを使えば良いのでしょうか…?
安くあわよくば無料でPHPウェブアプリを公開する縛りプレー(???)のテク紹介をしたいと思います。
副次的に、様々なPHP環境構築やサービスの紹介になる予定です。
コードのレガシーさには計測できるレガシーさと計測できないレガシーさがあると考えています。
私自身、計測できないレガシーさをうまく察知し、それを「コードの不吉な臭い」として感じ取るのは得意ではありません…。
しかし、
このような情報は各種ツールを利用することで計測できます。
計測した数値を活用することで「コードの不吉な臭い」が少しずつ見え、実際にどこに手を加えて改善・リファクタリングをしていくと効率がよさいか?という道筋が見えてきます。
本トークでは主にツールで計測できるコードのレガシーさに着目しながら、どのようにコードを改善していけるか?をお話しさせていただき、皆様のリファクタリング活動の一助となればと思っております。
DORAによる調査、State of DevOpsが定義し、書籍「LeanとDevOpsの科学」の広まりと共に浸透したFour Keysという指標は、ソフトウェアデリバリのパフォーマンスを示すだけでなく、組織そのもののパフォーマンスに因果関係があると知られています。
ところで、この「組織そのもののパフォーマンス」というのは一体なんのことなのでしょうか?
本トークでは、「組織そのもののパフォーマンス」を財務諸表の観点から眺めることでFour Keysとの関連性を考えてみようと思います。
■ 背景
サービスの管理用システムや社内専用システムはどの様にアクセスを制限していますか?
外部からアクセスができないよう会社のIPアドレス限定でアクセス許可を行う形が多いかなと思います。
しかし、これでは在宅勤務時など社外からアクセスできない弊害が……。
そこで、Google CloudのIdentity-Aware Proxy(IAP)を利用し、クローズドなサービスにどこからでも安全にアクセスできるようにします。
■ お話すること
・IAPを活用してサービスを守りつつ、安全にクローズドなサービスを公開していくための構成やポイントをお話します。
・IAPで認証されたことを前提に、パスワードレスで利用できるサービスとしたPHPのコードも交えてお話していきます。
■ 前提
・Google Cloudを利用した構成についてのお話です
・Googleアカウントを使った認証をベースにお話します
ISUCON は「いい感じにスピードアップコンテスト」の略で、ほぼ同様の処理をするよう作られた Web サービスの参考実装が複数の言語で用意され、参加者は競技中好きな言語を選んでその性能改善をしていきます。2022 年に実施された ISUCON12 の本選参加チームには PHP は使われなかったのですが、参考実装はきちんと存在しています。
このトークでは ISUCON12 本選問題の PHP 参考実装を使い、時間制限を気にせず、本選参加者の感想ブログの取り組みを平然とパクりつつ、PHP でどこまでスコアが伸びるか試した際の知見をお話します。
PHP はサービスをいい感じにスピードアップするのには不向きなのでしょうか。Go のような本選常連組の言語にはかなわないのでしょうか。それとも、本選で良い成績を残した他言語の参加者と同じ取り組みをすれば、同じようなスコアが出せるものなのでしょうか。
「オレオレフレームワークは忌むべきもの」ですが、昨今はライブラリや”設計”の浸透、PHPエコシステムの進化も進み、私見としては「禁忌する理由が減ってきた」という実感があります。
過去様々なオレオレフレームワークを作ってきた私の「令和5年最新版オレオレフレームワーク(仮称)」の設計をご紹介しつつ、私がオレオレフレームワークに取り組む理由である「既存のフレームワーク」のペインポイントと私がもつ”疑義”についてトークします。
同時に、なぜ過去のオレオレフレームワークが禁忌されたのか、ベタープラクティス・アンチパターン、「オレオレフレームワーク実行犯」である私の見解(≒自己弁護)もお話します。
さあ、再びフレームワークを我が手に
PHP の非同期処理ライブラリ Amp (https://amphp.org/) の入門記事です
豊富な非同期処理機能を持つ Amp を使い、簡易なアプリケーションを作る方法を紹介します
PHPerKaigiに参加される方の中には、またプログラミング経験がほとんどなく
これからPHPを勉強しようと考えているという方も多くいらっしゃると思います。
そんな方々へ向けて、Webアプリケーション開発に必須の知識である
データベースやSQLというものを、世界一分かりやすく解説します!!!
このトークのゴールは、
・データベースという概念をなんとなく理解すること
・簡単なSQLを自力で書けるようになること
です。
僕自身が初心者の頃にこういう説明をしてほしかった…と思うような
順序と言葉遣い、例示を用いて、初心者向けに本当に世界一丁寧に(当社調べ)解説します!
ぜひお楽しみに!!!
※データベース/SQLというものを全く知らない方に基本のキを腑に落としていただくことが目的のトークなので、
分かりやすさを優先して厳密さを多少犠牲にする場面があります。上級者の方はご注意ください。
.NETというとC#というイメージでPHPerにとってはあまり関係ないものと思っていませんか?
なんとPHPも.NETのランタイムで実行することができるんです!
PeachPieというオープンソースプロジェクトがあり、それを用いることでコンパイルしたPHPを.NETランタイム上で実行し、C#とPHPの相互運用が可能になりました。
このトークではPeachPieの紹介と、実際にPeachPieを用いて個人開発してみた際の知見や感想をお話しします。