Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

もくもく会 なにわPerl#14を開催しました

もくもく会 なにわPerl#14を開催しました。

なにわPerlとは

基本は初心者・初学者向けの自習スタイルの勉強会(もくもく会)です。お題を決めて何かをする企画の会もあります。

naniwaperl.connpass.com

f:id:tomcha0079:20180612203616j:plain:w280

第14回はもくもく会スタイルで、参加者各々が自分のやりたい事を持ち寄り、途中質問や会話なども交えてもくもくと作業や学習をすすめました。

一人で勉強をすると、どうしても気が散ったり、つい別のことをやったりと(学生時代の試験前のテスト勉強に似ていますね)、なかなかモチベーションや集中力の維持が難しいですが、人の目が近くにあるだけで結構捗ります。また、分からないことを質問したり、気軽に相談できるのも良い環境です。(答えられる人が居た場合ですが)

今回の自分テーマ

今回、自分の題材に選んだのは、結城先生著「Java言語で学ぶデザインパターン入門」を読み進めて、自分の比較的得意な言語(PerlRuby)でコードを書いて咀嚼してみる、でした。

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

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

オブジェクト指向の書き方でのプログラミングをマスターしたいと思い、いろいろな入門書を読んではみたものの、なかなか会得できていないのがもっぱらの悩みです。
クラスやインスタンス、メソッドや継承など、文法的な書き方は理解でき、オブジェクト間でメッセージを送り合って動作させる等、ざっくりした概念もなんとなく分かるのですが、いざ、設計してコーディングするとなると、どういう仕組で書けばよいのか、何をクラスにしてどういう構造で書けばよいのかという、具体化のフェーズがなかなか難しいのです。 (動物クラスから犬や猫を作ったり、吠えさせたり鳴かせたり、はたまたたい焼きの型からたい焼きを作ったりはアホほどやりましたが、実際に機能するシステムをどう書けばよいかが理解できていない)

なので、オブジェクト指向本を読むという視点から少しずらして、より具体的な書き方のセオリーやイディオムを学ぶ方向から考えてみてはどうかというのがこの本を読み進めようと思った動機です。

今回は第1章のIteratorパターンを読み進めてみました。
Iteratorパターンというのは、集合した値を持つオブジェクトに対して、中身を順番に走査していくいわゆるforとかeachの機能を切り出して設計する物でした。
その中で得られた一番大きな気付きは、走査される"本棚クラス"と走査する"イテレータークラス"の関係の書き方の部分で、本棚クラスの中でイテレータをnewする、そのコードの引数として本棚自身を渡すという、一方通行ではないお互いに持ち合うみたいな相互構造でした。

今までのサンプルコードでは、動物クラス->猫クラス->三毛猫クラス->三毛猫インスタンスという、一方通行なプログラムの関係しかなかったので、"オブジェクト間で相互にメッセージを送り合う"イメージが全然沸かなかったのが、とあるクラスが主体となって別のクラスのインスタンスを生成するが、自分自身を引数として渡すという、主従関係でありその逆でもありといった関係のコードの書き方でした。

この解釈が正解なのかどうかは分かりませんが、自分の中で1つの新たな理解が生じ、それを言語化できたのは大きな収穫でした。

結城先生の本がとても丁寧に書かれているので理解しやすいというのももちろんの事、集中した時間で何かしらの成果があったので大いに有意義でした。

成果

ちなみに理解した事を使って、Perlでオブジェクトを使ったズンドコきよしを作ってみました。

github.com

コミュニティの宣伝

初心者向けプログラミング勉強会、Perl入学式in大阪は8月4日(土)開催です。

perl-entrance-osaka.connpass.com

また、Perl入学式の予習復習にも最適な初心者向けの自習の会、なにわPerlにも是非ご参加下さい!