Hatena::ブログ(Diary)

obfuscatism このページをアンテナに追加

2009-01-25

[] 難読化ツールソースコード公開

 難読化ツールのソースコードを公開します。コンパイルバイナリは含まれていません。ライセンスは自動化ツールと難読化エンジンの両方ともGPLv2となっています。

 READMEにも書いていますが、実験・研究目的以外には役に立たないと思いますので、ご注意を。VC++プロジェクトを自動的に編集したり、アセンブリソースコードを直接編集したいなら、改造するのにぴったりな基盤になるかもしれません。

obfuscator_25_jan_2009.tar.gz

[] コードをレビューしあうことがない

 人と技術的なことを話す機会は恵まれているように思うものの、人のコードをレビューする機会、される機会はほとんど無い。あえてあげると、「プログラミング入門」という授業の課題でTAからコメントをもらったという程度。

 難なく読めるコードを自分は書いてるつもりでも、複数人で取りかかっているプロジェクトでは自分のコードが足手まといになっているかもしれない。

 実のところ、直接指摘されることも、遠回しにソースコードが汚いと指摘されることもない。人のコードを読む機会があると、自分のコードがなんとなく汚いとわかったりする。汚いとわかったときすぐには原因がわからなくて、数週間してやっと自分のコードは変数名が短すぎるとわかった。それも、書籍(ケント・ベック『実装パターン』)を読んで「自分のコードは読むためじゃなく、書くのが早いことを優先したコードになっている」と気がついた。自力で気付いたのではなく、書籍を読んで初めて自分の悪習に気付いたわけ。

 コードレビューは、複数人で行うのが望ましいという。残念ながら、コードレビューをしたりされる習慣が無い。学生のうちはそんなもんなのか。いや、半分そうかもしれないけど、複数人でプロジェクトに取りかかる機会が少ないのも理由かな。

 今後、意識的にコードを人に見て評価してもらうようにしたらよいかもと思った。しかし難しそう。手っ取り早いのが、複数人でプロジェクト組む、そして頻繁にレビューしあうことかな。それも難しいわけですが。きちんとマネージメントしてもらえるなら、オープンソースは有り*1かと思う。ただ、オープンソースプロジェクトでレビューも含めてきっちりやるっていうのは、レビュー未経験の学生が自ら踏み出すにはちょっと敷居が高いのかな?

*1:私が興味ある分野なら、誘ってもらえればが参加するかも、という意味で

viverviver 2009/01/25 07:03 > コードをレビューしあうことがない
同意。読まれて、かつ指摘してもらえることは少ないですよね。
私がPartty!.orgを始めた理由にも「読んで欲しい」と思うところがあったのですが、コードを読む側も読まれる側も、それなりにコストを払って臨まないとコードの意図を把握するのが難しいので、両者が同じ目的(プロジェクト)を共有していないと取り組むのは難しいだろうという結論に至っています。

複数人でプロジェクトに取り組むのは前提条件で、その上で効果を上げる方法論としてコードレビューとか、ペアプログラミングとか、XPがあるのだと思います。
しかし逆に言えばコードの品質を改善していくための実践的な手法は既に確立されているので、一番の障害は目的を共有するところにあるのではないでしょうか。

あと学生同士だと、きちんとマネージメントしてもらえるなら、という条件はやっぱり困難だと思います…マネージメントはどうせ頼りないから半分は自分で仕切ってやる!くらいの意気だとやりやすいかも ^_^;)

obfuscationobfuscation 2009/01/25 16:16 確かに同じ目的・目標に向かって協力しあう体制は必要で、難しそうですね。でも無理に人を集めるところまで求めないで、友達・知り合いに「このコード読んでー」とコードの一部をチェックしてもらうよう頼んだ方が早い気もします。それとこのエントリの目的というのは、「読んでもらう」ではなく、「自分のコードの悪い部分を指摘してもらいたい」というのが目的だったりします。そうなると、自分のコーディングスタイルを見つめ直す機会は工夫次第かなあと思っています。

> あと学生同士だと、きちんとマネージメントしてもらえるなら、という条件はやっぱり困難だと思います…
マネージメントに専念できる人がいれば問題ないように思います。同人でゲーム開発してる人を見ると、まとめる人がうまくやっていれば、とにかく回ってはいるみたいです。自身を含めたメンバー全員のスケジュール管理なんかが正しく行われていれば、学生同士だからというのは困難な理由にならないのではないでしょうか。結局はプロジェクトを引っ張る人のやる気次第ですかねー。