2010-03-09[n年前へ]
■「電子ペーパー」でもあるエクセルは、プロトタイピングに向いている。
オライリーの「Excelプロトタイピング ―表計算ソフトで共有するデザインコンセプト・設計・アイデア 」を読みました。この本は、Excelを代表とする表計算(スプレッド・シート)ソフトで、アプリケーションやWEBページの「見た目」や「大まかな動作」の試作品(プロトタイプ)を簡単に作る方法を解説したものです。一番最初は、「えっ?これがオライリーの本!?」と驚くくらい、カラーページが多く、画面キャプチャをふんだんに使いつつ「やり方の説明」が書かれている本です。
「エクセル=時間泥棒」という等式が成り立つ、と私は感じています。ただし、この等式が成立するのはある条件下においてであるとも思っています。その条件とは、「定型的な作業で、とても簡単に自動化できることのはずなのに、それを人が繰り返し似たような作業を時間をかけて行っている場合」「(エクセルでない)違う道具を使えば、簡単に(作成した)道具の再利用が可能になるだろう場合」というものです。
そういった場合でないならば、たとえば、「一回こっきりの作業」や「一番最初のアイデアスケッチ」をするような時であるならば、エクセルを使うのは悪くない選択肢だと思っています。だから、「(とっても簡単な)プロトタイピング」であれば、Excelを使って「やってみる」こともあります。
エクセルは、良くも悪くも、まさに「見たまま」に作業をすることができます。その「特徴」は、「(非常に簡単な)プロトタイピング」をする時には、「特長」すなわち長所になります。ところが、複雑なものを作ろうとする場合になると、その特徴はまさに短所になってしまうのです。たとえば、画面内にとても収まらないような巨大なスプレッド・シートを作る羽目(はめ)になってしまったりします。
あくまで、比較的簡単で小さなものを作るという条件下において、見た目そのままに思いつくままに作業することができるエクセルは、なかなか現実的な「プロトタイピング開発環境」になると感じているです。
私は、エクセルは「電子ペーパー」だと思っています。もともと、紙上で行っていた集計作業を楽にするために作られたのが表計算ソフト(VisiCalc)であって、エクセルはその流れから生まれたものです。「プロトタイピング」という作業には、一番「紙=ペーパー」が最適だと(より正確にいえば、ホワイトボード+記録媒体という組み合わせが一番良いと思っています)、旧ザクならぬ旧世代の私は思っています。だから…というのも変ですが、「電子(処理機能を備えた)ペーパー」でもあるエクセルは、プロトタイピングに向いているように感じられます。
ところで、本書のタイトル「Excelプロトタイピング」には、「やられた」と思いました。なぜなら、私が編集者だったとしたら、そういうタイトルの(シリーズ)本を作ってみたいと思っていたからです。「Excelでプロトタイピング~○×編~」という本をいくつか、編集者として作ってみたかったのです。そして、自分自身、そこから学んでみたかったのです。
その思いは、たぶん自動的に下に出てくるだろう、この記事の「関連お勧め記事」を読む、を眺めればわかるだろうと思います。
2010-03-15[n年前へ]
■あみだくじシミュレーションをエクセルでプロトタイピングしてみよう
「電子ペーパー」でもあるエクセルは、プロトタイピングに向いている。と書いたので、今日は「あみだくじシミュレーション」をExcelで適当に書いて(描いて)みました。そうでした、私は自分自身で作ることが好きなのでした。
作成したエクセルのファイルは、ここに置いておきます。ワークシートの説明(あるいは修正)や、ワークシートを使って色々なことを考えてみよう、ということは明日以降にしてみようと思います。とりあえず、このエクセルのワークシートを実行しているところを動画キャプチャしたものが、下の動画です。
このエクセル・ワークシートは、循環参照を使い、また計算順序を考慮したバッファリングを使うことで計算が成り立っています。ただし、エクセルの実装の仕組みのために、手動計算を行うためにF9を押しっぱなしにしても、反復計算が全セルに渡って行われるわけではないように思えます(これは検証していない未確認情報です)。そのため、計算を確実に行わせようと思うなら、今のところ、(あみだくじの横棒の数だけ)F9を連打する必要があります。
あみだくじを考えるなら群論を使えとか、IF関数を使うのであればVBAを使うやり方と大して変わらないのでは?とか、エクセルでない他のプログラミング言語を使った方がよっぽど楽にプロトタイピングをすることができるのに…!?という感想も多々出てくるだろうと思います。
とはいえ、今日はとりあえず、あみだくじシミュレーションをエクセルでプロトタイピングしてみました。(加減乗除だけで実現したのではない)つまらない実装ですが、(あくまで)暇なときに眺めて遊んで頂ければ、幸いです。
2010-04-08[n年前へ]
■あみだくじ方程式を1次元拡散方程式を使ってエクセルで解いてみる
あみだくじを作ったとき、「アタリ」がどのような分布になるかは、大雑把には、拡散方程式で解くことができます。もし、あみだくじに横線があれば、右へ行ったり・左に行ったり、酔った人がさまよい歩く酔歩(ランダムウォーク)のように「アタリ」を選ぶことができる場所が、推移するわけです。
たとえば、拡散方程式を横軸を縦線感覚で離散化し、縦軸は…これまた適当に離散化し、縦方向単位長さ移動するときに、どれだけ左右への移動が生じるか(=横線が縦線に対して、どの程度の頻度で存在するか)を考えてやり、そしてその離散化された拡散方程式を解いてやれば「あみだくじ」のアタリ分布を計算することができます。
左端と右端の「境界条件」では、そこで「折り返されたような」動きをするわけですから、ノイマン条件を適用してやればよいことになります。また、時間ステップは、いつものように「循環参照による手動再計算」を用いて実現してやれば良い、ということになります。
というわけで、エクセルでプロトタイピングして、作ってみたのが下の計算シートです(作成したエクセルシートはここに置いておきます)。たとえば、下のグラフは、アタリが左から3番目縦下部にあった場合に、一体、どの縦線を選ぶの良いかを示す確率分布になっています。今のこの状態なら、左から1番目、2番目、3番目が大体同じアタリ確率になっていて、もう少し細かく眺めてみると、左から2番目を選ぶのが一番アタリをひく可能性が高い、ということがわかります。
上の例の場合には、一番アタリをひく可能性が高い線が、アタリのある真上より少し端側に寄りました。この「アタリをひく確率が高い線が端に寄る」傾向は、横線が多いほど激しくなります。…とはいえ、あみだくじを作る時のことを考えると、実際にはあまり横線の数が多くないように、つまり、手抜きあみだくじが多いように思います。
そんな時は、手抜きあみだくじをするときは、アタリの真上近くを選び、そうでない場合にはアタリに近い端っこを選ぶ、というのが、あみだくじ方程式から導き出されるおトク知識と言えるのかもしれませんね。
2010-04-24[n年前へ]
■続 エクセルにおける循環参照時の計算順序
「エクセルにおける循環参照時の計算順序」で書いたような反復計算がおこなわれるのは、あくまで「循環参照」がされているセルに対してである。この「循環参照がされているセルに対して」ということは、えてして忘れてしまいやすい。つまり、シートの一部に「循環参照」がされているセルがあれば、シート全体が反復再計算されるのだ、という勘違いをしてしまいやすいように思う。
反復計算がされるのは、あくまで「循環参照」がされているセルだけ、である。「循環参照」がされているセル群だけが反復計算の対象になり、それらのセル群の(前回計算結果との)変化量が所定値以下になるまで、それらのセル群に対して再計算を(前回記事のような順番で)行うことになる。
シート上で「循環参照がされていないセル」に関しては、再計算されることはなく、初回の計算時の値がそのまま使われる。だから、たとえば、どこかのセルに乱数値を返すようなものが含まれていたとしても、つまり、計算ごとに明らかに変化するようなセルが含まれていたとしても、(循環参照がされていない限りは)そのセルの値は初回の計算で決まり、変化することはない。考えてみれば、当たり前の話だが、油断するとその当たり前を忘れてしまう。
えてして、反復計算が行われる時には、シート全体が再計算されるという勘違いが頭の中に忍び込むことがある。そして、その間違った先入観のもとに、エクセルでプロトタイピングをしたりすると、思ったような計算がされず、ラピッド・プロトタイピング、すなわち、素早くたたき台を作とうと思ったはずなのに、多量の時間を費やす羽目になってしまったりする。
エクセルの基本的な機能だけを、しかし、その基本的な機能を深く解説した本を読んでみたい。
2010-06-17[n年前へ]
■エクセルのグラフを立体(赤青メガネ)出力してみよう!?
先日、「3D AVS Player用アナグリフ・ビュアー」を作りました。それは、左右の視差画像出力を行っているアプリケーションのウィンドウを勝手にコピー&画像合成することで、アナグリフ(赤青メガネ)出力を行うだけのソフトウェアです。つまり、左右の視差画像出力を行っていさえいれば、3D AVS Playerでなくても良いわけです。
そこで、今日は同じデータに対して異なる視点から描画した2つのグラフを並べたMicrosoft Excelのウィンドウを、前回作ったソフトウェアで強引にアナグリフ立体画像にしてみることにしました。そのようすが、下(と右上)のスクリーンショットになります。
そろそろ、表計算ソフトのエクセルも立体動画表示機能を備えても良い頃合いであるような気もします。そういうわけで、そんなアドインソフトウェアを作るために、今日はこんなラフスケッチをしてみた、というわけです。近く、エクセルお気楽簡単三次元アドインを作ることができたらいいな、と思っています。