こんにちは。
「8時間耐久! class の class」というイベントに参加してきました。
先生は、 @yando さん。以前にも8時間耐久CakePHP2勉強会で基礎を叩きこまれてきた!(ちなみに9時間だった!!大阪と福岡でもあるらしい)というイベントでお世話になりましたし、同じくオープンソースカフェで開かれたコードレビューの会でもお世話になりました。
安藤さんは、
- Cakeイベントで僕のphp力を把握
- 同じくコードレビューでころぐのソースの一部を見て、さらに把握
- 僕が先生役をやらせてもらったWordPressのテーマ作成を見てさらに把握
という流れの中で、僕の実力と次に覚えるといい内容を教えて頂きました。
というか、スライドごとにでてくる小さな問題とか、完全に僕が分かっていないところを突いてくるなど、僕の頭の中が分かっちゃってるのかな。。
クラスと僕
半年以上前から、クラスの勉強しないと、という意識がありました。
$this->hoge;
$this->moge();
が出てきた途端に、人のソースを読めなくなるという感じで、本を読んでみたりもしていたのですが、習得できずにいました。
今回の講座の優れたところ
関数だけで全てを処理することの弊害(煩雑、長くなる、他と関数名がかぶるかも、メンテできない)を説明した上で、その解決方法としてのclassという視点で始めてくれています。
まず、「こういう機能を関数で書いてみなよ」→「煩雑すぎるでしょ?」→「クラスでやるとこうだよ。使ったほうが100倍いいでしょ?」というながれ。
最後には、「なるほど、それでみんなclassを使っているのだなぁ」と理解できる内容になっていました。ありがとうございます!!
classの勉強をして思ったこと
コードの見やすさ、使い(回し)やすさ、メンテナンスのしやすさについて、今まで意識してできるだけ分かりやすく書いてはいたものの、classを使ったほうが断然よいということが分かりました。
やっぱりリファクタリングをする時や機能追加をするときは自分の書いたコードをはじめから全部読んで、一度自分の頭のメモリいっぱいにすべての関数やその関係などを詰め込んでから、色々試しつつ、みたいなことになっていたのでした。
さらに印象に残ったところ
安藤さんが、
- 人間の頭はそんなに賢くない
- エディタで一画面に収まらないとか、理解できなくなる
- 引数多すぎるとか、あとから見て分かんなすぎてヤバイだろ
- 大きめの機能を関数だけでやるとか修行ですか?
と言っていたのが印象的でした。
「複雑なプログラムが間違いなく動くぜ」というのが偉いのではなく、「複雑な処理も分解して、ひとつひとつ簡単にしていって、普通に理解できるようにできる」のが偉いのですね。
プログラムを書く一歩手前の、人間の仕事の仕方についての理解が、すでに効率的で合理的なことが大事。これが一番大きなインパクトだったかもしれません。
また、後半触れられていた「classを導入することでテストの自動化もできる」というところとも関係するのですが、安藤さんが言っていた「会社のシステムに自分のコードをアップするのとかってある意味超恐怖なわけですよ」というのも本当にその通りで、「有限の能力を持った人間が、自分の脳力の有限さ具合を自覚して、プログラムを利用することですごいことを実現するための方法を確立する」という、プログラム以前の合理化について学びました。
できるプログラマっていうのは、世界との対峙の仕方が違うんですよね。がんばります。
次にやること
これを踏まえて僕が次にやっていくことは以下のことになるかと思います。
- @jim0912, @wokamoto, @miya0001, @takahashifumikiさんたちが書いたプラグインのソースを読んでみる(今まで、断片的にしか分からなかったのです)
- 今後書くコードに、classを導入する
- 実装後のメンテナンスのための環境を整備する(テストとかやってみたい)
- テスト駆動開発の世界へ!!
安藤さん、本当にありがとうございました!
資料
安藤さんのブログ
安藤さんのスライド89枚!
動画
注意
スライド内部で「プリンス」という言葉がでてきますが、なんのことだかは僕にもよく分からないですw
コメント
コメント一覧 (2件)
[…] 8時間耐久 Classのクラス […]
[…] 少しずつできることが増えて嬉しく思っています。念願だったphpのクラスについても、classのクラスを経て、読んだり書いたりできるようになりました。殊に、WordPressのコアのソースを見 […]