$30 off During Our Annual Pro Sale. View Details »

あの時、Java から PHP へ / Converting from Java to PHP

宮城築
September 16, 2023

あの時、Java から PHP へ / Converting from Java to PHP

宮城築

September 16, 2023
Tweet

More Decks by 宮城築

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 当時の山(Java 6)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 挑戦中の山(PHP 8)

    View Slide

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

    View Slide

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

    View Slide

  14. サバイバルギア

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. JDK & IDE & Webサーバーのインストール

    ソースのチェックアウト & ビルドパスの設定

    DB構築 & SQL実行

    プロパティの修正 & ant実行
    手順のイメージ(極端にレガシーな環境でした)
    これまでの環境構築

    View Slide

  19. JDK & IDE & Webサーバーのインストール

    ソースのチェックアウト & ビルドパスの設定

    DB構築 & SQL実行

    プロパティの修正 & ant実行
    手順のイメージ(極端にレガシーな環境でした)
    これまでの環境構築
    Docker
    なし
    Git
    なし

    View Slide

  20. JDK & IDE & Webサーバーのインストール

    ソースのチェックアウト & ビルドパスの設定

    DB構築 & SQL実行

    プロパティの修正 & ant実行
    手順のイメージ(極端にレガシーな環境でした)
    これまでの環境構築
    Docker
    なし
    Git
    なし
    手作業が多い
    手順書やSQLの管理が大変

    View Slide

  21. 手順のイメージ
    PHP & Composer & 各種ツールのインストール

    Docker & IDEのインストール

    ソースのチェックアウト

    artisan実行
    現在の環境構築

    View Slide

  22. 手順のイメージ
    PHP & Composer & 各種ツールのインストール

    Docker & IDEのインストール

    ソースのチェックアウト

    artisan実行
    現在の環境構築
    手順のほとんどがコマンド作業
    データ作成まで自動化されている

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  35. おまけ

    View Slide

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

    View Slide

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

    View Slide