• 2022年2月10日木曜日
ウズマスターの日々
ウズマスターの日々 https://blog.uzumax.org/2022/02/java-php.html

Java か PHP か

 何か次のプロジェクトで「Java と PHP だったらどっちが良い?」って聞かれたんだけど、いやぁ、答え辛い質問だな。(;´・ω・`)

僕の見解としては、「言語の選択は開発モデルで決まる」だと思うんだけどね。(´・ω・`)


前提

まず、本件は「普通のWebシステムの開発」だ。
サーバレスだとか、大量処理だとか、そういうのが無い、これと言って特筆事項の無い普通の開発である。

人間の技術力

さて本題だけど、まず僕はJavaは10年以上の経験があるが、PHPの経験は半年くらいである。

これをどう評価するかだけど、ハッキリ言って僕の力量はどっちでも同じやぞ。(´・ω・`)

PHPっちゅ~たって、普通のWebシステムである以上、普通にフレームワークに沿って画面を追加していくだけやがや。

経験半年どころか、未経験の言語でも何も問題あらへんわ。(´・ω・`)


品質

品質面ではJavaが優れる。なぜなら、Javaはコンパイル言語、PHPはスクリプト言語だからだ。

リファクタリングしたり、影響調査したりが、コンパイル言語はIDEの機能で厳密に統制を取れるから、単体レベルでの影響範囲確認ミスとかは物理的に起きない。

スクリプト言語は、本質的にはメモ帳で開発するようなものだから、どうとでもぶっ壊れる。動かしてみないと分からない。
あっちこっちでソースが腐る。


リリース

Javaの弱点はリリースが大変であること。
ちょっとの修正でも、リリースの度にコンパイルしなきゃいけないし、コンパイル環境がどうこうとか、再起動とか、色々管理が必要になる。

PHPはファイルをポコッと置くだけでしょ?
Gitの最新をチェックアウトするだけや。リポジトリの最新=本番以外の何物でもない。

だから頻繁に改修、機能追加、リリースが発生するような案件だとJavaは面倒極まりなくて、PHPの方が都合が良い。


アジャイル or ウォーターフォール

これらを踏まえると、PHPは毎週のように機能追加やリリースを行うような状況下で便利になる。つまりアジャイル向きなんや。

対して、多くても3ヶ月に1回くらいしかリリースしないとか、そもそも1回作ったらそれっきりとか、それだとPHPを使う理由が無い。
理由が無いならJavaの方が言語として優れているに決まっとる。

継続的インテグレーション

これらを踏まえると、PHPはリリース連発、改修連発するという背景もあってこそ、アジャイルだからこそ、という話になる。
その上で、そもそも言語として動かしてみないと分からないという弱点を抱えている。
だから、二重三重の意味でテストコードまで作って継続的インテグレ―ションを行う価値が高まってくる。毎週のように影響範囲のデグレードテストなんてやっとれんからな。
従って本体だけでなくPHPUnitの開発まで検討しなければならん話になる。

逆にJavaはハッキリ言って昔ながらの人海戦術でしっかりテストして一回リリースしたら次の改修は5年後のリプレースとかそんなんでやれば良いだけの話で、気合入れてテストコード作ってもコスト対効果に合わへん事が殆どや。
そもそも昔ながらのやり方しか知らんジジイはこれしか出来ん。


まとめ:やり方の問題

以上、つまるところ、「Java と PHP のどっちが良いか?」って、言語がうんぬんと言うより、どういう開発モデル、進め方でやりたいかっていう、実装レベルというよりはシステム開発工学的レベルが重要な話なのよね。

だから軽く聞かれてもなかなか簡単には答え辛い。

という議論を詰めていきたいものだけど、この辺の話が可能な人間は本当に限られるから、話題として浮上させるのも藪蛇になる。

結論としては、「今までと同じやり方の延長線上でやりたい」がプロマネや客先の頭に最初にある僕みたいな業務系エンジニアの周辺環境ならば、今までと同じ言語を使い続けるのが一番リスク無いってだけで十分、僕が言うことなんか何も無いんじゃ!!

そうではなく、英明で革新的なマネージャーの元、抜本的な手法改善による生産性向上を目指すなら、GitHubの導入とか、継続的インテグレーションの導入とか、IDEの再選択とか、やり方そのものまで言及して本腰を入れて検討することになる。

システムアーキテクトたる僕としては、いつかは後者のような話に加わらせて頂きたいのう。(´・ω・`)

0 件のコメント: