Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
あの時、Java から PHP へ / Converting from Java to PHP
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
宮城築
September 16, 2023
Programming
610
4
Share
あの時、Java から PHP へ / Converting from Java to PHP
宮城築
September 16, 2023
More Decks by 宮城築
See All by 宮城築
プルリクエストがマージできない / Cannot merge pull requests
kizuku_miyagi
3
530
20240510_DDDとぼんやり向き合ってみる / Let's face DDD in a dim way.
kizuku_miyagi
1
45
ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP : An introduction
kizuku_miyagi
3
790
強いチーム作りに向けて 個人ができること / What individuals can do to build a strong team
kizuku_miyagi
2
620
Other Decks in Programming
See All in Programming
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
190
Nuxt Server Components
wattanx
0
220
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
390
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
270
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
700
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
1
190
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
420
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
280
Tamach-sre-3_ANDPAD-shimaison93
mane12yurks38
0
210
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
200
AI-DLC 入門 〜AIコーディングの本質は「コード」ではなく「構造」〜 / Introduction to AI-DLC: The Essence of AI Coding Is Not “Code” but “Structure”
seike460
PRO
0
120
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
110
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
210
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
160
Designing for Performance
lara
611
70k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
97
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
92
It's Worth the Effort
3n
188
29k
For a Future-Friendly Web
brad_frost
183
10k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Typedesign – Prime Four
hannesfritz
42
3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Transcript
あの時、Java から PHP へ 新しい世界へのトレッキング BABY JOB ミヤギ
自己紹介 宮城 築 BABY JOB 株式会社 2023 年 6 月入社 Java
の SE として 8 年の時を経て 新たに PHP にチャレンジ中
トレッキングを始めたわけ
2015 年に Java 6 にトレッキング 約 8 年間、レガシーな現場で勤しむ 2023 年に
PHP 8 にトレッキング 現時点で 3 ヶ月経過、モダンな現場でチャレンジ中 これまでの軌跡
• 学習コストが高い ◦ オブジェクト指向プログラミングが核 ◦ 文法はやや複雑 • 定番の手法が存在する ◦ 古くから大規模プロジェクトで使用する方法が
確立されている 当時の山(Java 6) • 環境構築が大変 ◦ IDEやビルドツール、ライブラリが必要
• 学習コストが高い ◦ オブジェクト指向プログラミングが核 ◦ 文法はやや複雑 • 定番の手法が存在する ◦ 古くから大規模プロジェクトで使用する方法が
確立されている 急勾配 当時の山(Java 6) 整備された登山道 装備を揃える必要がある • 環境構築が大変 ◦ IDEやビルドツール、ライブラリが必要
当時の山(Java 6)
・・・頑張って登り切った!という印象 当時の山(Java 6)
• 学習コストが低い ◦ Web 開発を主目的とした言語 ◦ 文法は比較的シンプル • 様々な手法が存在する ◦
起源や利用シーンが多岐にわたり目的に対す るアプローチやツールが多数存在する 挑戦中の山(PHP 8) • 環境構築が簡単 ◦ シンプルな環境でも動作する
• 学習コストが低い ◦ Web 開発を主目的とした言語 ◦ 文法は比較的シンプル • 様々な手法が存在する ◦
起源や利用シーンが多岐にわたり目的に対す るアプローチやツールが多数存在する 傾斜が緩やか 挑戦中の山(PHP 8) 多岐にわたる登山道 軽装でOK • 環境構築が簡単 ◦ シンプルな環境でも動作する
挑戦中の山(PHP 8)
挑戦中の山(PHP 8) ・・・何度も登って楽しむ!という印象
トレッキングのきっかけ きっかけは転職 レガシーな環境で Java エンジニアとしての 8 年間、 新しい領域に挑戦したかった よし、あの山(PHP)に挑戦しよう!
サバイバルギア
揃えた装備 ・ChatGPT ・書籍 ・カンファレンスの過去動画 ・GitHub ・有識者 ・・・etc
揃えた装備 ・ChatGPT ・書籍 ・カンファレンスの過去動画 ・GitHub ・有識者 ・・・etc
オンザロードのハイライト① 〜 環境構築が楽すぎて 〜
JDK & IDE & Webサーバーのインストール ↓ ソースのチェックアウト & ビルドパスの設定 ↓
DB構築 & SQL実行 ↓ プロパティの修正 & ant実行 手順のイメージ(極端にレガシーな環境でした) これまでの環境構築
JDK & IDE & Webサーバーのインストール ↓ ソースのチェックアウト & ビルドパスの設定 ↓
DB構築 & SQL実行 ↓ プロパティの修正 & ant実行 手順のイメージ(極端にレガシーな環境でした) これまでの環境構築 Docker なし Git なし
JDK & IDE & Webサーバーのインストール ↓ ソースのチェックアウト & ビルドパスの設定 ↓
DB構築 & SQL実行 ↓ プロパティの修正 & ant実行 手順のイメージ(極端にレガシーな環境でした) これまでの環境構築 Docker なし Git なし 手作業が多い 手順書やSQLの管理が大変
手順のイメージ PHP & Composer & 各種ツールのインストール ↓ Docker & IDEのインストール
↓ ソースのチェックアウト ↓ artisan実行 現在の環境構築
手順のイメージ PHP & Composer & 各種ツールのインストール ↓ Docker & IDEのインストール
↓ ソースのチェックアウト ↓ artisan実行 現在の環境構築 手順のほとんどがコマンド作業 データ作成まで自動化されている
オンザロードのハイライト② 〜 意識の改革 利用者から技術者へ 〜
function test(...$strings): void { foreach ($strings as $value) { echo
strlen($value); } } 説明書を読んでもわからない 可変長引数をループで処理しようとしたが phpstan の警告が解消できない (例)
Parameter #1 $name of static method Test::test() expects string, array<string,
string> given. 説明書を読んでもわからない phpstanの実行結果は stringを期待していたが、stringの配列が渡されたというエラー ・・・ん?
説明書を読んでもわからない
説明書を読んでもわからない ・・・現場で問題になってないのだろうか?
そして現場へ 引用:https://github.com/phpstan/phpstan/issues/8274
そして現場へ 引用:https://github.com/phpstan/phpstan/issues/8274 同様の事象報告に対 して、公式からバグ認 定されていた
そして現場へ 引用:https://github.com/phpstan/phpstan/issues/8274 バグ認定されていた ライブラリだって開発中 情報提供がバグ改善に繋がる
まとめ
• 時代に取り残されていたことを改めて痛感 • フレームワークやライブラリだって同じように開発している 今の自分の位置や学び
• 登り始めて3ヶ月、まだまだ道半ば • やっぱりトレッキングは楽しい その上で
ご清聴ありがとうございました!
おまけ
「レガシーエンジニアが モダンな現場に異世界転生してみた」 実はこんなプロポーザルを作ってました 数年に渡り、汎用機の世界を支配し続けてきたレガシーシステムエンジニアの人生は、 一つの突発的な出来事によって一変する。 突如として意識が遠のく中、彼が次に目覚めた場所は、未知の世界だった。そこは AI やクラウドコンピューティング、ブロックチェーンなどの先端技術が飛び交う現代 IT 業
界。まるで異世界に転生したかのようなその世界で、タカシは自身の持つ古の知識を武 器に、新しいチャレンジを迎える。 (Java 6 エンジニアが PHP 8 の現場に入門して感じたことをお伝えします)
プロダクト紹介 保護者がスマホを使って片手で簡単に 「保活」を行えるプラットフォーム。 保活がスマートに! • 月間ユーザー数:約45万人(2023年7月時点) • 地図上で簡単に周辺の施設が検索できる! • 保育園の知りたい情報を取得できる!
• Web上で見学予約、問い合わせができる! • コラムやSNSを通じて保活に役立つ情報も発信!