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
宮城築
September 16, 2023
Programming
4
560
あの時、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
410
20240510_DDDとぼんやり向き合ってみる / Let's face DDD in a dim way.
kizuku_miyagi
1
29
ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP : An introduction
kizuku_miyagi
3
610
強いチーム作りに向けて 個人ができること / What individuals can do to build a strong team
kizuku_miyagi
2
550
Other Decks in Programming
See All in Programming
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
960
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
290
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
1
820
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
120
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
320
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
機械学習って何? 5分で解説頑張ってみる
kuroneko2828
0
220
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
4.8k
すべてのコンテキストを、 ユーザー価値に変える
applism118
1
290
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
610
関数型まつりレポート for JuliaTokai #22
antimon2
0
130
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
760
Featured
See All Featured
Speed Design
sergeychernyshev
31
1k
A Tale of Four Properties
chriscoyier
159
23k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
43
2.4k
The Cost Of JavaScript in 2023
addyosmani
51
8.4k
Adopting Sorbet at Scale
ufuk
77
9.4k
How to train your dragon (web standard)
notwaldorf
92
6.1k
Fireside Chat
paigeccino
37
3.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
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を通じて保活に役立つ情報も発信!