全ての開発者が避けたいのが、デプロイ後に重大なエラーや問題が生じることです。そこで当セッションではリスクを抑制しながら、柔軟かつ効率的に変更を適用する手法として、リリースフラグとプログレッシブデリバリーの活用法をご紹介します。
まず、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年前、現場に配属された時に絶望していた自分に対して教えたいと思う明日から使える(かもしれない)取り組みを紹介します。
「標準的なバス情報フォーマット(GTFS-JP)」オープンデータ(一部条件付き公開データ含む)を活用した無料の時刻表情報サービス「バス時刻検索」(CakePHP使用)を2022年9月に新規公開し運営しています。
素材のGTFS-JPデータを毎日ダウンロードし、更新を検知時に加工しDBへ取込みを行いますが、基本的にPHPプログラムで行っています。
今回は、毎朝最新版が公開されるバス会社もあり、更新データ量が大きく、DBへ反映が高負荷な状況にどう対処しているか?についてお話する予定です。
◇参考情報:ある日の都営バスGTFS-JPデータ(全国でも大きめ)は毎朝4時台に更新される上に、そのテキストファイル15個のサイズが計「79.7 MB」もあり。
(100万行越えのファイルもあります!)
その他、予期しないエラーや問題等をどのように解決したか等を語ります。
Laravelでどのように書くと脆弱性のある書き方になるのかを実際のコードを交えて解説します!
主に下記の脆弱性について話そうと思っています。
・XSS
・CSRF
・SQLインジェクション
・OSコマンドインジェクション
など
拙者、いわゆるマイクロ法人。複数の現場に片手片足から突っ込みまして、主にクラウドインフラ関連箇所を手伝っております。
そんな自分が、比較的最近で遭遇してきた難局、それらをどう切り抜けてきたのか、はたまた妥協してきたのか、といった事例をお話しします。
現時点(2023/9/11)では、以下のような経験をお話しできます。
複数あるファイルの中から、いくつかのファイルを選択して、ZIPファイルとしてダウンロードしたい。
ZIPファイルの生成パターンは膨大であるため、その都度生成する方針にしたい。
そんな、”ファイルを選択してZIPダウンロードする機能”を 3 つの Lambda + S3 + DynamoDb で作りました。
本トークでは、このZIPダウンロード機能を実装するにあたり、AWSのサービスを使ったアーキテクチャや直面した課題などについてお話します。
どうですか?社内イベント、開催してますか?
エンジニアとして生まれたからには様々な社内イベント開催のチャンスがあるかと思います。
LT会や勉強会、輪読会や懇親会……
でもどうやって開催したらいいんでしょう?何を、いつまでに、どのように進めたら?当日はどうする?
本セッションでは、私が社内イベントの運営や司会進行を数年務めてきた中で、
得たノウハウや個人的に大事にしている価値観についてお伝えできればと思います。
皆で楽しく円滑な社内イベントを作り上げていきましょう!
ぜひ聞いてほしい方
社内イベントを開催してみたいけどどうしたらいいかな……と悩んでいる方
社内イベントを開催しているけどなかなか上手に進められない方
※トーク内容の大半は社内/社外を問わないものとなりますが、
社外イベント特有の観点について扱わないため今回は「社内イベント」に限定します
PHP Conference Hokkaido 2024 では冬の上川南部を巡る雪原開発旅行を提案します.
厳しい冬を物ともせず就航率99%を誇る旭川空港を起点に,ゆとりある2泊3日の旅程をお楽しみいただけます.
富良野市,南富良野町,占冠村,富良野市,中富良野町,東川町,東神楽町,旭川市を巡ります.
この旅では,各地の雪原があなたの開発環境です.荘厳な山々,凛とした湖と心が通じたとき,かつてない閃きが舞い降りることでしょう.
疲れた身体はどうなりますか?
ご安心ください.旅程には癒しも組み込まれています.天然温泉の力を借りることで,より高速で優雅な開発が実現可能です.
家での退屈なリモートワークを抜け出して,上川の冬を満喫し,生産性を向上すべきです.
北海道≒札幌——誤った認識は今すぐ捨てましょう.179の市町村があなたを待っているのですから.
(実践したものを LT します)
こんにちは。やまゆです。
みなさん、 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が書けるかというアイデアを紹介します。