Tech Racho エンジニアの「?」を「!」に。
  • 開発

新卒文系がJavaの学習後、PHPを触ってみた感想

BPSの福岡拠点として一緒にお仕事させて頂いてます、株式会社ウイングドアのソノダです。
今回は、ガチガチの未経験者がJavaを3ヶ月学習したのち、
PHP(Laravel)を2ヶ月触ってみた感想をつらつらと述べていきます。
(PHPの感想というよりもLaravelの感想に近いと思います)

はじめに

私は今年4月に入社したばかりの文系出身の者です。

入社後3ヶ月間は外部でJavaの研修を受けました。
研修を終えてからは、Laravelを用いて自社向けサービスを作成しつつ、
先輩方が開発中のシステムの単体テストなどを作成しています。

今回の記事は完全なる初心者の感想ですので、
技巧者の方は「あぁ初心者はこんなことを思ってるんだな」「こんな時期もあったな」と。
(いらっしゃるか分かりませんが)JavaからPHPに転向する方は「へえこんな違いがあるんだな」と。
そんな軽い気持ちで読んでいただければ幸いです😀

(この記事を書くにあたって、2ヶ月ぶりにJavaのソースコードを読み返してみました。
だいぶ記憶が薄れていて、「書かないと忘れる」とはこういうことなんだなと実感しました。)

目次

PHP(Laravel)でいいなあと思ったこと

var_dumpが便利

変数や配列の情報をずらっと表示してくれる関数。
DB検索時など、期待通りの情報が取得できているとホッとします。

echoで文を表示させるのがカッコイイ

Javaのprintlnprintよりも響きがカッコよくて好きです。

Bladeが便利(Laravel)

htmlを記述する、MVCモデルで言うところのviewにあたるもの。
作成したheaderやfooterをテンプレートとして使いまわせる、継承機能がとても便利で感動しました!
headerやfooterを毎回記述せずに済む、それぞれ別々で管理できるなど利点がいっぱいです!

変数が{{ $変数名 }}で簡単に呼び出せるところや、<?php ?>で簡単にPHPが埋め込めるところもgoodです。

DBとの接続が楽(Laravel)

Modelを継承したクラスに、テーブル名と主キーをセットするだけです(おそらく)
DBテーブル名::where(条件)->get();の一文だけでDBの情報が取得できることに感動しました。
研修中に出てきた、ごっちゃりとしたDto(JavaBeans?)やDAOはいずこへ…といった感じです。

難しいと思ったこと

配列が分からない!

Javaでも苦手な分野でした。連想配列?多次元配列?なにそれおいしいの?状態です。
Laravelだと配列よりもコレクションが便利だとお聞きしてから、コレクションの方を多用しています。
仕組みはあまりよく分かっていませんが公式ドキュメントを参考にすれば色々なことができます。便利です。

Javaでの◯◯が、言語が変わると何にあたるのか分からなかった

JavaでのjspはLaravelではbladeで、
servletcontrollerDAOやdtomodelであると
気づくのに時間がかかりました(MVCモデルの理解があればすぐに分かりそうな事ですが…)

また、画面遷移の記述であるJavaのforwardはLaravelのreturn viewなど、
細かな処理に関しても、JavaとPHP間の翻訳機的なものが欲しかったです。
↓間違っているかもしれませんがJava・LaravelのMVCモデル覚え書きです。

Java Laravel
Model DBテーブル名DAO.java
(daoパッケージ内)
DBテーブル名.java
(dtoパッケージ内)
DBテーブル名.php
(Modelsフォルダ内)
View ◯◯.jsp
(WebConetntフォルダ内)
◯◯.blade.php
(viewsフォルダ内)
Controller ◯◯Servlet.java
(Javaリソースフォルダ内)
◯◯Controller.php
(Controllersフォルダ内)

ふと思ったこと

そういえばintとかstringとか見なくなった

Javaと違い、PHPでは型宣言が必須ではないため、見る機会も書く機会も減りました。
特にstringは随分と見ていない気がします。

データベースを作成するためのmigrationで記述したのが最後でしょうか…。
研修中に比べると、型の意識が確実に薄れていってます…😮

MVCモデルについて理解が進んだ

役割ごとにModelViewControllerに分割してコーディングを行うモデル…とのこと。
Laravelに上記3つ(MVC)がそのままの名前で登場したので、この時ようやくMVCモデルの理解が進みました。
Javaの研修中はどれが何を指しているのかサッパリでした。

(言語関係なく)大事だと思ったこと

詰んだらまず公式のドキュメントを読む

「知りたいこと 言語名+バージョン」でググる

→公式のドキュメントを読む
→最新の情報が漏れなく載っていてありがたい!!
(詰みが解消できるかは別問題ですが…)

エラーが出ても目をそむけないこと

文系のくせして英語が苦手なので、ずらっと並ぶエラー表記に毎回怯んでいました。
けれど、よく落ち着いて読んでみれば案外単純なミスが原因だったりするので、
「エラーが出た!ここがおかしいんじゃないか!?」と当てずっぽうでコードを修正するよりも、
まずは絶対にエラー内容に目を通すべきだと思いました。

コードはなるべく細かい単位で実行・確認していくこと

どの時点でつまづいたか分からないと後々嘆かないためにも!
モチベーションを保つためにも!(目に見える成果があると嬉しい!)
書いたそばから実行していくことが自分には有効なのかなと思いました。

おわりに

以上、初心者がJavaの学習後、PHP(Laravel)を触ってみての感想でした。

大まかな所感としましては、Java言語からPHP言語はわりととっつきやすく、思ったより違和感はなかったです。
また、PHPは変数の型宣言がない分コードがすらっとしていて書きやすく、もうJavaには戻れないと感じています。

ただ、画面の遷移方法や必須ファイルの名前などはガラッと変わるので、その違いを理解するところで躓く場面がありました。
もし今後また新たな言語を学ぶことになった際は、構文を学ぶより先に、まず仕組みや処理の流れを掴むことから始めようと思います!

まだまだ分からないことばかりですが、これから色んな知識と技術を蓄えていけるよう、がんばります🙂

教育担当のコメント:

ソノダさんは直感で理解してどんどん進めていくタイプのようです。
教えてないことでもドキュメントを見つつ、ひとまず手を動かしてみて
把握してくれているので、とても助かっています。



株式会社ウイングドアでは、Ruby on RailsやPHPを活用したwebサービス、webサイト制作を中心に、
スマホアプリや業務系システムなど様々なシステム開発を承っています。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。