higan96技術メモ

https://github.com/higan96

【再掲】やってみた「WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法」

ULOGの方が結構落ちたりしててるので、こちらに再掲。
http://ulog.cc/a/higan96/14248
b.hatena.ne.jp



WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法

ここ半年ほど、上記エントリーでまとめられている技術書を読みながら、PHPの勉強をしていました。
そして3日前、借りているさくらのVPSの方にSymfonyフレームワークで作った簡単なページを公開しました。

はてなのHotエントリーには、よく勉強ノウハウ系の記事があがっていたりしますが、その記事を実際にやってみたよ、という実践記のようなものは少ないように思います。今回は私が実際におこなった、 WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法で挙げられていた勉強法と技術書の感想をつらつらと書いていこうとおもいます。

ちなみにプログラミングの経験としては、大学の授業でVisualBasicを触り(教養科目)、趣味でActionScript3.0を使ってたくらいです。


読んだ本

「痛快!コンピュータ学」
「痛快!コンピュータ学」はとても良かった。
原始的な計算機の単純な構造から、電磁石、真空管トランジスタ、という技術的な進化の過程をなぞりつつ、そこにある情報理論の解説がされています。本の中ではさらに、プログラミングとアルゴリズム、インターネット、Linux、(そしてTRON)まで触れられており、現代までの情報技術の発展をひと通り追うことができるようになっています。文系の自分にも理解しやすい内容でした。


「Head First PHP & MySQL
良本です。PHPMySQLの基本がわかり、とりあえず動くものがつくれるようになれます。
これでなんでも作れるぜ!という気分になります。
そしてこの本で特に面白い特徴が、構成がストーリー仕立てになっているところです。一つ例を挙げると、

1. やった!Webサービスの管理画面を作ったぞ!
2. 投稿が根こそぎ消される
3. 管理画面にアクセス制限をかけていなかったよ・・・
4. それではユーザー認証の仕組みについて考えてみましょう

というような感じに本は進んでいく。とても楽しい。やったことないけど、進研ゼミみたいです。

本の通りに進めていけば簡単なWebサービスを作れるようになります。練習問題もあるので、それも素直に解くと理解の助けになります。ただ、8章についてはサンプルコードの通りに打っても動きません。よく読まないと、どこがおかしいかわかりませんでした。

悠長といえば悠長なのですが、初学者の私にはキャッチーで良かった。ちなみに「訳者あとがき」も面白い。


「パーフェクトPHP
この本については、結局3回ほど写経をしました。

まずもってフレームワークというものがわからず、どこでいったい何が起こっているのかさっぱりわかりませんでした。フロントコントローラ?MVC?ルーティング?という感じで、「とりあえず写経したけどなんで動くの?」という有様でした。

手応えが出てきたのが、サンプルのフレームワークを使って簡単なブログを1から作ってからでした。何度も本を見返して、ググって、PHPマニュアル見て、ググって、投げ出して、ゲームして、ということを繰り返しました。そこまでやって、どうにか、どこで何が起こっているのか、どういう思惑でそれぞれの機能が作られているのか掴めてきたという具合です。

この本についてはフレームワークをある程度勉強してから読んでも良かったかな、とも思いました。

MVCパターンについてはSymfonyフレームワークのドキュメントにある説明がとてもわかりやすかった。
http://www.symfony-project.org/gentle-introduction/1_4/ja/02-Exploring-Symfony-s-Code

手強い本でした。私の家にある技術書で一番ボロボロの本です。


代わりに読んだ本

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

「3分間HTTP&メールプロトコル基礎講座」の代わりに読みました。
この「 プロになるためのWeb技術入門」については、3章まで読みました。あとの章は内容的にあまり惹かれなかったので読みませんでした。HTTPの基本について、実際に転送の様子を監視ソフトを使って見ながら勉強するところが分かりやすかった。ちなみに、この本で紹介されている方法を使わなくてもFirefoxLive HTTP Headersアドオンを使えば同じことができます。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
こちらも「3分間HTTP&メールプロトコル基礎講座」の代わりに読みました。
この本は「痛快!コンピュータ学」と同じように仕様策定の歴史的な経緯に触れながらHTTPやHTMLの勉強を進める本です。簡単なHTML程度しか出てこないので、読み進めるのに習得言語のバックグラウンドが問われないのも良いところ。

歴史的な経緯に触れながら進む技術書は、原始の「単純な構造」から現在の「複雑な何か」を説明してくれるので分かりやすくて、私は好きな構成だったりします。悠長ですが。


その後読んだ本

はじめてのCentOS6 Linuxサーバ構築編 (TECHNICAL MASTER)
はじめてのCentOS6 Linuxサーバ構築編 (TECHNICAL MASTER)

勉強用の開発環境にUbuntuを使っていたのですが、運用はCentOSでやってみようと思い、買った本。
GUIでのCentOSの操作をインストールからWebサーバ、Apacheの設定まで説明している。
私の場合は勉強にUbuntuを使っていたので、知っていることが多かった。

symfony 1.4によるWebアプリケーション開発―オープンソース徹底活用
symfony 1.4によるWebアプリケーション開発―オープンソース徹底活用

どのフレームワークを使うか迷っていたのですが、次のような条件で探した結果Symfonyを選ぶことになりました。まずPHPでできていること、次に出版年の新しい解説書があること、というような2つの条件です。以上の理由で選んだのですが、開発に使っているNetbeansがデフォルトでSymfonyフレームワークに対応していたのも選んだ理由のひとつではあります。
この本については解説がとても丁寧でわかりやすく、本格的なフレームワークに初めて触れた私でも理解できる内容でした。Symfonyについては、まだ基本的な部分のみで、機能を理解しきってはいないので公式のドキュメントをちょっとずつ読み進めている状況。


まとめ

WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法は本当に良い記事でした。

何冊か読まなかった本もあるんですが、読み進める順番や勉強のすすめ方について、参考になる部分がいくつもありました。
特に「ブログをつくってみよう」の項については良かった。具体的に何を行うかのメニューが書かれていたので「どう作るか」だけ考えればよいことになります。これによって、勉強した内容のアウトプットという目的がスムーズに達成されました。何を作るかというのは、どう作るかを考えるより手間なんだと思います。とてもありがたかった。

※作ったブログはパーフェクトPHPで作ったフレームワークを使ったものです。githubに上げました。


あと、プログラミング学習についてでですが、より基本的なことを学ぶには、やはり本というのは優秀だと思いました。ですが、より現場に近い実践的な内容についてはネットで探したほうが見つかりやすい印象です。(さくらのVPSは使えるようになるまで、ネットで調べまくった。)ただそのネット上の知識は、書いた人のメモ用だったりもするので悠長な説明は飛ばされていたり、たとえ解説記事であっても前提として求める知識があったりします。
全部本で勉強、というのは逆に難かしいので、ある程度分かってきたらWebで、というのがバランスがいいと思います。



http://higan96.info
ちょっとデザインも機能もあんまりなので、これから更新予定。

独学で2度目のWebサービスリリースまでにやったこと

先日Webサービスをリリースしました。
http://bnqa.jp

今回、2度目のWebサービス公開までにやったことや考えたことについて書いていきたいと思います。



【再掲】やってみた「WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法」
このエントリを書いたのが2012年の5月なので、1年半前くらいそこからさらに独学で勉強を続けてました。エントリの時点で半年やったと書いてあったので、2年間独学で続けてきたことになります。


ここまでよく続いたな、というのが自分の感想ですが、自分の置かれた状況を考えればやらないわけにはいかなかった、といったとこです。そのあたりは別の機会に書こうと思います。


やったことリスト

PHP, MySQL

一番大きな理由としてはこちらのエントリPHPに関する記事であった、というのがあります。とっつきやすさもあってよかった。とりあえず動くものはすぐ作れるので、やりながら学ぶタイプの人でWebアプリ作りたい人は、PHPって選択肢は悪くないと思います。
おすすめの書籍はパーフェクトPHPです。
MySQLについては書籍やネット上の情報が多いことが選んだ理由です。

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

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


http://bnqa.jp/item/4774144371


Symfony2

今回作ったアプリはSymfony2で作られています。Symfony2を選択した理由としては、PHPでいくつかあるフレームワークを比較検討したうえの選択、、、とかではなく、こちらの本がSymfony2に関する本だったからです。

効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門

効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門


http://bnqa.jp/item/4774150827


とてもいい本です。こちらの本を選んだ理由としては、パーフェクトPHPを執筆された方の本だったからです。執筆されたのは小川 雄大さんという方。

この本の良い所は、「モダンなPHP開発の流れ」を体験できるところです。個人的にはGitとテストに触れることができた点が良かった。モダンな感じで。ただ、本の中でも言及されているとおり、全体の大まかな流れについては本通りに進めていけば体験できるチュートリアル形式の構成になっているのですが、個別の詳細な解説は大きく省かれています。これらは紙面の都合で、しかたのないことだと思いますし、中途半端に詳しくやってコンセプトがブレてもしょうがないですし。本以上のことは、自力でやりました。あとこの本はSymfony2.0で書かれていますので、バージョン2.1位上で本を進めていこうとすると結構大変ですよ、というのは経験者の言葉です。ただ2.3が長期サポートなので、2.3で勉強することをおすすめします。

Symfony2は日本語情報が少ないです。さらにSymfonyユーザー会のみなさんが公開されている公式ドキュメントの翻訳はバージョンが2.0のものです。そのため、バージョン2.3位上を勉強する場合、本家サイトで情報を探すことになります。なので英語をよく読みました。それとStackOverflowにもおせわになりました。「エラーでググル→情報はStackOverflowだけ」とか結構あります。ある程度、英語は読めたほうがいいと思います。

Linux

勉強を進めてくとXAMPP、MAMPではダメなことに気が付きます。いろんな設定を試したいとか、特定のバージョンを使いたいとか。個人的にはVMwareFusionなんかの仮想環境でLinuxつかって、スナップショットを使いつつ、何度も環境ぶっ壊しながら勉強したほうがいいと思います。自分はUbuntu使ってました。
サーバはさくらのVPSの2Gプランを利用してます。当初、AWSの使用を検討し、microインスタンスで実験を繰り返していたのですが、やはり個人プロジェクトとしてはコストが大きすぎると判断して、今回は見送りました。でも本当は使いたいですね。

jQuery

Javascript勉強中です。。はやくWebサービスを完成させたかったので、開発優先でちょっと勉強不十分です。よく読んだのは以下の本。


http://bnqa.jp/item/4774148563


TwitterBootstrap3

スマートフォン対応はとても悩んでいたので、よいタイミングで公開してもらえました。レスポンシブデザインについては、ちょっと思うところがありますが、スマートフォン対応が小さな手間でできたことは良かった。TwitterBootstrapの学習はドットインストールを利用するのがおすすめです。

その他

当初、AmazonのAPIとの通信がボトルネックになっていたので、Memcachedを導入しデータを一定期間保存するようにしました。データの保存期間はAPIの利用規約を順守するように設定し、そのタイミングで更新するようにしています。デザインについては、友人に見せたら「Twitterじゃん」と言われましたが、参考にしたのはYoutubeです。

ノンデザイナーズ・デザインブック [フルカラー新装増補版]

ノンデザイナーズ・デザインブック [フルカラー新装増補版]


http://bnqa.jp/item/4839928401



大変でしたが、多くの学びがあり、また作ってる最中はとても楽しかった。まあ大変でしたが、とても。