株式会社クリアコード > ククログ

ククログ

«Debianでパッケージをリリースできるようにしたい - mentors.debian.netの使いかた 最新 Groongaユーザ向けの、はじめてのDroonga»
タグ:

SEゼミ - リーダブルコード勉強会(2回目)を開催

2014/07/06にプログラミングが好きな学生のためのリーダブルコード勉強会の2回目を開催しました。内容を知りたい方は資料やこれまでの記事を読んでください。

今回も9割以上の参加者が満足してくれたようです*1。よかったです。

今後の予定

これで今年のSEゼミでのリーダブルコード勉強会は終了です。今後もあるかどうかはわかりません*2。しかし、今回の勉強会の資料はCC BY-SA 4.0*3のライセンスで自由に利用できる*4ので、内容に興味がある人は自由に資料を使って自分たちで開催してみてください。

自分たちで開催するときのヒントになるように、実際に開催してわかったことや工夫したことを説明します。参考にしてください。

わかったこと

わかったことは次の通りです。

  • コードチェンジは「コードを読まざるを得ない状況」を作るには有効
  • 進み具合が大きく離れている人同士でコードチェンジしなければいけない時*5はフォローが必要
  • 課題の内容は今回の勉強会に向いていた
    • 課題で工夫した点は後述

工夫したこと

工夫したことは次の通りです。

  • ランチの時間はメンター・スポンサーと学生さんがゆっくり話せるようにする
    • せっかく現役のエンジニア・人事の人と話せる機会なので活用して欲しかった
  • グループでよいコードをまとめる方法はやり方を提示する
    • グループ・ディスカッションで必要になるようなスキルは今回の勉強会では重要ではないので手順からグループで考えてもらうことはやめた
  • 課題の技術的な難易度を下げる

課題について補足します。

課題は徐々に改良していく課題になることを重視しました。リーダブルコードの必要性を感じることが多いのは既存のコードを改良していくフェーズだからです。既存のコードを改良していくためには既存のコードを読まなければいけません。このときにリーダブルコードかどうかが効いてきます。

そのため、技術的な難易度は下げました。具体的にいうと、言語の基本的な機能だけを使えば十分な課題にしました。例えば、データは文字列だけにして、さらに文字列操作はなるべくしなくても済むようにしました。C言語で動的にメモリーを割り当てないで済むように、文字列長の最大サイズなども決めました。引数がとても多い実行例になっているのも同じ理由からです*6

技術的な難易度は下げたのですが、「プログラムの抽象度」を上げていかないと読みにくいプログラムになるような内容になっています。もう少し言うと、「1個だけ扱っていたものをn個扱うようになる」というのを繰り返すようになっています。例えば次の通りです。

  • レシピ名を1つだけ扱えばよかったものがレシピ名を3つ扱わなければいけなくなる。
  • レシピの属性は名前だけだったのが、IDとURLも必要になる。
  • 1ユーザーだけ扱えばよかったものが4ユーザー扱わなければいけなくなる。

プログラムの抽象度を上げていくには既存のコードを改良しないといけません。そうするとコードを読む必要がでてきて、リーダブルコードを意識せざるを得ない、ということを狙っています。

課題をやってみた人は気づいていましたか?

まとめ

  • リーダブルコード勉強会を2回実施した
  • 2回とも好評だった
  • 勉強会用の資料は公開している
  • 資料はCC BY-SA 4.0のライセンスで自由に利用できる
  • コードチェンジは「コードを読まざるを得ない状況」を作るには有効
  • 課題の技術的な難易度は低めにした
  • 課題は、既存のコードを読まないとリーダブルなコードを書くのが難しくなるようにした

主催のSEプラスさん、スポンサーの楽天さん、クックパッドさん、DeNAさん、メンターの川原さん、たなべさん、参加した学生のみなさん、ありがとうございました。いい経験になりました。参加者のみなさんがこれからリーダブルコード力を上げる助けになれたならやった甲斐があるというものです。

勉強会の内容を考え、実際にやってみた側としては、メンターの川原さんとたなべさんが「楽しかった」と言ってくれて非常にうれしかったです。

おまけ:関連URL紹介

勉強会中で出てきた話題に関連するURLを紹介します。

*1 アンケート結果より。「大変不満だった」「不満だった」「ふつう」「満足した」「大変満足した」の5段階評価で回答してもらいました。前回は「満足した」の人数が一番多かったのが、今回は「大変満足した」の人数が一番多かったことに驚きました。

*2 企業研修などでやってみたいという方はお問い合わせください。

*3 著作者は「株式会社クリアコード」。

*4 著作者を表示すればコピーしたり再配布したりできる。商用利用もできる。変更後も同じライセンスにするなら変更してもよい。

*5 たとえば、参加者数が少なくてチェンジできる選択肢が少ない時。

*6 「例」なので、実行例通りに実装しなくてもよいのですが、多くの人は実行例通り実装していたようです。

*7 横山さんはメンターでも参加者でもありません。Web上に公開されている情報を見て趣味で実装したものです。たぶん。

2014-07-07

«Debianでパッケージをリリースできるようにしたい - mentors.debian.netの使いかた 最新 Groongaユーザ向けの、はじめてのDroonga»
2008|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|
タグ:
RubyKaigi 2015 sponsor RubyKaigi 2015 speaker RubyKaigi 2015 committer RubyKaigi 2014 official-sponsor RubyKaigi 2014 speaker RubyKaigi 2014 committer RubyKaigi 2013 OfficialSponsor RubyKaigi 2013 Speaker RubyKaigi 2013 Committer SapporoRubyKaigi 2012 OfficialSponsor SapporoRubyKaigi 2012 Speaker RubyKaigi2010 Sponsor RubyKaigi2010 Speaker RubyKaigi2010 Committer badge_speaker.gif RubyKaigi2010 Sponsor RubyKaigi2010 Speaker RubyKaigi2010 Committer
SapporoRubyKaigi02Sponsor
SapporoRubyKaigi02Speaker
RubyKaigi2009Sponsor
RubyKaigi2009Speaker
RubyKaigi2008Speaker