Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
あの時、Java から PHP へ / Converting from Java to PHP
Search
宮城築
September 16, 2023
Programming
4
580
あの時、Java から PHP へ / Converting from Java to PHP
宮城築
September 16, 2023
Tweet
Share
More Decks by 宮城築
See All by 宮城築
プルリクエストがマージできない / Cannot merge pull requests
kizuku_miyagi
3
470
20240510_DDDとぼんやり向き合ってみる / Let's face DDD in a dim way.
kizuku_miyagi
1
35
ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP : An introduction
kizuku_miyagi
3
710
強いチーム作りに向けて 個人ができること / What individuals can do to build a strong team
kizuku_miyagi
2
590
Other Decks in Programming
See All in Programming
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
150
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
AIコーディングエージェント(Manus)
kondai24
0
180
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
380
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
410
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
500
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
120
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
830
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
関数実行の裏側では何が起きているのか?
minop1205
1
700
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Building an army of robots
kneath
306
46k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
100
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Rails Girls Zürich Keynote
gr2m
95
14k
BBQ
matthewcrist
89
9.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Code Reviewing Like a Champion
maltzj
527
40k
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を通じて保活に役立つ情報も発信!