おはようございます。ファガイです。
今日は昨日思ったこと書きます。まとまってないので、書いていくうちにまとまっていくはず。
自分がPHPフレームワーク(Fuel)を勉強するようになってから、最近いろんなことで自分が変化していくことに気づいてきた。
オブジェクト指向は大体理解できてきたけど、フレームワーク何回も挫折して、物作ったことないよう・・・・なPHPerにこの記事は勧めたい。
まず、はじめに言えることがある。それは思った時に調べて実践することが大事だということ。
まぁ、なんでそんな事言うかって言うと、俺の場合によくあることだ。
一応、調べておくけど、結局調べただけで詳しく調べて実践しない。つまり何が言いたいかというと、俺はPHPだとファイル操作系やDB周りが苦手だ。(他にも色々ある)
だが、 http://csslg.doujin.so/ これを作れた。
ここで、俺は重大なミスをする。「結局は調べればなんでも出来る」と。実際、話としては間違ってはいないと思うのだがこのアプリを作れた1つの理由は俺はHTMLとCSSを独学していたということである。そしてjQueryというものを知り、元々JavaScriptの文法は苦手だった俺がjQueryを使えばほとんど難なくこのアプリを作ることが出来た。
ここでなぜ俺がjQueryを使えば難なくいけたのか。それは書き方の簡易さと値の取得の簡易さがあると思う。
そしてそれは自分が知っていること(例えばHTMLのセレクター)が含まれているということ。
この知っている、が大事。
知っている、というのはただ知っているだけという事なのだが、理解していなければそれを使いこなすことは出来ない。ここで俺は知っているの意味が曖昧何じゃないかなと思う。俺は元々ボキャブラリーが少なく、知っているを理解している、と同等の意味と勘違いしてしまった。
だが実際は違っていて、例えばファイルのアップロード系はまずやってみなくてはわからない。だが、リファレンス本等に書かれてるからまあ後でいいだろうと考える。そこがもう間違っているのだと思う。
ファイルのアップロードなら、どんなに汚くて、脆弱性があったとしてもアップロードして、そのファイルを保存し、そのファイルの内容を表示してみるという一連の動作をしておくべき。
最終的に脆弱性とかの話っていうのは別の本で学べばいい。(例えば徳丸本)
つまりは、あまり飛ばして考えてもアイデアは生まれない。正確には、ファイルのアップロードのコードを書かずに、大きなものを考えてもアイデアは破棄される。その結果、アプリケーションを作れないことに繋がる。ちなみに、この大きなものというのは自分の中でのアプリケーションの大きさである。大規模という意味でもない。
また、もう一つ良い事を書こう。
ある程度フレームワーク等を理解できた時(本等を1冊終わらせた時)、他人が作ったコードを見たほうがいい。今ならgithub等、いろんな所に他人の作ったコードはあるからあまり困らないだろう。
私の場合だと、FuelPHPをある程度理解できたから、勉強会の時に知ったstationwagonというFuelPHPで作ったブログシステムを解析することにした。(FuelPHPは最近出来たフレームワークでありまだ小規模なアプリケーションが多かったので私は容易にこれを見つけることが出来た)
まあ、他人のソースコードというものを見て理解するのは難しいのだが、完璧に理解しなくてもいい。わからなかったらマニュアルを見てみる。それでもわからなかったら後にとっておく。ここで俺がわからなかったのはAuthパッケージやSessionクラス。はじめてのフレームワークとしてのFuelPHPには詳しく述べられておらず、この段階ではまず理解できなかった。
しかし、Sessionクラスのset_flashやget_flashに関してはある程度わかった。なぜかというと、他のフレームワークでも同様の書き方をしているから。調べていれば次第に日本語で書かれたブログ等が出てくる。そこで俺は理解した。
また、Authパッケージに関してはFuelPHP入門が役に立った。はじめてのフレームワークとしてのFuelPHPに書かれていないクラスの内容が詳細的に述べられている。しかし、実践的ではない。いや、実践的ではないわけではないのだが多少作りに問題があるといった所。ここではじめてのフレームワークとしてのFuelPHPで覚えた知識が役に立つことになった。
この循環に入れたことは自分としてもとても良いことだと思う。まずもって、FuelPHPの勉強会に参加していなければFuelPHPとは出会うこともなく、はじめてのフレームワークとしてのFuelPHPにも出会ってないのだ。(FuelPHP入門は書店に置かれているので次第に知ることにはなったかもしれない)
最後に言えることをまとめる。
1.思った時にすぐ調べて実践する。実践することが大事だ。
2.他人のソースコードを読んでみる。分かる所だけでもいい。
3.本を買う。そして読む。最初は実践的な物が良いと思う。リファレンス本はほぼ必須
4.勉強会に参加する。なんとなくがむしゃらにやるよりも先人の言葉はとても役に立つ。
こういうことではないかと思う。
そして、関係ないが、今俺はニートだ。そして仕事の意義を探している。だって、意味なく仕事をやるということは自分自身にとってどうなのだろうと思うから。結局仕事の知識が役に立つこともあるけど、自分みたいに根だけはまじめだと自分は役に立ってないんじゃないかとネガティブになっていく。まあ、それは自分の考えが甘いからなのだと思っている。こういう物を作りたいからこの会社に入る。これだと自分がその物を作りたい、ということに考えが行く。つまりは、仕事に面白さを持たなくなる。だから俺はもう少し仕事の意義というものを勉強会等で確実なものへ変えれたらなと思う。
コメント