「このページ、なんか遅くね?」の犯人はヤス(仮名)によるヒューマンエラーと、MySQLとPHPにあるアイツでした。
皆さんは表示の遅いページがあったらまず何を疑いますか?Javascript?サーバー?そんなとき、RDBのMySQLも疑ってみましょう。ときにはクエリの数文字を変更するだけで大きくパフォーマンスが改善することがあります。
このLTでは、ページの表示を遅くするMySQLのスロークエリ、そしてその原因となる、インデックスと暗黙の型変換についてお話しします。
トークの目的
①PdM・Biz職の方:実力のあるエンジニアとの仕事で自分なりの価値をどう発揮するのかについて、ヒントになることがお伝えできればと思います!
②エンジニアの方:日々のPdMとのやり取りに活かせるような、PdMの視点・悩みをお伝えできればと思います!
トークの概要
・私は2022年4月に新卒入社し、新卒1年目、かつPdM・エンジニア等の経験なしでPdMのポジションで仕事をしていました。(CS出身)
・私が所属する株式会社リンケージでは、プロダクト価値の最大化を考えられる、課題解決能力が高い、「強い」エンジニアが集まっています。
・私はエンジニアの方々と仕事をする中で、「自分がいる意味ある?」と非常に悩んでおりました…(今も悩んでますが)
・本トークでは、「機能を考えない、Whyを考える」など、私なりに見出したPdMとしての価値、及びそこに至るプロセス・悩みをお話します!
このトークでは、10年以上にわたり運用されているサービスにおけるPHPフレームワークの進化(FuelPHP 1.8.2からFuelPHP 1.9-devへの移行)とPHPのバージョンアップ(PHP 7.3からPHP 8.1へのアップデート)の戦略について語ります。
プロジェクトマネジメントと技術の観点から、ソフトウェアのバージョンアップを成功させるための「プロジェクトをリードする上での力学」や「バージョンアップにおいて有用だった技術的アプローチ」について具体的にお話します。
FuelPHPを使っている方はもちろん、それ以外のPHPフレームワークを使っている方も対象に、PHPフレームワークとPHPのバージョンアップの知見を共有します。
様々なトレードオフやハードルを乗り越えるために、どのように計画し、アプローチしたかをお話します。
PHPは特にWeb開発に適した言語とされ、筆者はバックエンドの実装に用いることが大半でした。
ではPHPが向いていない処理や、ネットに先行事例がない用途の場合はどのように実装すればいいのでしょうか?
その疑問を解決すべく、このトークではネットに先行事例のなかった「オレオレ」ソフトシンセ(CPUによって音信号を合成するソフトウェア)をPHP(とC言語)で自作しました。
この「オレオレ」ソフトシンセを用いて、当日はライブデモを行い蛍の光を演奏します。
このトークを聞くことで、一般的にPHPプログラムでは実装されないようなソフトウェアをも実装することができ、あなたの今後のPHPerとしての可能性を広げることができるでしょう。
対象の方
アウトライン
「Nginxってどんなものなんだろう?」「Webサーバーってどうやって動くんだろう?」―こんな疑問を持つあなたに捧げる、Nginx入門者向けのLTセッションです。
このLTでは、Nginxの基本的な概念から始め、基本的な設定の読み方について紹介します。
対象者
話すこと
みんな大好きComposer、いつも色んなパッケージを持ってきてくれますよね。
「言われたものを持ってきてくれる」ということは、
「そのパッケージがあるか」「今の環境等に対応しているか」「どのバージョンが良いか」「新しく取得する必要があるか」「どこにあるか」「どこに配置するか」を解決している事を意味します。
これらの情報は、
を再帰的に読み解いていくことで、整合性の取れた情報を組み立てています。
仕組みを知ることで、少し便利に感じたり、トラブルシュート力が上がるかも知れませんね!
ということで、composer install
の実行時の動作を例にして、
「どこからどんな情報を取得しているか」「どういう順番で処理を進めているか」の概要を説明します。
具体的なロジックは実際にソースコードを読んでもらうことにして、
本記事では登場人物と役割(持っている情報の範囲)、シーケンスに触れていきます。
PHPの基礎的なコーディングは出来る、まだまだ「独り立ち」への道は半ば、最近「良いコード」に興味を持ってきた!
そんなphperが対象です。
さて、「リファクタリング」というものがあります。
すでに書いてあるコードを、「振る舞いを変更せずに書き換える」活動だと説明されます。
「経験を積むほどに、コードを書くのは上手くなる」という命題は真だと思いますが、
「1発で綺麗に書けるようになる」とはならないのです。
それどころか、「書き直す」のが当たり前になっていきます。
もっと言えば、「リファクタリングを欠かせず実施できる!」というのは、中級者としての要件と言えるかもしれません。
ただし、最初は怖いかも知れませんよね。
「いつ・どんなコードに対してやれば良いのか分からない」「やり方がわからない」というのが、
怖さを増やしているのではないかと考えています。
そんな問題に対抗するべく、この記事では、「初めてのリファクタリング」をテーマに、
最初の1歩を踏み出すための武器を提供します。
一緒に「めちゃ長ぇメソッド」を飼い慣らしていきましょう!
PHPには、複数のエラーがあります。
「復旧不能な致命的なエラー」「復旧可能な致命的なエラー」「継続的なエラー」が主役です。
「例外」もいますね。
発生のタイミングで、PHPの起動時やコンパイル時だったり実行時だったり…と複数のパターンがあります。
そして、それをハンドリングするための機構、エラーハンドラーがあります。
更に、エラー制御演算子 @
があります。
こう書いてみると、割と色々なものが入り組んでいるんだな〜と思いませんか?
とはいえ、PHPの経験をある程度積んだアプリケーション開発者であれば、身体で覚えているようにも思います。
しかし、PHPにとって「エラー」って何なのでしょう?
エラーが起きた時に、何が起きて、どういう処理をしているのでしょうか?
@
を付けたら「エラーが出なくなる」、なぜ? 制御の対象はどこまでなのか、どういう挙動の変化があるのか?
PHPの気持ちになって考えてみたいな、と思いませんか・・・・?
そこで、php-srcの読解やPHPコミュニティで公開されている各種ツールの利用により、
「エラーって何だろう」を自分の目で見ていこうと思いました。
本記事は、その調査結果です。
@
の仕事私はこれまで幅広いキャリアを歩んできました。経歴としてはSES企業/Web系自社開発の上場企業/フリーランスエンジニア/起業/Web系受託開発企業/スタートアップ企業/プログラミングスクール講師/地方移住などです。
その中で得られた経験などを元にエンジニアとしてどのような選択肢があるのか?というお話をできればと思っています。
主に話す内容は下記になります。
1.何故キャリアのゴールを決めた方が良いのか?
2.日本と世界におけるエンジニア市場の違い
3.これまでの自分のキャリア
4.他のエンジニアのキャリアモデルケース
5.どうやったら、ユニークな人材になれるのか?
6.自分に合ったキャリアの最適解を決める方法
7.実際、エンジニア出身経営者としてキャリアを歩んでみてどうだったか?
私は以前に海外の人に仕事を発注するオフショア開発の案件でPMを担当した事があります。その際に学んだことをお話できればと思います。
話す内容は下記になります。
私はPHPカンファレンス沖縄の実行委員長を務め、カンファレンスの立ち上げを行いました。
その経験を元に地方でPHPカンファレンスを主催すると楽しいよ!という話をします。話す内容は主に下記になります。
テストコードを書いていますか?
テストを書いた方が良いと誰しもが思い現場でテストを整備していると思いますが、テストコードを書いた事でどんな効果が生まれるのか向き合った事はありますか。
また、エンジニア間であればテストコードへの大切さや取り組む意義について共通認識を持てている現場は多いと思いますが、
エンジニア以外の職種や事業決済者へ、テストコードの効果を理解してもらう事に苦労したことはありませんでしょうか。
今までテストコードを書かなかった現場が、主にPHPUnitによる沢山のテストコードが整備されたアプリケーションを立ち上げた時、開発・運用面・リリースの状況が変わった話や、効果を数値化した話をします。
テストコードを整備していく工数(コスト)も忘れてはなりません。その上で効果や恩恵を算出していきます。
効果測定した項目
テストコードの普及がなかなかできないチームや、今後テストコード整備に取り組んでいきたい方の参考になれば幸いです。
皆さんはリリース後に文字化けが発生して、道頓堀に飛び込みたくなったことはありますか?
私はあります(※)。
PHP8.2の下位互換性のない修正の1つにmb_detect_encodingの文字コード検出の仕様変更があります。
私が担当しているメール共有サービスのメールディーラーで、バージョンアップ後に一部の受信メールが文字化けをしました。
原因は受信したメールのエンコード時に、前述のmb_detect_encodingを使っていたことです。
下位互換性がないPHPの仕様変更だったため、文字化けを回避することができませんでした。
その結果、メールヘッダに文字コードの指定がないRFCに準拠していないメールまで対応することとなり、大変苦労しました。
メールディーラーの保守運用・顧客対応チームのリーダである私が、顧客対応で泣きをみたことを中心に苦労した経験をお話いたします。
私と同様に顧客対応されているエンジニアの方々の参考になれば幸いです。
※道頓堀は大阪市中央区の繁華街である通称ミナミを流れる川の略称。
阪神タイガースの優勝やサッカー日本代表がW杯で勝ったとき、
年末年始のカウントダウンなどのイベント時に、
グリコの看板がある戎橋から道頓堀川に飛び込むことがある。
実際には私は飛び込んでいません。
静的解析ツールは使っていますでしょうか?
昨今のPHPのバージョンアップでは型定義が厳しくなってきており、静的解析ツールを導入することの優位性が高まってきています。
15年以上続いているレガシーシステムにPHPStanを導入した際の課題と効果について紹介します。
・既存の静的解析ツールからPHPStanへの移行
・PHPStanの導入時の課題
・導入から半年での効果と課題
既存の静的管理ツールに課題を感じている方や、静的解析ツールを導入したいと考えている方にとって参考になる内容となっています。
※ PHPConference関西2024と同じ内容になります。
SI業界で小規模から大規模開発まで一通り経験し、管理職もこなしてきて、経験値だけは十分に積んだと思っていた私が、SaaS業界ではその経験値を生かすことができたのでしょうか。
SaaS会社でテックリードとして転生した私が、開発視点からマネージメント視点等いろいろな気づきをお話します。
・開発フローやシステム開発の考え方は同じなようで何が違う?
・プロジェクトマネジメントではなくてプロダクトマネジメント
・SI業界の経験値は結局生かすことができたのか?
しばらくPHP界隈から離れていたPHP5上級認定技術者資格者が、久しぶりにPHPの世界に戻ってくると、浦島太郎になっていました。
浦島太郎になって改めて学びなおしたポイントは、これからPHPを学ぼうとしている人や、他の言語からPHPを触ることになった人にもきっと活かせるはず。
PHP5の時代の苦労話も織り交ぜながらお話したいと思います。
・変わっていて驚いた言語仕様の変化
・PSRって何?
・外部ライブラリの使い方
・他の言語とごっちゃになってしまったポイント
古くからあるサービスには、機能強化とともにサブシステムが増えていきました。
最初は良いけれど、
・検証サーバーは共用だったり、個人毎だったりバラバラに存在
・共用サーバーには、交代して使用する為に待ち時間が発生
・複数の人が使うので、テストデータがぐちゃぐちゃに
・サブシステムが増える度にサーバーも増えてくる
・当然、ソース修正や管理、デプロイもややこしくなる
というような問題が、だんだん見えてきました。
では、この問題の改善にチャレンジしよう!とは言いつつ、
「今まで使い慣れたエディタやリポジトリ構成、開発の流れは変えたくないよ」という声もあります。
さて、どの様に改善していったでしょうか。
・Dockerで共用サーバーを廃止して、メンバー毎の環境を整理しましょう
・コンテナ環境でも今まで通りPhpStormで開発作業ができるようにしましょう
・ユニットテストもうまく連携しましょう
※この内容は、PHPConference関西2024と同じ内容になる予定です
「良いサービス」とはなんでしょうか。
たくさんの要素があると思います。
このLTでは「接客態度」に焦点をあて、
自称クレーマーな私の実体験
・オンライン/オフライン それぞれにおける接客で 嬉しかった/嫌な気持ちになった話
・自社サービスは接客力が上がれば友達に自信を持って紹介できるのに!と感じた話
・自社サービスの接客力が上がった結果、仕事へのモチベーションが上がった話
を通じて、
「良いサービスを作る」という重要な課題に向き合う5分間を提供します。
●●●LTを聞くメリット●●●
開発をする際に、利便性や速度、正確さだけでなく「ユーザがどう感じるか」という視点を、新しく持つ、もしくは当たり前に持つことができるようになります。
●●●対象者●●●
・自社サービスのユーザとご自身との関わりが少ない方
・自社サービスをユーザとして使ったことがない方
・システムやコーディング以外についての話も聞きたい方
弊社の「エキサイト電話占い」は、弊社通話システムを通すことで安心安全に占い師と通話できます。
(電話越しに占いができるんです!)
「エキサイト電話占い」には、
・ユーザと占い師お互いの電話番号は非表示
・電波状況などユーザと占い師の環境に合わせた通話手段(通常の電話 or 通話アプリ)を用意
・分単位でのサービス利用料金の計算ができる
などの要件があります。
私はTwilioを用いて上記の要件をみたした通話システムを構築しました。
この通話システムを構築するという経験はとても新鮮だったため、
皆さんに共有させてください。
このLTでは、
・Twilioを用いた通話システムの作成方法
・上記課題の解決方法
について話します。
●●●LTを聞くメリット●●●
・Twilioの基礎を知ることができる
・電話占いの裏側を知ることができる
●●●対象者●●●
・通話を用いたサービス提供を検討中の方
・通話の実装を考えたことがない方
・電話占いを知らない方
・占いが好きな方
このポスターセッションでは、若手エンジニアの技術的な興味や目指すキャリアに関する調査結果などについてポスターを通じて発表いたします。
私と他数名の若手エンジニアで、若手ふんわり勉強部というLT(ライトニングトーク)形式の勉強会の運営を行っています。この勉強会の参加者全員が若手エンジニアであり、もちろんLT発表者も若手エンジニアです。
参加者層も幅広く、フロントエンドエンジニアからネイティブアプリエンジニア、SREなど、様々なエンジニアの方々が集まります。そしてLTの内容もさまざまです。
このポスターセッションでは、勉強会参加者の若手エンジニアに「目指しているエンジニア像」や「さらに学びたい技術領域」などについてアンケートを行った結果をポスターを通じて発表いたします。更に、勉強会の様子や一部LTの内容もご紹介します。
会場では、皆さんが若手エンジニアだった頃の思いと、現在の若手エンジニアたちの思いの違いや共通点を語り合いたいです!