弊チームでは先日、15年来のレガシーシステムを、バグ0でリプレイス&新機能の追加リリースを実施することに成功しました。
その際、オリジナルの検証手法である「ペンギンテスト」をはじめ、シャドーテスト、カナリアリリース、ダークローンチ、フォールトマスキングなど、
多彩な手法を駆使することで、リスクを最小限に抑える「安全に倒し切ったリリース」を実現することができました。
特にチーム発案の「ペンギンテスト」は、本番環境で実際のデータを使いながらもユーザー影響は出さない、
あらゆるパスを網羅した見落としのない検証を実現する有用な手法です。
この「ペンギンテスト」をメインに、どのように予期せぬトラブルを未然に防ぎ、
計画通りのリプレイスを成し遂げたのか、その実践的なプロセスについて詳しく解説します。
他のプロジェクトでも応用可能な知見を共有しますので、レガシーシステムへの手入れを検討している方は必見の内容です。
「フレームワークに依存するなと言っても、フレームワーク移行なんてほぼ起こらないのでは?」
そう思っていた頃が私にもありました。では、いま使っているフレームワークが開発停止になったらどうしますか?
かつて、symfonyはv1.4で開発を停止し、Symfony v2.0という名前で全く新しいフレームワーク(Symfony v2〜最新のv7は連続性があり、v1のみ別)に生まれ変わりました。
維持されたのは名称とMVCアーキテクチャベースであることだけ。使い方も、考え方も大きく変わってしまいました。当然、symfony v1を使ってアプリケーションを開発していた世界中の開発者は大混乱。
「ほぼ起こらないのでは?」と言われつつも、私がフレームワークに依存しない開発を求めてしまう原動力となっている当時の大混乱をふりかえり、フレームワークに依存しないことのメリット・デメリットと現代でのやり方についてお話します。
スクラム開発において「振り返り」と「スプリントゴール」は、単なるイベント以上の意味を持ちます。これらを形骸化させず、しっかり活用することでチームのパフォーマンスは大きく向上します。
本セッションでは、振り返りを通じて課題を具体的な改善アクションに変える方法や、スプリントゴールを設定する効果を説明します。
これらを実現した現場での成功例や失敗例を交えながら、スクラムの本質的な価値を掘り下げ、明日から実践できる具体的な方法論をお伝えします。スクラム開発を採用してもしていなくても、このセッションを通じてチームの開発プロセスを改善することができるでしょう。
サービスを作る上で、維持費と収益を獲得できるかどうかは、非常に重要な要素です。
StripeのDeveloper Relationsとしてユーザーや社内のプロジェクトに関わった経験と、
前職や個人開発におけるマネタイズに関する経験と想いを元に、ウェブサービスを開発する際のマネタイズ手法や料金モデル、そしてリリース後に発生しがちな請求管理に関するアレコレを紹介します。
トピックの例
・初期フェーズで決済・サブスクリプション機能の開発をやるべきか否か?
・開発工数と売上は比例しない話
・本当にあった、サブスクリプション請求管理で頭が痛くなる話
コンパイルの世界では、中間表現というアイディアが存在します。
ソースコードを任意のデータ形式(中間表現)に変えてから、コンピュータが理解できるデータ形式(機械語)へ変換するというアイディアです。
一気に機械語へ変換するよりも、無駄な計算を省いたり複数フォーマットへの変換処理を効率化するなど効率化の恩恵をもたらします。
PHP8.0でJITによる高速化が導入されましたが、8.4では中間表現のアイディアを採用することで、さらなる高速化を図る変更が行われました。
https://wiki.php.net/rfc/jit-ir
中間表現を実現するにあたって、新しいフレームワークIRを使ってJITを実現しています。
https://github.com/dstogov/ir
このフレームワークでは、一体どのようにして中間表現を実現しているのでしょうか?
本セッションでは、まずJITと中間表現の基本概念を説明し、その後、PHP 8.4で導入されたフレームワークIRの詳細を解説します。
JITフレームワークIRを解説していくなかで、PHP8.4に導入されたJITでの中間表現について理解を深めていきます。
オブジェクト指向を学ぶ私たちは、必ず一度は「SOLID原則」に触れる機会があると思います。
私も何度も学習を重ねる中で、その原則がもたらす恩恵や、守ることの重要性を徐々に理解してきました。
…ただ、「リスコフの置換原則(LSP)」だけは「これを守るとどう良いのか?」がいまいちしっくりきていませんでした。
「同じ気持ち!」なあなたに向けて、このセッションでは、以下のようなお話をします。
・LSPとは何か?よくある例と「なぜピンとこないのか」
・実際に私が遭遇したLSP違反の具体例
・LSPと"継承"の関係性をしっかりと理解する
「なるほどLSP完全に理解した!」といってもらえるようなトークにします!