2009-07-14[n年前へ]
■「エクセルで電界シミュレーション」と「ウィンドウ半透明化マクロ」
「各種方程式を差分化する方法を学び、実際に表計算ソフトで電界シミュレーションと伝熱シミュレーションをできるようになろう」という講習会を手伝う準備をした。準備のひとつに、受講者の実習作業を前もってやってみる、というのがある。すると、どの部分がわかりにくいとか・難しいとかいったことがわかる。
表計算ソフトで電界シミュレーションをする時に、「わかりにくい」と感じる部分のひとつが、複合誘電体の電界計算だ。差分化の仕方と、その差分化されたものを表計算ソフトへどのように実装するかにもよるが、今行っている実習では複合誘電体の電界計算部分に、わかりにくい部分がある。
その実習では、ポワソン方程式を解くために、エクセルの3つのワークシートを使う。電位を計算するシート・空間の各領域における誘電率分布を入力するシート・空間の各領域における電荷分布を入力シート、という具合である。そして、わかりにくいのが、「電位分布シート」と、「誘電率分布シート」「電荷分布シート」、のセルの空間的な意味が少し異なる、ということだ。「電位分布シート」の各セルが空間上に一定長刻みで作られた各格子「点」を意味するなら、「誘電率分布シート」「電荷分布シート」では、各セルは格子で囲われた各領域を示すのである。各セルの意味合いが異なる結果、空間的な位置は、「電位分布シート」に対して「誘電率分布シート」「電荷分布シート」のセルは「半セル分」ずれることになる。そのズレが一番最初はわかりづらいのである。
そこで、「Excel Hacks 第2版― プロが教える究極のテクニック140選」に載っていた「エクセルのVBAマクロからWindows APIを使い、エクセルのウィンドウを半透明化するテクニック」を使い、「電位分布シート」を開いたエクセルウィンドウを半透明化し、「誘電率分布シート」などと重ねて眺めてみることができるようにしてみた。それが、右上の画像と下の動画である。ひとつのファイルをふたつのエクセル(アプリケーション)から開いた状態で、「電位分布シート」を開いているエクセルでマクロを実行すると、「電位分布シート」の下に「誘電率分布シート」が透けて見える。そして、シート間の位置関係を正しく示すようにウィンドウを並べてやれば、各セルが示す「」場所のズレを体感できるだろう、というわけである。
下の動画の場合は、「誘電率分布シート」には赤罫線がひいてあり、「電位分布シート」には青罫線をひいてある。そして、それらが半セルずれていることが体感できるようにしてみた。
ちなみに、エクセルの半透明化マクロは、Windows API上の関数を定義した後に、
mywnd=FindWindow("XLMAIN", Application.Caption) oStyle=GetWindowLong(mywnd,GWL_EXSTYLE) SetWindowLong mywnd,GWL_EXSTYLE, oStyle Or WS_EX_LAYERED SetLayeredWindowAttributes mywnd,0, (255*60)/100,LWA_ALPHAという風にしてやることで、エクセルのアプリケーション・ウィンドウを半透明化させている。もしも、半透明化を戻したければ、
mywnd=FindWindow("XLMAIN", Application.Caption) SetWindowLong mywnd,GWL_EXSTYLE,oStyleというコードを実行すれば良い。それほど使う状況があるとは思いづらい"Excel Hack"だが、VBAマクロからWindows APIを叩けば、Excelからでも「どんなことでもできる」と思わせるサンプルとして、結構面白い。
2010-03-09[n年前へ]
■「電子ペーパー」でもあるエクセルは、プロトタイピングに向いている。
オライリーの「Excelプロトタイピング ―表計算ソフトで共有するデザインコンセプト・設計・アイデア 」を読みました。この本は、Excelを代表とする表計算(スプレッド・シート)ソフトで、アプリケーションやWEBページの「見た目」や「大まかな動作」の試作品(プロトタイプ)を簡単に作る方法を解説したものです。一番最初は、「えっ?これがオライリーの本!?」と驚くくらい、カラーページが多く、画面キャプチャをふんだんに使いつつ「やり方の説明」が書かれている本です。
「エクセル=時間泥棒」という等式が成り立つ、と私は感じています。ただし、この等式が成立するのはある条件下においてであるとも思っています。その条件とは、「定型的な作業で、とても簡単に自動化できることのはずなのに、それを人が繰り返し似たような作業を時間をかけて行っている場合」「(エクセルでない)違う道具を使えば、簡単に(作成した)道具の再利用が可能になるだろう場合」というものです。
そういった場合でないならば、たとえば、「一回こっきりの作業」や「一番最初のアイデアスケッチ」をするような時であるならば、エクセルを使うのは悪くない選択肢だと思っています。だから、「(とっても簡単な)プロトタイピング」であれば、Excelを使って「やってみる」こともあります。
エクセルは、良くも悪くも、まさに「見たまま」に作業をすることができます。その「特徴」は、「(非常に簡単な)プロトタイピング」をする時には、「特長」すなわち長所になります。ところが、複雑なものを作ろうとする場合になると、その特徴はまさに短所になってしまうのです。たとえば、画面内にとても収まらないような巨大なスプレッド・シートを作る羽目(はめ)になってしまったりします。
あくまで、比較的簡単で小さなものを作るという条件下において、見た目そのままに思いつくままに作業することができるエクセルは、なかなか現実的な「プロトタイピング開発環境」になると感じているです。
私は、エクセルは「電子ペーパー」だと思っています。もともと、紙上で行っていた集計作業を楽にするために作られたのが表計算ソフト(VisiCalc)であって、エクセルはその流れから生まれたものです。「プロトタイピング」という作業には、一番「紙=ペーパー」が最適だと(より正確にいえば、ホワイトボード+記録媒体という組み合わせが一番良いと思っています)、旧ザクならぬ旧世代の私は思っています。だから…というのも変ですが、「電子(処理機能を備えた)ペーパー」でもあるエクセルは、プロトタイピングに向いているように感じられます。
ところで、本書のタイトル「Excelプロトタイピング」には、「やられた」と思いました。なぜなら、私が編集者だったとしたら、そういうタイトルの(シリーズ)本を作ってみたいと思っていたからです。「Excelでプロトタイピング~○×編~」という本をいくつか、編集者として作ってみたかったのです。そして、自分自身、そこから学んでみたかったのです。
その思いは、たぶん自動的に下に出てくるだろう、この記事の「関連お勧め記事」を読む、を眺めればわかるだろうと思います。