全ての開発者が避けたいのが、デプロイ後に重大なエラーや問題が生じることです。そこで当セッションではリスクを抑制しながら、柔軟かつ効率的に変更を適用する手法として、リリースフラグとプログレッシブデリバリーの活用法をご紹介します。
まず、WEBアプリケーションのリリースフラグの導入と基本的な運用方法を解説します。その上で、リリースフラグを用いた段階的なリリース、未公開の新機能のテスト、使用者に対する新機能の公開調整等、安全で効果的なデプロイのためのタクティクスを実例を交えながら説明します。
次にプログレッシブデリバリーに焦点を当てます。ローリングデプロイ、BGデプロイ、カナリアリリースといった、リスクを分散して新機能を安全にリリースする手法の具体的な活用方法について解説します。
このセッションを通じて、参加者の皆様がデプロイに関連する課題に新しい解決策を見つけられることを目指します。
最近ではほとんど意識することなく文字でやり取りができていると思いますが、
例えば、時々何故か🙇と♂♀が分割してたり、「私の推しマークは🩵です、時々違う方がいます。気をつけてください」などと啓発しているアイドルさんだったりが居たりします。新しいiPhoneと古いスマートフォンなんかでよく起こったりするみたいですね。
これにはUnicodeがもちろん関係しています。
PHPはちゃんとUnicodeを扱えるのでしょうか?探ってみたいですよね?
本トークでは、PHPとUnicodeとの扱いについて追求していきたいと思います。
現代のWebではメールアドレスをIDとしてアカウント登録するサービスが多くあります。
メールアドレスをIDにすることの是非については現代では異論もありますが、なんだかんだといってまだ主流の方法といってよく、Webサービスの生命線と言ってもよいでしょう。
「そんなのフレームワーク使えばすぐ作れるでしょ」
……そう思って、素朴に作った私たちを待ち受ける運命をいっしょに追体験していきましょう。
現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。
このトークでは私たちが愛するPHPをスタート地点にして、「CPUによる"プログラム実行"」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。
コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!
みなさん、バランスとってますか?
世の中にはベストプラクティスやパターン、フレームワークが存在しています。
しかし残念ながら、それに従うだけではお仕事が進みません。
わかっていながらも、アンチパターンを取らざるを得ない状況もあります。
今日もどこかで誰かが、苦渋の決断をしてバランスをとっていることでしょう。
本トークでは、その「苦渋の決断」「バランスをとる」をするための考え方をお伝えします。
【要はバランス】と強い先輩たちは言いますが、その「要」にまとめられているのは一体なんでしょうか?
生活のなかから見いだした善・悪と正・邪を軸に、プロダクトの進化とバランスについて探りましょう。
対象は初心者・初学者の方や、どのようにクラスを分けたらよいのか決められないような脱初心者を目指す方を想定しています。
PHP は Web を主戦場として発展してきた言語で、Web 以外はあまりおすすめしないというような紹介がよくされます。
果たして本当にそうでしょうか?
自作のもの、他作のもの含めて世の中には熱いパッションを感じる色々なゲテモノがあり、どれもみな愛すべき非常に面白いものたちなので、この機会にじゃんじゃん大紹介します。
突然ですが、皆さんの現場のPHPはバージョンはいくつでしょうか?
PHP8.0も(カンファレンス開催時には)EOLとなった今日。
CIで静的解析やユニットテストが回り、デプロイは自動化され、Rectorでライブラリは常に最新、エディタはPhpStorm一択!といった現場ばかりではないのがPHPの現場ですよね。
現実には様々なしがらみからレガシィ化してしまったコードベースは存在していて、そんな現場で奮闘するPHPerもいるはずです。
このトークでは3年前、現場に配属された時に絶望していた自分に対して教えたいと思う明日から使える(かもしれない)取り組みを紹介します。
こんにちは。やまゆです。
みなさん、 new
してますか?私は、最近はあまりしていないです。なぜなら、インスタンス化はほとんど DI コンテナ に任せてしまうからです。お客様のプロダクトにも DI コンテナが含まれているのではないでしょうか?活用出来ていますでしょうか?
Dependency Inversion
、つまり 「依存性の逆転」 をすることで、より疎結合で柔軟性の高い設計を行うことが出来ます。
それを実現する Dependency Injection
、つまり 「依存関係の注入」 をするのが DI コンテナ
です。
今回は以下の内容を話してみたいと思っています。
2023年はコロナ禍から日常が戻り始め、様々なテックカンファレンスが開催されて、その楽しさや重要性を皆が再確認した年でした。それを受けて2024年は各地でPHPカンファレンスの開催が予定されています。
2018年と2019年に全国で開催されたPHPカンファレンスにおいて、紙の台紙を用いたスタンプラリー企画を私は実現しました。せっかくなので2024年もなにかやりたいのですが、台紙の用意やはんこの発注など面倒な作業が多いので、以前と同じ方法は取りたくありません。
そこでスタンプラリーをウェブサービスとして実装し、みなさんに使って頂くことにしました。PHPカンファレンス北海道2024はその初お披露目になる予定です。果たして快適に動作するのか、乞うご期待。発表ではその技術解説やインフラ構成についても話す予定です。
例外は投げるもの、そうおもっていませんか?
「PHPにおいて、例外は値である」
つまりは様々な事ができるはずである。先入観を捨てません?
ということで、禁書指定、あるいは私が糾弾されそうなトークをしてみたいと思います。
※ このトークは上級者・異端者向けです
みなさん、バグ調査は好きですか?新人の頃にバグ調査がなかなか上手にできなくて手間取っている間に、ベテランの先輩が鮮やかにやりとげるのを見て、落ち込んだ経験のある人も多いと思います。
このトークではPHPer歴そろそろ18年の私の、バグ調査の時の目の付け所・思考過程を解説することで、バグ調査が苦手な方向けにやり方とコツをお伝えします。
オブジェクト指向プログラミングにおいて重要な概念となる「SOLID原則」 。
本セッションでは、自分が違反して書いてしまったコードを例に、SOLID原則を紹介していきます。
多くの書籍でSOLID原則に関する具体例が示されていますが、このセッションでは「実際の失敗例」を通じてSOLID原則を理解していただこうと考えています。
自分がミスってしまった実装例を、時間の許す限り赤裸々に公開します!!
このトークではシステム開発用スマートウォッチ的なものの話をしたいと思います。
健康を求め、私たちはジムに通うなどします。そして、体重、心拍数や消費カロリー等を測って成果あるいは体調を確かめます。そう、私たちは自身ことを思いの外わかっていないのです。だから私たちは測ります、私たち自身を。そして、メニュー、頻度、強度を変えるなど、習慣を見直すことでなりたい自分を目指します。
システム開発も似ています。「事業を成長させたい!ガシガシ開発を進めたい!」私たちは願い、勉強したり、開発プラクティスや技術を導入するなど工夫します。でも実際のところうまくやれているのか、私たちにはわかりにくいものです。だから私たちは測ります、私たちの活動やシステムを。
このトークでは、Four Keys等を用いてどのように可視化を進めたか、何が分かり、習慣をどう見直し、開発における体験がどう変化したかを共有します。
リーダブルコードでは、このような定理が紹介されています。
「コードは他の人が最短時間で理解できるように書かなければいけない。」(Dustin Boswell リーダブルコード P.3 より引用)
皆さん、めちゃめちゃに長いSQLや、サブクエリのネストが深すぎて眩暈がするような難解なSQLを読んだことがありますね? 書いたことがありますね? 僕は、あります。
そこで、本トークではどうしたらリーダブルなSQLが書けるかというアイデアを紹介します。
コードの問題点は見た目には分かりにくいことがあります。
知らず知らずのうちに悪いコードが増え、気付いた時には『レガシーコード』と呼ばれるような状態になっているかもしれません。
そこで、問題点に気付くための1つの方法として、コードを計測する方法があると考えています。コードの計測によって得られる情報は多岐にわたり、コードのサイズ、重複コードの有無、コーディング規約の遵守状況、循環的複雑度、エラーの有無などが含まれます。これらの情報を分析することで、コードの状態を知ることができます。
ただし、計測した数値は必ずしもそれ単体で問題点を示す訳ではありません。そのため、他の数値と組み合わせたり、実際にコードと対比して判断・行動することが重要です。
本トークでは、特にコードをツールで計測することによって得られる結果に着目し、コードの改善にどのようにアプローチするかをお話しします。