Slide 1

Slide 1 text

あの時、Java から PHP へ 新しい世界へのトレッキング BABY JOB ミヤギ

Slide 2

Slide 2 text

自己紹介 宮城 築 BABY JOB 株式会社 2023 年 6 月入社 Java の SE として 8 年の時を経て 新たに PHP にチャレンジ中

Slide 3

Slide 3 text

トレッキングを始めたわけ

Slide 4

Slide 4 text

2015 年に Java 6 にトレッキング  約 8 年間、レガシーな現場で勤しむ 2023 年に PHP 8 にトレッキング  現時点で 3 ヶ月経過、モダンな現場でチャレンジ中 これまでの軌跡

Slide 5

Slide 5 text

● 学習コストが高い ○ オブジェクト指向プログラミングが核 ○ 文法はやや複雑 ● 定番の手法が存在する ○ 古くから大規模プロジェクトで使用する方法が 確立されている 当時の山(Java 6) ● 環境構築が大変 ○ IDEやビルドツール、ライブラリが必要

Slide 6

Slide 6 text

● 学習コストが高い ○ オブジェクト指向プログラミングが核 ○ 文法はやや複雑 ● 定番の手法が存在する ○ 古くから大規模プロジェクトで使用する方法が 確立されている 急勾配 当時の山(Java 6) 整備された登山道 装備を揃える必要がある ● 環境構築が大変 ○ IDEやビルドツール、ライブラリが必要

Slide 7

Slide 7 text

当時の山(Java 6)

Slide 8

Slide 8 text

・・・頑張って登り切った!という印象 当時の山(Java 6)

Slide 9

Slide 9 text

● 学習コストが低い ○ Web 開発を主目的とした言語 ○ 文法は比較的シンプル ● 様々な手法が存在する ○ 起源や利用シーンが多岐にわたり目的に対す るアプローチやツールが多数存在する 挑戦中の山(PHP 8) ● 環境構築が簡単 ○ シンプルな環境でも動作する

Slide 10

Slide 10 text

● 学習コストが低い ○ Web 開発を主目的とした言語 ○ 文法は比較的シンプル ● 様々な手法が存在する ○ 起源や利用シーンが多岐にわたり目的に対す るアプローチやツールが多数存在する 傾斜が緩やか 挑戦中の山(PHP 8) 多岐にわたる登山道 軽装でOK ● 環境構築が簡単 ○ シンプルな環境でも動作する

Slide 11

Slide 11 text

挑戦中の山(PHP 8)

Slide 12

Slide 12 text

挑戦中の山(PHP 8) ・・・何度も登って楽しむ!という印象

Slide 13

Slide 13 text

トレッキングのきっかけ きっかけは転職 レガシーな環境で Java エンジニアとしての 8 年間、 新しい領域に挑戦したかった よし、あの山(PHP)に挑戦しよう!

Slide 14

Slide 14 text

サバイバルギア

Slide 15

Slide 15 text

揃えた装備 ・ChatGPT ・書籍 ・カンファレンスの過去動画 ・GitHub ・有識者  ・・・etc

Slide 16

Slide 16 text

揃えた装備 ・ChatGPT ・書籍 ・カンファレンスの過去動画 ・GitHub ・有識者  ・・・etc

Slide 17

Slide 17 text

オンザロードのハイライト① 〜 環境構築が楽すぎて 〜

Slide 18

Slide 18 text

JDK & IDE & Webサーバーのインストール ↓ ソースのチェックアウト & ビルドパスの設定 ↓ DB構築 & SQL実行 ↓ プロパティの修正 & ant実行 手順のイメージ(極端にレガシーな環境でした) これまでの環境構築

Slide 19

Slide 19 text

JDK & IDE & Webサーバーのインストール ↓ ソースのチェックアウト & ビルドパスの設定 ↓ DB構築 & SQL実行 ↓ プロパティの修正 & ant実行 手順のイメージ(極端にレガシーな環境でした) これまでの環境構築 Docker なし Git なし

Slide 20

Slide 20 text

JDK & IDE & Webサーバーのインストール ↓ ソースのチェックアウト & ビルドパスの設定 ↓ DB構築 & SQL実行 ↓ プロパティの修正 & ant実行 手順のイメージ(極端にレガシーな環境でした) これまでの環境構築 Docker なし Git なし 手作業が多い 手順書やSQLの管理が大変

Slide 21

Slide 21 text

手順のイメージ PHP & Composer & 各種ツールのインストール ↓ Docker & IDEのインストール ↓ ソースのチェックアウト ↓ artisan実行 現在の環境構築

Slide 22

Slide 22 text

手順のイメージ PHP & Composer & 各種ツールのインストール ↓ Docker & IDEのインストール ↓ ソースのチェックアウト ↓ artisan実行 現在の環境構築 手順のほとんどがコマンド作業 データ作成まで自動化されている

Slide 23

Slide 23 text

オンザロードのハイライト② 〜 意識の改革 利用者から技術者へ 〜

Slide 24

Slide 24 text

function test(...$strings): void { foreach ($strings as $value) { echo strlen($value); } } 説明書を読んでもわからない 可変長引数をループで処理しようとしたが phpstan の警告が解消できない  (例)

Slide 25

Slide 25 text

Parameter #1 $name of static method Test::test() expects string, array given. 説明書を読んでもわからない phpstanの実行結果は stringを期待していたが、stringの配列が渡されたというエラー ・・・ん?

Slide 26

Slide 26 text

説明書を読んでもわからない

Slide 27

Slide 27 text

説明書を読んでもわからない ・・・現場で問題になってないのだろうか?

Slide 28

Slide 28 text

そして現場へ 引用:https://github.com/phpstan/phpstan/issues/8274

Slide 29

Slide 29 text

そして現場へ 引用:https://github.com/phpstan/phpstan/issues/8274 同様の事象報告に対 して、公式からバグ認 定されていた

Slide 30

Slide 30 text

そして現場へ 引用:https://github.com/phpstan/phpstan/issues/8274 バグ認定されていた ライブラリだって開発中 情報提供がバグ改善に繋がる

Slide 31

Slide 31 text

まとめ

Slide 32

Slide 32 text

● 時代に取り残されていたことを改めて痛感 ● フレームワークやライブラリだって同じように開発している 今の自分の位置や学び

Slide 33

Slide 33 text

● 登り始めて3ヶ月、まだまだ道半ば ● やっぱりトレッキングは楽しい その上で

Slide 34

Slide 34 text

ご清聴ありがとうございました!

Slide 35

Slide 35 text

おまけ

Slide 36

Slide 36 text

「レガシーエンジニアが モダンな現場に異世界転生してみた」 実はこんなプロポーザルを作ってました 数年に渡り、汎用機の世界を支配し続けてきたレガシーシステムエンジニアの人生は、 一つの突発的な出来事によって一変する。 突如として意識が遠のく中、彼が次に目覚めた場所は、未知の世界だった。そこは AI やクラウドコンピューティング、ブロックチェーンなどの先端技術が飛び交う現代 IT 業 界。まるで異世界に転生したかのようなその世界で、タカシは自身の持つ古の知識を武 器に、新しいチャレンジを迎える。 (Java 6 エンジニアが PHP 8 の現場に入門して感じたことをお伝えします)

Slide 37

Slide 37 text

プロダクト紹介 保護者がスマホを使って片手で簡単に 「保活」を行えるプラットフォーム。 保活がスマートに! ● 月間ユーザー数:約45万人(2023年7月時点) ● 地図上で簡単に周辺の施設が検索できる! ● 保育園の知りたい情報を取得できる! ● Web上で見学予約、問い合わせができる! ● コラムやSNSを通じて保活に役立つ情報も発信!