ラベル 数学 の投稿を表示しています。 すべての投稿を表示
ラベル 数学 の投稿を表示しています。 すべての投稿を表示

2011年1月24日月曜日

二つに分けて考える

謎なタイトルにして見ました。
やること自体は非常に単純でして、何らかの集団を考える際にある概念(視点など)を使って分類するだけです。

この時に、分けるのは一つの概念につき二つまでにする事に意味があると思います。
三つ以上の例として血液型占いが有ります。
これ、四つに分けてるのでイマイチスッキリしません。
どうしても類似する部分が出てしまうんですよね・・・

二つの場合どうか?
AでなければBなのですっきり感が得られやすいのです。
複雑なものを分類するなら、二個三個と概念を増やせば、四通り八通りと増えて行くので問題ないです。

ここから職場における「上昇志向の強弱」で話を書いてみようと思いましたが、残念ながら余白が足りません





・・・・・・・・・

どこのフェルマーだ!
と思った貴方

すごいです( ̄▽ ̄)

2011年1月6日木曜日

シンプルなシステム

あまりまとまっていませんが、現時点で筆者が考えている『シンプルなシステム』について少し書いてみます。

シンプル、とは何か?
構成がシンプル。
画面がシンプル。
機能がシンプル。
などなど・・・ 色々ありますが、ここではエンドユーザにとって『シンプル』であることとしてみます。

エンドユーザは何かをやりたいからシステムを利用するわけですが、やりたいことが最短手順(または時間)で実現できるのが『シンプルなシステム』ではないか? 筆者はそのように志向しています。
極端な例を言いますと、自動販売機などはシンプルです。
お金を入れて、ボタンを押せば品物が出てくる。
まぁ、これはやりたいことが買い物という単純作業(お金と品物の交換)なのでシンプルになるのも必然ですが、企業などの業務ではどうなるのでしょうか?

残念ながら、企業などの業務でここまで単純な作業はあまり残らないと思います。
自販機で代替してみたり、計算機で自動化してみたり、そのような20世紀末までに行われてきたITによる効率化レベルの話で済んでしまいます。
いわゆる、人を機械に置き換えるレベルの話ですね。
「うちには人がやっている単純な作業が残っている」、と主張する方も居ると思いますが、その単純な作業というものには例外が多数存在するのではないかと思われます。
若しくは品質保持に人手が必須である場合、ですね。

では、単純ではない作業をいかにシンプルに処理させるのか?
そこが『シンプルなシステム』作りの鍵になるのではないかと考えます。

一つのアプローチとして、「単純ではないものは単純になるまで分割する」があげられます。
数学の微積分を思い出すとわかりやすいのですが(忘れた、という人は、少しでよいので復習してみてください^^;)複雑な図形の面積であっても、線の集合として考えれば求めることが出来ます。
これをシステムに当てはめると・・・ 確かに単純な作業まで分割はできそうなのですが、手数や画面遷移・使用する機能が膨大になりそうです。現実的ではなさそうですね。

Webシステム、として考えると、いかにユーザに「見せない」か、が鍵だと考えます。
ボタンやリンクを極限まで減らし、かつ、左上から右下に進んでいけば処理を終えることが出来る。
ログインしたユーザが使わないボタン・リンクなどは一切表示しない・・・
これである程度のシンプルさは確保できます。
残念ながら、その先が筆者には見えていません。
恐らく、機能自体のシンプルさの追求が必要になるのですが・・・



書き出してみればまとまるかと思いましたが、そうは行かないですね^^;



2010年9月17日金曜日

ベルヌーイ 懐かしい響きですね

JavaとSilverLightを行き来している筆者です。
eclipse使いづらい。

関わっている某MitoLyzerプロジェクトにて、「動圧」と「静圧」という値の計算が気になったのでネットで調べたのが発端でした。
ぐぐる先生に質問すると、即答えがわかりました。
流体力学の基礎「ベルヌーイの定理」における圧力による表現式の要素、というもので・・・
ベルヌーイの定理(ベルヌーイのていり、Bernoulli's principle)は、流れに沿って成り立つエネルギー保存の法則で、流体の挙動を平易に表した式である。ダニエル・ベルヌーイ (Daniel Bernoulli 1700-1782) によって1738年に発表された。

  • 圧力による表現
    •  \frac{1}{2}\rho v^2+\rho g z + p=一定 [Pa]
  • 圧力による表現(位置エネルギーの変化が無視できる場合)
    • 左辺第二項が定数になるので
    •  \frac{1}{2}\rho v^2+ p=一定 [Pa]
    • このとき左辺第一項を動圧、第二項を静圧、右辺を総圧(全圧)とよぶ。
  • 仮定
    • 粘性がないこと
    • 定常流れであること
    • 非圧縮性であること


毎度のwilipediaより抜粋です。
v=0だと動圧は0なんですねぇ… というのがわかる程度ですね。
静圧は位置エネルギー無視ならば単なる圧力なのかな?

大したことが分かっていないように見えますが、これだけでも「その項目の値はそれでよいのか?」という疑問に対する目安(?)になります。
流速=0なのに、静圧≠総圧だったらおかしいわけです。

厳密な値がわからずとも、明らかにおかしい結果が出ないようにチェックすることは可能というお話でした。


2010年7月27日火曜日

計算機 初歩の初歩の初歩 ~計算機とは?~

技術的な話の少ない当ブログ。
このままでは良くない、と感じた筆者は抜本的な構造改革に取り掛かる。
しかし、その行く手には・・・

って、どこぞの予告編みたいですね。
かなり気合入れていますので、今回の投稿が予告編になってしまう恐れがありますが進めてみます。


この文章を見ているということは、読者は全て『計算機』を使用しているということになります。
さて、『計算機』とは何か?
パソコン? スパコン? マイコン? ケータイ? 電卓?
どれも『計算機』に当たります。(マイコンや電卓ではこの文章は見れませんが^^;)

「パソコンの何処が計算機なのさ?」

と思われると思いますので、『計算機』とは何か、を書いてみようと思います。


Computer(コンピューター)の和訳(google辞書で翻訳)は
  1. コンピュータ
  2. コンピューター
  3. 計算機
  4. 電子計算機
  5. 計算器
  6. 高速演算機構
     となり、「計算の為の機械」と言えます。(「機械」と「器械」の差はスルーします。このへんを厳密に定義する人々もいるようですが本筋じゃありませんので)

    では、どのようにして正しい計算をする仕組みを作るのか?
    この理論の大本と言えるのが『オートマトン』です。
    wikipediaによると















    オートマトン (automaton (pl: automata)) とは「自動人形」を意味している言葉で、情報科学の分野においては、次のような特徴を持ったシステムのことである。
    • 外から、連続している情報が入力される
    • 内部に「状態」を保持する
    • 外へ、何らかの情報を出力する
    というのがオートマトンなのですが、ずいぶんと抽象的になります。
    具体的には有限オートマトンに詳しいのですがここをしっかり説明すると大学の講義数コマ分の分量になりますので、興味のある方はリンク先(wikipedia)を見てください。
    尚、リアルでの質問も受け付けます。(メールなどでの質問は申し訳ありませんが勘弁してください。参考サイトを検索する方が遥かに早いです)


    簡単に言うと、状態の遷移を示す為の理論です。


     「状態:空腹」、「入力:食事」⇒「遷移」⇒「状態:満腹」、「入力:時間経過」⇒「遷移」⇒「状態:空腹」・・・


    と言えばなんとなくわかるかと思います。
    上記のオートマトンの説明に沿うならば、

    外からの情報入力(「入力:**」)があり、情報入力に応じて状態遷移する。
    遷移元と遷移先の「状態:**」を内部に保持し、「状態:**」の情報を外へ出力する。

    と言えますね。


    どれほど複雑なプログラムでも、このような状態遷移が必須となります。
    初期状態と外からの入力がない限り、どれほど高度なシステムも動きようがないのがわかると思います。

    このオートマトンというものは、自動/半自動の仕組みの大半で使われていますので、身近なもので状態遷移を考えてみるのも面白いと思います。



    さて、オートマトンが状態遷移を示すのはわかるのですが、それのどこが「計算」なのか?
    次はそのへんを見ていきたいと思います。



    現在使用されている『計算機』の基本は、ほとんどが「ノイマン型」と言われるものを使用しています。
    この「ノイマン型」計算機は「チューリングマシン」の理論を使っているのですが、「チューリングマシン」は「オートマトン」の定義を拡張したものです。


    もう少し噛み砕いてに説明をしたかったのですが、これはそういうものだ、そういう関係だと思ってください。
    チューリングマシンとは(wikipediaより)


    チューリングの仮想機械は、
    1. 無限に長いテープ
    2. その中に格納された情報を読み書きするヘッド
    3. 機械の内部状態を記憶するメモリ
    で構成され、内部状態とヘッドから読み出した情報の組み合わせに応じて、次の動作を実行する。
    • ヘッド位置のテープの情報を読みとる
    • ヘッド位置のテープに情報を書き込む
    • 機械の内部状態を変える
    • ヘッドを右か左に一つ移動する
    上の動作を、機械は内部状態が停止状態になるまで反復して実行し続ける。
    というものです。
    オートマトンの拡張だけあって、似ていますね。
    情報の読み取り(オートマトンで言えば外部からの入力)、情報の書き込み(外部への出力)、内部状態の記憶(内部に「状態」を保持する)、とそろっています。


    実際には「無限に長いテープ」なんてものは存在しませんが、ノイマン型コンピューターでは有限の記憶領域の範囲内での計算を保証する作りになっています。
    ノイマン型とは(再びwikipediaより)


    ノイマン型アーキテクチャの計算機は5つの部分からなる。演算論理装置(ALU)、
    制御装置、メモリ、入出力と、これらを接続する情報経路である。


    ノイマン型アーキテクチャの計算機は以下のようなステップを繰り返し行うことで計算を行う。
    1. プログラムカウンタのさすアドレスから次の命令を読み込む
    2. 命令長さの分だけプログラムカウンタを増やす
    3. 制御装置で命令をデコードする。制御装置は計算機の他の部分に対して命令を出したり、
      繰り返しを行うためにプログラムカウンタの値を替えたり、条件分岐のためにALUの状態によって
      プログラムカウンタの値を替えたりすることができる。
    4. ステップ1へ戻る
    とあります。
    ようやく計算っぽい話(ステップ3.)が出てきました。


    外部からの入力(命令の読み込み)に応じて計算を行うのがノイマン型コンピューター。つまり、計算する為の機械。『計算機』です。
    ここまで書いて(全く厳密じゃない、さわりだけですが)ようやく『計算機』が『計算する為の機械』であるという説明が出来ました。


    ノイマン型アーキテクチャのステップ1,2はマシン語やアセンブラに、ステップ3は構造化言語に、それぞれ関連してきますので、SEならば知っておきたいところです。
    というか、これくらいは知っておかないとプログラミング言語の基本をおさえたとは言えませんので。
    又、ノイマン型アーキテクチャの計算機の5つの部分は、ハードウェアの基本そのものになります。


    さて、ずいぶん大量の情報を垂れ流してしまいましたが、これが初歩の初歩の初歩。
    理解なしでもシステム構築が出来る世の中ですが、理解しておいた方がより良いです。
    続編の予定としては、この書き込みの派生として、それぞれの分野の話を書いていこうと思います。




2010年6月30日水曜日

論点をずらすこと・ぼかすこと

暑いですねぇ。
本日の予想最高気温は35度だとか…
体温並みの気温は勘弁してほしい。
テンプレ演説の幸福実現党とか、20m程度の長さの駅ビルの通路に6名のビラまき要員を配置する公明党とか、帰宅時間帯の名駅前で歩道の半分を通行できないようにして演説してる民主党とか…
こっちも気温と同じくうんざりです。
さわやかな気持ちになるべく、おいしいお茶でも淹れましょうか。


今回は議論の話の続きのような感じで進めてみようと思います。

真っ向から衝突する議論。
これってわかりやすいですし、充実感も納得感もあります。
しかし、摩擦を生むのもまた事実。
その為、論点を『多少』ずらしたり、ぼかしたりするという技巧が存在します。
そうすることで真っ向からの衝突にならない分、摩擦が少なくなるわけです。
良い技巧だと思ってしまいそうですが、実はとても大きな問題をはらむ技巧だったりするのです。



右に図を書いてみました。
基準線、とあるのが論点に真っ向から向かうイメージ。
A,Bは論点をイメージしています。説明用に2つ用意しました。
そして、論点をずらした場合として、ズレ1、ズレ2の2通りを用意しています。
適当な人の絵は議論の参加者です。
尚、参加者からの距離は論点の背景と参加者の知識や概念の距離とします。
たとえば、フェルマーの最終定理に関する議論、なんて話の場合はほとんどの人にとってかなり遠くにAとかBが配置されます。

正しい論点のずらし方は、ズレ1の状態にすることです。
参加者が認識しうる範囲でずらす(距離の異なる場合でも論点とズレの線が交わっている)状態ならば、理解しづらくあっても理解できないことはまずありません。

では、ズレ2の場合はどのような状況なのでしょうか?
ズレ2はAとは交わっていますが、Bとは交わりません。
これは、論点の背景を熟知している人は理解できるけど、そうでない人は論点を認識できない状況を意味します。
先ほどのフェルマーの最終定理でいえば、
  3 以上の自然数 n について、xn + yn = zn となる 0 でない自然数 (x, y, z) の組み合わせがない
というのは論点がわかっても、そこから少しでもズレると(たとえば、正則素数/非正則素数とか、「すべての楕円曲線はモジュラーである」とか… フェルマーの最終定理の証明に使われた定理・概念です)全く理解の範囲外になってしまうわけです。
ちなみに、上記で挙げたズレの例は数学的にはそこまで大きくありません。(谷山・志村予想はずいぶん遠いのですが^^;)


論点をずらすのは危ないことなのです。




では、論点をぼかすのはどうでしょうか?
こちらは説明を省略する、若しくは抽象化するという方法をとります。
「黒こげになった、かつては食材であったもの」
「真黒な炭化物の塊」
「炭」
いずれも漫画などで出てくる失敗料理の描写ですが、「焦がして失敗した料理」と書く場合に比べて、伝わり方が変化します。
上から順に、情報を欠落させてみたのですが…
いずれの例にしても作り手が泣きそうな表現ですね^^;


文学作品や文章などで多用するのは良いのですが、議論を行う際に多用すると論点がわからなくなりそうですね。
実際にぼかしたことで議論が迷走、なんてことも起こりえます。
大抵無駄な時間を使うことになるわけで…


論点はずらすにせよぼかすにせよ、その危険性を認識したうえで慎重に、というのが必要ですね。