PHPプログラマが習得すべき技術10選

これまで、PHPを中心にプログラミング関係の本を100冊ほど読んできたので、後学のために、どのような技術を、どの順番で、どれだけ深く学習したらよいかを簡単にですがまとめておきます。

なお、各項で「比重」とあるのは、全体(100%)からみてどれだけの労力を学習に充てるべきかの比率を表しています。括弧書きは、100冊読んだ場合の冊数を表しています。

それでは、学習すべきお勧め順に紹介していきます。

■ 1. PHP
比重:20%(20/100冊)
難度:普
要点:文法、セッション、データベース連携、セキュリティ、フレームワーク
概要:PHPプログラマであるならば、当然、PHPについて深く知る必要があります。文法はもちろん、クッキーやセッションの扱い、データベースとの連携、そして、セキュリティまで広範囲に技術をカバーする必要があります。レベル的には、会員制サイトを運営できるくらいになれば、まずまずでしょう。更に、CakePHP等の主要なフレームワークについても習得しておくことが望ましいです。
おすすめのPHP入門書

■ 2. SQLおよびデータベース
比重:15%(15/100冊)
難度:普
要点:文法、データベース設計
概要:PHPでアプリケーションを制作する場合には、データベースとの連携がまず不可欠です。アプリを効率よく動作させるために、深いSQLの知識が必要です。また、データを効率よく取り扱うために、データベース設計の知識も必要です。データベースとの連携は、アプリの肝となるため、十分に学習することが求められます。なお、主にMySQLを中心に学習すると良いでしょう。
おすすめのSQL・DB入門書

■ 3. HTML
比重:5%(5/100冊)
難度:易
要点:文法、HTML5
概要:PHPは、最終的にはHTMLを生成することが多いので、当然、HTML自体についても正確な知識が求められます。HTMLの構造として、正しく適切なマークアップができることが必要です。HTMLは比較的簡単なので、数冊ほどの入門書に目を通すくらいで良いでしょう。
おすすめのHTML入門書

■ 4. CSS
比重:5%(5/100冊)
難度:易
要点:文法、CSS3
概要:HTMLを学習したならば、HTMLの装飾としての機能であるCSSもセットで学習しておきましょう。最近は、CSS3といって、CSSの多機能化も進んでいます。基礎から最新のCSS事情まで目を通すと良いでしょう。
おすすめのCSS入門書

■ 5. JavaScript
比重:15%(15/100冊)
難度:普
要点:文法、DOM、Ajax、ライブラリ
概要:PHPがサーバーサイドの言語であるならば、JavaScriptはクライアントサイドの言語です。JavaScriptは従来、HTML及びCSSとセットで学習されてきましたが、PHPと連携させることで、表現の幅がとても広くなります。HTMLやCSSの操作であるDOMはもちろん、PHPとの連携であるAjax、そして、余力があれば、JQueryなどのライブラリまで学習すると良いでしょう。
おすすめのJavaScript入門書

■ 6. Linux
比重:5%(5/100冊)
難度:普
要点:基礎知識、Apache、Bash
概要:PHPはサーバーで動作するものである以上、サーバー自体の知識も必要です。サーバーの構成そのものや、パーミッション、WEBサーバーであるApache、サーバーを操作するためのコマンド、そして、Bashといったプログラミングまで学習すると効率よく開発と保守ができるようになります。
おすすめのLinux入門書

■ 7. Java
比重:20%(20/100冊)
難度:やや難
要点:文法、オブジェクト指向、デザインパターン、リファクタリング
概要:PHPの学習に際しては入門書等を利用するのですが、それだけだと、プログラミングの力が不足してしまいます。よりPHPの力を発揮させるには、オブジェクト指向やデザインパターン、そして、リファクタリングといった知識も必要です。こうしたステップアップのための学習をするには、Java言語が最適です。内訳としては、各分野の本を5冊ずつくらいを目途に学習すると良いでしょう。
おすすめのJava入門書

■ 8. C言語
比重:7%(7/100冊)
難度:普
要点:文法、ポインタ、構造体、アルゴリズム
概要:Javaを学習したら、ついでにC言語も学習するのがお勧めです。理由は、プログラミングの定番コードの説明にはC言語がよく使われること、また、アルゴリズムといった分野ではC言語が多く利用されていることがあげられます。C言語の文法は、PHPやJavaと似ているため学習は比較的楽だと思います。ポインタや構造体などの知識も、あとあとプログラミングの理解を深めるので一通り学習するのが良いでしょう。また、C言語の学習に併せてアルゴリズム関係の本も数冊読んでおくのがお勧めです。
おすすめのC言語入門書

■ 9. C++
比重:3%(3/100冊)
難度:難
要点:文法
概要:JavaとC言語を学習したら、ついでにC++の入門書にも目を通しておくのがお勧めです。プログラミング言語の中でも最も難しい言語とされているので深入りは不要ですが、簡単な入門書を数冊読んでおくと自信になります。同じオブジェクト指向の言語であるJavaとの比較や、C言語の構造体とC++のクラスの比較などをすると理解が深まります。C言語とC++を合わせて10%くらいを目途に学習すると良いでしょう。なお、最終的には、デザインパターンのGoF本(オブジェクト指向における再利用のためのデザインパターン)を読むのがおすすめです。
おすすめのC++入門書

■ 10. その他
比重:5%(5/100冊)
難度:普
要点:コーディングスタイル、アジャイル開発、テスト駆動開発、環境構築
概要:主なプログラミング言語を上記で挙げましたが、その他にも、コーディングスタイルについてや、アジャイル開発やテスト駆動開発といった開発手法、そして、gitなどのバージョン管理システムなども学習する必要があります。ここらへんは、必要に応じ随時学習すると良いでしょう。

以上で、PHPプログラマが習得すべき技術を10個ばかり簡単に解説しました。この他にも、関数型言語やPython、Ruby、perlといったスクリプト言語、そして、スマホ開発に必要なAndroidなどの分野もあります。IT技術はもちろん、プログラミングに限ってもとても広大な分野なので、学習は際限が無いとも言えます。しかし、自分に必要な知識を見極めて効率よく学習できたならそれに越したことはないと思います。この記事が後学の人のために少しでも役立てば嬉しく思います。

カテゴリー: BOOK, プログラミング全般 | コメントする

PHP学習者にお勧めの本10選

これまで、WEBアプリ制作のために、PHPを中心としてプログラミングに関する本を100冊ほど読んできました。そこで、一つの区切りとして、その100冊の中からプログラミング力の向上に効果があり、実際に役立つと思う書籍を10冊ほどピックアップして紹介したいと思います。

それでは、おすすめの読むべき順に、書籍の「目的、難度、効果、概要」等を簡単にですが紹介していきます。

1.パーフェクトPHP (PERFECT SERIES 3)

目的:PHP学習の総仕上げとして
難度:難
効果:大
言語:PHP
概要:PHPの文法の基礎から、フレームワークの制作まで。また、セキュリティについても学習できる盛りだくさんな一冊。PHP使いなら是非とも読んでおきたい書籍です。

2.SQLアンチパターン

目的:データベースとSQLの総仕上げとして
難度:普
効果:大
言語:SQL、PHP
概要:データベースとSQLの2つについて、誰もが疑問に思う躓き(つまづき)どころを、要点を絞って、かつ、必要十分に解説した貴重な一冊。データベースの設計は、あとから修正するのが困難なので、早い時期に学習しておきたい書籍です。

3.体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

目的:WEBアプリのセキュリティを万全にするために
難度:普
効果:大
言語:PHP、JavaScript、Java等
概要:WEBアプリの脆弱性とその防止策を網羅した貴重な一冊。WEBアプリの構築の際には、本書に書いてあるセキュリティ事項を常に意識してプログラミングすることが肝要です。

4.リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

目的:コーディングの適切なスタイルを習得するために
難度:易
効果:普
言語:C、Java等
概要:標準的なコーディングがどのようなものであるのかを学習し、そのスタイルを早い時期から意識することで、可読性の高いコーディングが可能となります。コーディング規約に縛られない、独学でプログラミングを学習している人におすすめの書籍です。サンプルコードは易しいので、言語を問わず読むことができます。

5.増補改訂版Java言語で学ぶデザインパターン入門

目的:デザインパターンの入り口として
難度:普
効果:大
言語:Java
概要:プログラミングの文法を学習した後の課題は、どのようにアプリケーションを制作するかです。それに答える設計の標準として「デザインパターン」が存在します。デザインパターンの習得は困難とも言われますが、本書は易しい解説となっているので、デザインパターンの入門として最適です。また、オブジェクト指向の理解が深まる効果も期待できます。

6.PHPによるデザインパターン入門

目的:デザインパターンをWEBアプリに活かすために
難度:普
効果:普
言語:PHP
概要:本書は、PHP言語を利用してデザインパターンを解説しています。デザインパターンの適用例がWEBアプリとなっているので、WEBアプリ制作者にとって貴重な一冊です。他のデザインパターン本と併せると理解が一段と深まります。

7.新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

目的:アプリケーションの改善力を高めるために
難度:難
効果:大
言語:Java
概要:既存のアプリケーションを改善する手法として「リファクタリング」が知られています。本書では、様々な改善手法が紹介されており、お手本がどのようなもであるかを意識して、一つひとつ実践することで、プログラミング力が向上します。その結果、よりよいコーディングとアプリケーションが一歩ずつ実現できるでしょう。

8.Java言語で学ぶリファクタリング入門

目的:リファクタリングの理解を深めるために
難度:普
効果:普
言語:Java
概要:書籍「リファクタリング」を、より簡単に易しく解説した書籍です。これら2冊を読み込むことで、リファクタリングの肝がよく見えてきます。要点を押さえるには本書が役に立つと思います。

9.パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

目的:デザインパターンとリファクタリングの総合的な学習のために
難度:難
効果:普
言語:Java
概要:リファクタリングは、デザインパターンと密接に関連しています。そこで、両者を関連付けて総合的に理解することが重要です。よりよい設計のためにデザインパターンを学習し、それを実現するためにリファクタリングを学習します。

10.オブジェクト指向における再利用のためのデザインパターン

目的:デザインパターンを深く理解するために
難度:難
効果:大
言語:C++
概要:「デザインパターン」の原典です。いわゆる「GoF本」として知られる有名な書籍です。プログラミングの学習の一つの到達点として、是非とも読んでおきたい一冊です。ただ、惜しむべきは、C++でサンプルコードが書かれているため、学習のハードルが一段ほど高くなっています。もっとも、C言語とJavaの既習者であるならば、C++の基礎を学習するのは困難でないため、C++の入門書を片手に、本書を読んでも理解できるのではないかと思います。本書を読了すれば、自己のプログラミング力に大きな自信が付いているはずです。

以上、これまでに読んだ本の中からおすすめの10冊をピックアップしました。もちろん、これら以外にも、良書はたくさんありますし、読んでいない本の中にも素晴らしい書籍があると思います。また、関数型言語等には手を出していないのでそれらの本も抜けています。

ここで紹介した本については、後半からデザインパターンとリファクタリング関連の本に偏ってしまった感もありますが、これらの事項を理解すれば、多くの言語でも通用するプログラミング力がつくのではないかと思います。

プログラミングを学習し始めた当初は、100冊以上読めばハッカーレベルの知識を獲得できると想像したものですが、現実には、それは妄想に過ぎませんでした。多少の自信は付きましたが、100冊を読了しても、まだまだスタートラインに立ったばかりという思いがします。

今後、余力があれば、ネットワークの分野とサーバーの分野についても100冊ずつくらい読んでみたいとも思います。合計で300冊も読めばハッカーに少しは近づけるのでしょうか?想像、もとい妄想がまた捗ります。

【注意】
上記本の紹介はページ作成時点での最新版です。時間の経過とともに、新たな版が出る可能性があるのでご自身にてご確認ください。

カテゴリー: BOOK, プログラミング全般 | コメントする

【書評】アルゴリズムを、はじめよう

アルゴリズムを、はじめよう の書評です。

結論から言うと、アルゴリズムの学習の最初の一冊としてお勧めできる入門者向けの書籍です。

■ 良い点
・ 文章が易しく読みやすい
・ コンパクトなので短時間で読める
・ 重要な9つのアルゴリズムに重点が置かれている
・ 解説が丁寧でステップ・バイ・ステップで進む
・ 図表が多くアルゴリズムのイメージをつかみやすい

■ 悪い点
・ 最後の方に誤字が少しある

■ 総評
アルゴリズムの学習の入門者にお勧めの一冊です。定番である9個のアルゴリズムが重点的に解説されています。文章が読みやすいので短時間でストレスなく読み進められます。

各章の流れとしては、各アルゴリズムの「イメージ(図)」→「流れ図(フローチャート)」→「コード(擬似コード)」の順に解説されます。イメージと流れ図ともにコマ送りのようにひとつずつ進むので、アルゴリズムの内部構造がわかりやすくなっています。そして、最後に、そのアルゴリズムが擬似コードで表現されます。

個人的には、擬似コードではなく、CやJavaでのコードの方がありがたいのですが、情報処理の試験などでは、擬似コードも使われるらしい?のでこれはこれで有りなのかとも思います。

わかりやすさに重点が置かれており、初心者にも易しいのでアルゴリズムの学習のとっかかりに最適な一冊です。

アルゴリズムを、はじめよう

カテゴリー: BOOK, アルゴリズム | コメントする

【書評】やさしいC アルゴリズム編

やさしいC アルゴリズム編 (やさしいシリーズ) の書評です。

結論から言うと、C言語のやさしいコードによる「データ構造とアルゴリズム」の入門書です。

■ 良い点
・ アルゴリズムの基礎を一通り学習できる
・ データ構造も一通り扱われている
・ C言語の復習になり理解が深まる
・ サンプルコードが短めでやさしい
・ 図表も理解を助けてくれる

■ 悪い点
・ コードにある変数名がc,s,wとかで少し分かりづらい

■ 総評
「やさしい」シリーズのアルゴリズム編です。アルゴリズムの入門書では図や表だけの説明でコードが無かったりもしますが、本書では、C言語によるきちんとしたコードが多く記載されています。扱われているコードも短めで分かりやすく、コードと解説文章のバランスも絶妙です。「やさしいC」を読んだならば、なるべく早い時期に、この「アルゴリズム編」を学習すると相乗効果が期待できます。

本書において、いわゆる「データ構造とアルゴリズム」として扱われるのは、7章から10章の約200ページとなっています。それより前半の章では、順次・分岐・反復の構造化プログラミング、そして、ビット演算が扱われており、それより後半の章では、プログラミング作法と開発方法などが扱われています。個人的には、もっと「データ構造とアルゴリズム」に重点があればと思ったりしますが、ビット演算なども必須の知識なので読んでおいて損はないでしょう。

繰り返しになりますが、「やさしいC」と本書「アルゴリズム編」は、セットにして読むことをお勧めします。そうすれば、C言語の難所と言われる『ポインタ』や『構造体』の使いどころが理解でき、かつ、代表的な『データ構造』と『アルゴリズム』をマスターすることが可能になると思います。

やさしいC アルゴリズム編 (やさしいシリーズ)

やさしいC 第4版 (「やさしい」シリーズ)

カテゴリー: BOOK, C, アルゴリズム | コメントする

【書評】フシギなくらい見えてくる! 本当にわかる論理学

フシギなくらい見えてくる! 本当にわかる論理学 の書評です。

結論から言うと、論理学をこれから学ぼうとする人に、論理学の基礎を簡潔に教えてくれる入門書です。

■ 良い点
・ 論理学の文法と原則が簡潔に説明されている
・ 論理学の知識全般にも触れられている
・ 文章が易しく読みやすい
・ 一口メモが理解を助ける
・ 各節が短くテンポ良く読める

■ 悪い点
・ 文法に入るまでの前置きが少し長い
・ 説明不足な箇所が若干ある

■ 総評
論理学に関する要点がコンパクトにまとまっている初心者向きの入門書です。
論理学の文法や原則が簡潔に説明されているので論理学が初めての人でも一通り読了できると思います。

内容的には、命題論理と述語論理までを扱っており、そこでの論理原則がいくつか紹介されています。また、最後の章では、議論において論理的であるための方法等が紹介されています。なお、巻末には、公務員試験等で出題されたことのある論理問題が6題ほど出題されています。

最後に誤植と思える箇所があったので訂正用にメモしておきます。
P108の10行目・・・(誤)¬(P∧Q)(正)¬(P∧¬Q)
多分、こうしないと意味が通らないと思います。ここで一時間ほど躓きました。
もしかしたら自分の解釈が間違っているのかもしれませんが。
なお、公式の誤植・訂正ページを探したのですが見つけられませんでした。

フシギなくらい見えてくる! 本当にわかる論理学

カテゴリー: BOOK, 論理学 | コメントする