初心者PHPプログラマーのススメ【副業や趣味ではじめても無駄にならない】

2019年5月15日

初心者PHPプログラマーのススメ【副業や趣味ではじめても無駄にならない】

副業としてプログラマーを始めようという人が最近増えています。

基本世界のどこでも仕事ができて、言語も世界共通なので職場としても日本に縛られず、しかも世界的にプログラマーは不足し過ぎているので、半年集中すれば仕事がいくらでもあるという状況だからでしょう。

そしてこれから一層IT化の流れは加速していくので、成果さえ出せば本当の意味で世界のいつでもどこでも仕事ができるようになるというプログラマーには魅力があります。

わたしは仕事としては6年、趣味としては10年ほどプログラムを書いていて、数百人月程度の規模の開発も経験したことがあるので、そんな人間がこれからプログラマーを始めようと思っている方に向けて必要だと思うものを、参考までに書いてみようと思います。

パソコンはMacBookProがおすすめ

個人的には圧倒的にMac推しです。

もともとWindowsで書いていたのですが、Macとプログラミングの相性はめちゃくちゃいいです。

Windowsはどちらかというと、すでに出来上がったアプリケーションを使うのに長けていて、最近では減ってきましたがWindowsしか動かないアプリケーションも結構多いです。

事務作業で使うエクセルもWindowsの方が動作が重くならないのでいいですね。

一方でMacはプログラミングがしやすいです。

パソコンはプログラミングにしか使わない!というレベルでパソコンを使うつもりで、プログラミングに特化する場合は自分でUbuntsuを入れて使うなどの選択肢も出てくるのですが、普通の人はそこまでではないと思います。

Macをおすすめするのは、プログラミングとネットサーフィンやブログライティングといった通常使用とのバランスがいいからです。

特にBetter Touch Toolという神アプリを入れて組み合わせることで、凄まじく効率化できます。

下の画像の赤枠で囲ったところのように、画面を複数開いて整理できるのもMacの使いやすいところです。

さらに、Macの中でもMacBookPROがいいと思うのは、

  • 処理性能が高くサクサク動く
  • 画面が広く作業しやすい
  • 電池の持ちの良さ

です。

Airだと、統合開発環境を使うときに少しモッサリすることがあるのと、画面が狭くモニターを繋がないとプログラミングしにくかったり、電池の持ちがそこまで良くないので集中してるときに切れるという点で向いてないかなと思います。

ライターの方とかはAirでも問題ないと思いますが、プログラマーはPROですね。

ちなみにデザイナーまで習得しようと考えているなら絶対にPROです。
画像編集や動画編集は処理能力が必要なので、Airだとストレスがすごいと思います。

プログラマーの話に戻ります。
プログラムを書いていると必ずバグに遭遇しますが、基本的にバグ潰しはストレスフルです。

このストレスフルな状況でパソコンがサクサク動かないことはさらにストレスを増やしてパフォーマンスを下げるので、多少高かったり重量が重くても性能はいいMacBookProを強くおすすめします。

エディタはvimがおすすめ(IDEでもOK)

わたしはIntellijという統合開発環境(IDE)をvimの操作感で開発しています。

が、初心者はvimかemacsでいいと思います。vimはMacに標準でついています。

操作方法は特殊なので最初の1週間は戸惑うかもしれませんが、すぐになれます。

また、vimはMac以外でも大抵の環境で使えるエディタなのと、使いこなすと統合開発環境並みに機能が豊富になり、動作も軽いのでプログラミングが捗ると思います。

vimではなく統合開発環境(IDE)を使う場合は、IntelliJかVSCodeが使いやすくておすすめです。
JavaでプログラミングをするならEclipse、PHPならPHPStormも有名な統合開発環境なのでこれでもいいでしょう。

最初はできることが多すぎて独学だと戸惑うので、その場合は本で体系的に学ぶか周りで使っている知り合いに教えてもらいましょう。

言語選定はPHPがおすすめ

プログラミングは言語によってかなり特性が違いますし、市場シェアも違います。

わたしがプログラミングしてアプリケーションを実装したことがある言語は、Java(SpringBoot)・PHP・html/css(sass)・JavaScript(Node.js/Typescript/React/Vue)・Mysql・Oracle・HiveQL・perl・python・ruby・シェルスクリプト・C・C++…と趣味も入れて10年もWebエンジニアをやっているとさすがに結構な言語で実装を経験します。

Web系からデータサイエンス系まで様々ですね。

その経験の上で初心者におすすめなのは、特にシェアの大きい言語であるJavaとPHP、JavaScriptです。
基本的に初心者にはWebアプリケーションを構築できる言語が、自分でアプリケーションを作ったときに世の中に公開しやすいのでおすすめです。

どれも結局は学習すると思うんですが、初心者にはPHPがおすすめです。
一人で作るような小規模〜中規模アプリケーションの構築や、初期構想のプロトタイプアプリケーションを構築する場合に、使えるデフォルトの機能(組み込み関数)が多かったり、柔軟性が高くJavaやC++、TypeScriptのような厳しい型定義やクラス定義に悩まされることが少なく、学習が比較的容易です。

また、入力したデータを保存しておくデータベースとしてMySQLを使うことが多いですが、PHPだと比較的簡単にDBアクセスのプログラミングも可能なので、初心者でもデータ入力〜処理〜出力までの一貫したアプリケーションを構築しやすい言語です。

ただ、アプリケーションを増築し続けたり、複数人で開発する場合は逆にその柔軟性が仇となって見つけにくいバグが生まれやすくなる傾向があり、企業でも最初の黎明期はPHPで開発していたアプリケーションでも事業が成長するに従ってJavaなどの言語に置き換えていく、というようなことをしているところは多いです。

なので、もしPHPを使って1つアプリケーションを作り上げるなど、慣れてきてもっと型安全に書きたいとか、クラス設計の美しさとか求め始めたり、一人で開発したら数十ヶ月以上かかるような巨大なプログラムを複数人で開発する場合には、Javaがおすすめです。
Javaを使う場合はSpringBootフレームワーク上でのJava開発がかなり効率的でやりやすいと思いますが、プログラミングを全くしたことのない初心者が最初からこれを使うとちょっと難易度が高いかなと思っています。

JavaScriptはもともとはクライアントサイド(ブラウザ上)で動く言語なのですが、Node.jsの登場によりサーバーサイド(サーバー上)で動かすこともでき、かつデザイナーでも読める言語なのでこれもおすすめです。

ただし、Node.jsの場合はプログラミング方法を間違えると一応動くもののパフォーマンスが全然出ない、というバグに悩まされることもあるので中級者以上むけかなと思っています。

JavaScriptはNode.jsを使わないとDBアクセスもできないため、一般的にはPHPと組み合わせるパターンが多いかなと思います。

なので、これからプログラミング学習を始める初心者プログラマーの方にはPHPをおすすめします。

自作アプリケーションを作り切るやる気が必要

初心者が陥りがちな間違いとして、本やプログラミングのスクールに通ったり、プログラミングのサイトで勉強だけしてその言語を習得したつもりになることがあります。
これだけだと、いざフリーランスになったり就職、副業として仕事を請け負うと全く使い物にならないです。

もちろんこのような勉強をするのは最低限の必須条件なのですが、使い物になるためにはこれ+αが必要です。

それは、実際のアプリケーションをその言語で構築しきることです。

基礎は勉強でOKです。しかし実践=仕事で使うのは応用です。
この応用ができなければお金にはなりません。

逆に言えば、アプリケーションを構築しきるほど能力があれば自信を持って仕事を受けにいけます。

特にWebアプリケーションの場合はWeb上に公開していれば、面接時に「こんなアプリケーションを作ったことがある」と見せることができ、かなり強力なアピールポイントとなります。ぶっちゃけここまでやってると、ほぼ採用確定です(副業レベルはもちろん本業レベルでも)。

やる気がなければそこまで作り切れないので、やる気が大切です。

プログラミング初心者はどんなアプリケーションを作ればいいのか

ではプログラミング初心者はどんなアプリケーションを作ればいいかというと、データ入力〜データ処理〜データ出力の一連の基礎的な流れをもつアプリケーションです。

基本PHPで、データを保存するDBとしてMysqlを少しかじればOKです。PHPを勉強していくと必然的にhtml/cssも学んでいくので、最低限Webアプリケーションを構築するのに必要なスキルを身につけられます。

掲示板なんかはこの典型的なアプリケーションモデルですね。

さらにECや検索といった機能をそこにつけていくと、より希少性の高いプログラマーとして活躍できるようになっていきますので、そこまで実装できるようになると中級者レベルです。

そこまでいくともはや副業としての域は超えてくるかなと思います。