40代半ばで技術コミュニティに初めて出会い、10年前からJAWS-UGおおいたの運営をやってきました。
地方で感じる「技術的に取り残されるのでは」というモヤモヤ感がきっかけでしたが、結局は、日本中の「個性豊かな人々」との出会いが楽しくて続けてきました。
そんな中、コロナの影響で前職のスタートアップのビジネスが頓挫し、早期退職することになりました。
普通50代半ばで職を失うと、悲壮感が漂うはずなのですが、「不安はあるが何とかなるだろう」と楽観的に落ち着くことができました。
これは、コミュニティを通じて、「外の物差し」で自分自身の強みと弱みを知り、強みをいかせば何とかなるだろうと思えたからです。結局はコミュニティの友達がFacebookで投稿した求人情報をもとに、現在のお仕事に就くことができました。
コミュニティ活動は老若男女全てのエンジニアにとって将来役に立つことを伝えたいと思っています。
約4年の歳月を経て弊社プロダクトのFuelPHPからLaravelへのリプレースが完了しました(発表までには完了している予定!)。
完了までにリプレース失敗や負債・複雑性を生み出してしまいました。
本トークではそれらを回避するにはこうした方が良かったなーと思うことをサクッと5つご紹介します!
リプレースプロフェクトを直近で開始される予定の方、あるいは初期フェーズの方のお役に立てるかも?
あるいはリプレースあるあるとしても聞いて楽しんでいただけるかもれません!
私はこれで何を伝えたいかというと、今でもレベルは高くないですが振り返るといろんなことを学んで年を経るごとに視野が広がって段々と学び方が増えてったこと、もう満足だろうと思ったら新しい世界が見えてきて考えてもみなかったことが増えていったこと、これからも楽しい経験が待っているだろうと言うのを伝えていきたいと思っています。
この業界に入ろうと思った最初の頃はIPアドレスですらなんのことか分かりませんでした。初めて入った現場でフレームワークも業務への入り方も分からず悔しい思いをしました。その時に思ったこと、何をしてどんな壁を乗り越えたのか、なんの勉強をしたのか、勉強や業務で面倒だったことはなにか、勉強する内容の変化、仕事の内容の変化、仕事で関わる仲間との交流での自分の変化を中心にお話ししたいと思います。
このトークでは、OSSから学ぶ方法について話します。
学習のためにOSSに触れるとよいと聞きますが、言うは易し行うは難し、学ぶことにもハードルがあると感じたことはありませんか?
私は丸腰ではコードが読めません。環境を整え、道具を駆使して、少しばかり工夫しながら読み進めてゆきます。このトークでは、PHPStanの並列処理を題材に、一定複雑な処理がどのように実装されているのかを紐解いてゆく過程を見てゆきます。
チュートリアルの次のステップとして、既に稼働実績のある実用的なコードから学ぶことで実践力を高めようという試みです。
このトークではOSSから学ぶことのハードルを下げることを目指します。スキルアップへの引き出しが一つ増えれば幸いです。
実行中の PHP スクリプト内の各要素は、それぞれがメモリ上に何らかの領域を占有しています。ローカル変数のための領域、配列の各要素やハッシュテーブルを収めるための領域、文字列のための領域、オブジェクトやそのプロパティを収めるための領域。実行中に様々な領域が確保され、そして不要になると解放されたり、意外とスクリプト終了まで解放されなかったりします。
PHP には標準の組み込み関数として memory_get_usage() や memory_get_peak_usage() といった関数があり、呼び出し時点でのメモリ使用量や実行開始からのピーク値を得ることができます。しかし、これらを呼んでも「どこで」「何が」「何バイト」メモリを使っているかまでは追えません。
このトークではスクリプト内の各要素について、処理系内で何がどうメモリを消費するかを時間の許す限り1つ1つ手当り次第に解説します。
プログラムの本質的構造を示すAST(抽象構文木)に変化がなければテストを省略できる場合があることに着目し、ASTのハッシュ値を比較することでPHP 8.1からPHP 8.2にバージョンアップする作業の一部をスムーズに進められることが分かりました。ASTを取得および比較する方法や、事前に行った対象箇所の特定およびファイル更新方法などに関する具体的な手順や使用したソフトウェアを紹介しつつ、ASTがPHPのバージョンアップ時にも役立つことを解説したいと思います。
テストコードを書いていますか?
テストを書いた方が良いと誰しもが思いテストを整備していると思いますが、中にはテストコードを書く時間が作れない、意味を理解してくれない、テストコード実装の優先度が下がる、様々な理由でテストコード実装が出来ていない現場もあるかと思います。
今までテストコードを書かなかった開発現場が、テストコードを整備し開発・運用面・リリースの状況が変わった話や、効果を数値化した話、社内でテストコード導入を広めていくために沢山の手段の中からテストコード研修を実施するに至った話をします。
8年運用しているPHPアプリケーションをリプレイスするのにあたって、目的整理とチームに向き合い、奮闘と決断した話をします。
長年運用しているサービスの技術負債を解消しきれず、リプレイスを検討している方へサポートになれれば幸いです。
みなさんは動画編集をやったことはありますか?
動画編集とは元来めんどくさく手間がかかるものではあるのですが,普段からWebアプリの開発をしている私は,以下のようなことを考えていました.
HTML/CSSのように複数オブジェクトを一つのコンテナのように扱えたら,CSSのように統括して装飾を指定できたら,HTMLレンダラーが相対値から計算して値を指定するように,動画のオブジェクトの時間長も編集アプリが計算して指定してくれたら,もっと楽に動画編集できるのになぁ,と.
そこで私は,HTML/CSSをベースとした,動画の構成を記述する言語を記述することで動画編集を行えるという技術を開発しました.
↓以下の記事でも紹介しておりますが,ここからの進捗についても発表したいと考えております.
https://qiita.com/PigeonsHouse/items/7e3a3c4ed8473a61f4ac
プログラマーとして生きていると、仕事をする中であるいは日々の生活の中で、ちょっとした自動化のためにスクリプトを書くことがあるでしょう。
そういったスクリプトはすぐに使い捨てるつもりだったり、あとで修正することもなかったりするかもしれません。
このとき、みなさんは「最低限の品質」をどこに置きますか?
いざ、ぱっと聞かれると返答に困るような質問かもしれません。
私のなかではある程度の基準があります。
本トークでは「ちょっとした自動化のためにパッと書いたスクリプト」をいくつかのレベルに分けて、どこまで作り込むかの観点と判断基準の一例をお見せします。
PHPerKaigi 2024で一千を風靡したPHPer向けゲーム、「PHP8.3秒チャレンジ」の企画や開発の裏話をします!
PHP 8.3秒チャレンジとは、PHPの最新版である8.3をみんなで目指そうというコンセプトのストップウォッチゲームです
8.3秒ぴったりに止めるという至ってシンプルなゲームですが、通常のストップウォッチと異なり、途中から数字が消えてしまうので目押しはできません
このゲームをPR TIMES企業ブースで展開したところ、現地でXでも大変盛り上がりました!
本セッションでは以下の観点から裏話をお話しする予定です!
このトークは、イベントで何かブラウザを使った出し物をしたい方の参考になることを目標としています✨
PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。
本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。
以下を満たす方が聴講することを想定します。
少し前にパスワードにまつわる「ハッシュ」と「ソルト」という言葉が話題になりました。
また「平文で保存していたパスワードが流出する」といった事件もたびたび耳にします。
パスワードの扱いについては、Web アプリケーションフレームワークを使っていればあまり意識することは無いかもしれません。
実際、意識しなくてもフレームワークがよしなにしてくれます。
でも、いったい「ハッシュ」や「ソルト」とは何なのか?
上述のような事件を起こさないよう、アプリケーション開発者としてしっかり押さえておくべきポイントをお話します。
カンファレンスは役に立って、刺激を貰えて、楽しくて…最高ですよね!?
そんなカンファレンスですが、職場の同僚を誘えると、共通の話題ができたり、技術力の底上げになったりと、もっともっと価値あるものにできます。
私は実際に、PHPカンファレンス関西で職場の同僚を5人カンファレンスに連れてくることに成功しました。
その経験を元に、同僚をカンファレンスに連れてくるためのあの手この手を伝授します!
想定する聴衆
・会社からソロでカンファレンスに参戦している猛者(昔の自分)
・同僚にもっとカンファレンスに興味を持って欲しい方
・裾野を広げてカンファレンス全体を盛り上げたい方
「いいコードを書けるようになりたい?3回リファクタリングしてやっとかけるようになるよ」的なことを言われたことがあります。
いいコードを書くには多くの場合リファクタリングが不可欠ですが、そのコードが本番で動いていると、修正するには当然リスクが伴います。
今回は過去の自分が書いたコードをリファクタリングする際に、テストコードがどのように役立ったのか・どのようなテストがあると(あって)よかったのかを事例をもとに解説します。
ターゲット:
あなたは、そのテストコードを信じ、リファクタリングの世界にダイブできますか?
カンファレンスに参加した!
参加するまではドキドキでも終わってみたら楽しかったな!と感じるのではないでしょうか??
ただ、みなさんからいただいた熱量をもって明日以降に活かすぞ!と意気込むのですが、何からやっていけばいいのかな…と悩んでしまうこともあると思います。(カンファレンスなどに参加したてのわたしもそう思っていました…)
でも、ほんの少しのアクションをするだけでも明日以降のモチベーションや次回以降の参加につながる!と最近は思っています。(本当にささいなアクションでよいのです!)
本トークではわたしが実践しているささいなアクションを紹介しつつ、「今日は楽しかった!」と感じていただいた方が明日から先にも続いていくカンファレンス人生をより楽しんでいただくためのヒント(になって欲しいこと)をお伝えしたいと思っています!
開発時に厄介なのはバリエーション。
PHPerは日々フレームワークごとの違い・バージョンごとの違い・データベースの違い・クラウドインフラの違いといった純粋に技術的なバリエーションに悩むこともあれば、複数の異なる配送業者・複数の異なるAPI接続先・複数の異なる計算方式といった要求・要件のバリエーションにも悩んでいることでしょう。
このバリエーションへの対処法を整えることでエンジニアとして強くなる方法をお話します。
依存パッケージの更新はしていますか??
小さくコツコツ手をつけておけばよかった…そんな気持ちになることもあるかもしれません。。
日々降ってくる、マイナーバージョン・パッチバージョンの更新を適応するのは大事です。
メジャーバージョンがあった場合はどうでしょう??
依存パッケージ間の依存関係があるなど、マイナーバージョン・パッチバージョンの更新と比較して、複数のパッケージの同時更新が必要だったりもします。Renovateがプルリクエストを出してきたが、エラーになってそのままマージにならない…なんてこともあったりします。
本トークではパッケージを更新するコマンドであるcomposer updateをおさらいしつつ、何ができるか?何が起こるか?を確認しながら、今一度パッケージのバージョンアップについての手順やはまりポイントについてお話ししたいと思っています。
今までバッチ処理について雰囲気でやってきていませんか?僕は少なくとも雰囲気でやってきました。
もちろんバッチ処理なしで実装できるに越したことはありませんが、運用としてすでにそうなっているところも多いのではないでしょうか?
実際そんなに困ることねーし・・・!とそう思っていたそのとき!困る時がやってきます・・・。(震え声)
基本的にバッチ処理を避けた方が良いパターンについて言及しつつ、バッチ処理が必要な際にどのようなことを考えれば良いのか?どう見直す道筋を立てるのか?
TechTrainで実装するときに失敗したな・・・。と思った経験を踏まえてお話しします。
対象者
みなさんご存知のように、2024年は毎月PHPイベントが開催されるほどPHPコミュニティが活況を呈しています。私はそれに合わせて、2019年以来久々に「日本PHPカンファレンススタンプラリー2024」を実施しています。今年は台紙とスタンプという物理媒体ではなく、ウェブサービスとして電子的なスタンプラリーを実装し、それに関する発表もPHPカンファレンス北海道2024で行いました。その際の実装はPoC的なものでしたが、福岡ではおそらく本サービス実装になっていると思われます。本LTではその本番実装についてと、それまでのスタンプラリーの利用具合について発表します。