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
510
あの時、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
320
20240510_DDDとぼんやり向き合ってみる / Let's face DDD in a dim way.
kizuku_miyagi
1
19
ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP : An introduction
kizuku_miyagi
3
520
強いチーム作りに向けて 個人ができること / What individuals can do to build a strong team
kizuku_miyagi
2
440
Other Decks in Programming
See All in Programming
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
140
From Translations to Multi Dimension Entities
alexanderschranz
2
130
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
210
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
440
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
nekko cloudにおけるProxmox VE利用事例
irumaru
3
420
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
130
Zoneless Testing
rainerhahnekamp
0
120
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
useSyncExternalStoreを使いまくる
ssssota
6
1k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
How STYLIGHT went responsive
nonsquared
95
5.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Thoughts on Productivity
jonyablonski
67
4.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
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を通じて保活に役立つ情報も発信!