●ドキュメント化不要?
私はC#のプログラムを作るときには、いきなりコンパイラのエディタに向かってがしがし書いてます。
ずいぶん前に使っていたUNIX-Cの時にはさすがにいきなりはプログラムを作れなかったので、ある程度はテキストとして仕様書など書いたりしていました。
あの頃を思い返せば最近のプログラミング環境は本当に素晴らしいなと感じます。
さくさく作れるのは主に2つの素晴らしい技術があるからです。
1つ目はOOP(オブジェクト指向プログラミング)の絶大パワー。
オブジェクトとしてクラスにまとめ、プロパティやらメソッドを実装してNewする。
そういう部品をどんどん作っていく作業、さらにその部品を組み合わせる作業の2フェーズでとても複雑な仕事も簡単にプログラムに表現できてしまいます。
2つ目にIDE(統合開発環境)の絶大パワー。
コードを書くときにほとんど識別子は頭文字一つとタブキーあるいはデリミターとなる記号の入力。これだけで勝手に入力が完成します。
さらにほどよく自動整形されます。
これのおかげでいくらでも長い識別子を作ることも平気になりました。
昔はコード入力の労力を極力省くために”大域的な識別子ほど短く”みたいなダメダメっぽいスタイルでもやっていました(汗)。
もちろんソースは可読性が下がりましたし今思うと本当に非生産的だったと思います。
ほかにも仕様書要らずの理由は
「一人で作っているからドキュメントでの他者との疎通なんていらない」
とか思っています。・・・いや「いました。」
●苦しくなってきた
・・・といった具合に仕様書要らずの楽々環境を手にした私。
なるべく汎用的なゲーム製作用ライブラリを構築しようと
これまでやったことが無いくらいにかなり大掛かりな構想を練って、
どんどんクラスを量産している日々でした。
それがだんだん非常に具合が悪くなってきたのです。
なんだか自分のプログラムを把握しきれなくなくなっているのです。
例えば同じようなクラスがごちゃごちゃ出来て整理がしきれなくなっています。
同じような、なら良いですがうっかり全く同じクラスを作りかねない状況です。
●初めて出くわした問題
私は難題に出くわしたら
・ステップ1 Google先生とがんばる
・ステップ2 それでダメなら誰かに聞く(※1)
の2ステップで大丈夫、みたいなエントリーを前に書きました。
Google先生だけでがんばる(その1)
Google先生と一緒にがんばる(その2)
でも1と2だけじゃあどうしようも無い問題もあることに初めて気付きました。
「自分で解決が十分に出来る範囲にあるのにどうしても解決できない」
のです。
・・・本当にどうしたらいいのでしょうか?
※1:ImageUtils画像処理ライブラリの作者でもあるjunkiさんには、このところかなり甘え気味かも知れないなと反省しています。
●あわや車輪の再発明
自分の問題点は何だろう?何がまずいのだろう?
なんともモヤモヤした気分がずっと続いていました。
いや、おぼろげにドキュメント化がキーワードかなあとか思って
やみくもにGoogle先生に聞こうともしたのですが、
なかなか思うような答えにたどり着けません。困り果てました。
実はかれこれ半月以上は悶々としてたのです。
そしてふいにUMLにたどり着いたのです。
自力で既存の車輪を見つけられたのはある種の奇跡です。
あと少し遅かったら・・・
車輪の再発明 - Wikipedia
(o;ω;o)
四角い車輪の再発明 "en:reinventing the square wheel"
「車輪の再発明」をしようとしてさらに役に立たないものを作ってしまうこと。
・゚゚・(/□\*)・゚゚・
●技術って勉強するためじゃなく使うためにあるんだね
UMLという言葉はネットでプログラムの情報とか見たりするたびに、
あるいはわんくま同盟の多くの方のエントリーアーカイブにも見かけました。
いつも近くにあったと思います。
でも具体的にこういうところで使う技術だというのは気が付いていませんでした
そして自分がそういう窮地に陥るというのも考えていませんでした。
気分はまさにJ-WALK(※2)
考えたら必要も無いのにエントリー立てたりしませんよね。
それはつまり現実のSEの人たちが常にこの問題に直面していることを物語っていたのですね。
言い忘れてたかも知れませんが私は今を生きるSEでも何でも無いです。
(※2)http://music.yahoo.co.jp/shop/p/53/11579/Y003959
●そうと決まればさっさと始めよう
今はとりあえず以下のページから勉強を始めました。
http://mamezou.net/modules/xfsection/index.php?category=2&start=10&orderby=weight
http://www.objectclub.jp/technicaldoc/uml/
http://www.asahi-net.or.jp/~DP8T-ASM/java/uml/index.html
良さそうなアプリも見つけました。
http://journal.mycom.co.jp/news/2006/05/23/341.html
●勝手なまとめ
今回は私には使える道具が少なかったのが問題だったと判明しました。
UMLだけが回答じゃないような気もしています。
でも、まずはUMLで少し自分の把握できる範囲が広がりそうに思いました。
本当はわんくま同盟に居てこんなエントリー書いてたら相当恥ずかしいのは承知しています。
ですが私のように同じ様にハマる人は世の中に私だけじゃないと思うんです。
私はわんくま同盟のほかの人のように難しいことは書けないので、
そういうハマる人たちと同じ立場で色々と体験談を残しておいて、
Google先生がいつか誰かのために役立ててくれる事に期待しようと思います。
それにしても我流独学ってのは引率の先生の居ない児童のようなものです。
自分で言うのもアレですがとても危なっかしいです。
私はほかにも色々当たり前のことに気づいて無いと思うので、
もし危なっかしく車道を歩いているのを見かけたなら、
いつでも遠慮なくクラクションを鳴らしてもらえると助かります(汗
今回はいっぱい突っ込みコメントがありそうでちょっと怖い・・・