ブログ
ランダム
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
記事を書く
検索
ウェブ
このブログ内で
ログイン
ブログ開設
トップ
dポイント
メール
ニュース
辞書
教えてgoo
ブログ
住宅・不動産
サービス一覧
閉じる
ウィリアムのいたずらの、まちあるき、たべあるき
ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)
いっそのこと、ちば書体ってできたら、千葉、有名になるかも。。。
2006-11-12 23:33:59
|
Weblog
うーん、賛否両論の、
ちばデザイン
ここのニュース
千葉初の県ロゴに県民からブーイング!
http://www.nikkansports.com/general/p-gn-tp0-20061112-115958.html
などにかいてあるけど、洗練されているかどうかは別として、話題にはなりましたよね。
いっそのこと、ここまできたら、このデザインで、ひらがな全部つくってしまって、
ちば書体
として出したら、有名になるかも。。。
なんか、出てきそうな予感??それはない??
ランキングに参加中。クリックして応援お願いします!
人気ブログランキング
にほんブログ村
ロボットでも複合機でも使えるようにするためのMVCの考え方
2006-11-12 18:48:13
|
Weblog
ちょっと、あとで、話を広げたいために、基本的な話を考えます
(ちなみに、広げたい話というのは、View側(画面が普通だが、ロボットもあり得る)でどこまでの機能を持たせるのがいいかという話)
MVCとか、ECBとかいう考え方において、システム外からの入出力の機能は、V(View)が行う。ECBの場合はB(バウンダリ)が行う。
で、C(コントローラー、これはECBでも同じ)が、内部のM(モデル:ECBの場合はE(エンティティ))を、V(B)から受け取った値を渡して呼び出し、その結果を受け取って、V(B)に返していく
そして、Webシステムの場合、ブラウザが、Viewにあたる。。。
って、ここまでは、当たり前に論じられるが、ちょっと待った。
ブラウザって、実は表示してるだけじゃなくって、汎用的なクライアントプログラムなんじゃないだろうか?それが証拠に、もし、クライアント側でもJavaScriptなどのプログラムが書け、この場合、
表示しているHTMLの内容がView
ブラウザが、OnLoadとか、イベント処理関数を呼び出すけど、この呼び出しプログラムが
C(コントローラー)
実際のJavaScriptプログラムは、モデルとも考えられる。
こう考えると、モデル部分を分離できるはずだけど、事実、プログラム的には分離できるし、分離したほうがいいかもしれない(ただ、JavaScriptやAJAXを書く人は、そういう意識はないので、だらだらと、HTMLの中に書き込まれてしまって、分けわかんなくなっちゃうことが多いんだけど)
仮にそうやって考えると、ブラウザ側も、MVCを構成している、ただし、サーバーから見た場合、クライアント入出力というのが、Viewにあたっているということになる。
これを、図示すると、こんな感じになる
ここで、MVCを3重の円であらわすことはまずないが、ここではあえて3重の円であらわす。
そーすると、ブラウザからみれば、画面入出力もViewだが、サーバー通信も外部との入出力という意味ではViewと同じ話になる。このとき、コントローラーは、画面のコントローラーと、通信のコントローラーでは違うのが普通(AJAXのXMLHttpRequestのonreadystatechangeで、かえってくるところを指定するが、ブラウザが、この指定された関数を呼び出す部分が通信のコントローラーになる)。
で、コントローラーから、内部のプログラム(JavaScript)が呼ばれることがある。
そーすると、サーバープログラムも3重の円で表せる。このとき、VIEWの画面表示側は、クライアントとの通信になる。
では、クライアント側における、「サーバーとの通信」は、サーバープログラムにおいて、なんになるかというとSOAで、他サービスとの通信ということになる。
もちろん、サーバプログラムのSOAの他サービスの通信がないものもある。
同様に、クライアント側でも、サーバーアプリとの通信をしないプログラムも作れる
(クライアント側で、計算だけするプログラムとか)
さらに、クライアント側のプログラムは、ブラウザじゃなくってもいいことになる。
たとえば、ロボットに繋ぐことを考えてみる。
アンケートをロボットが読み上げ、答えを言ってもらい、その答えを自動認識で文字にして、HTMLのCGIと同じような形で、書き出し、サーバプログラムを呼び出した場合、サーバプログラムから見たら、ブラウザと同じ呼び出し方をされているので、同じように処理することになります。
つまり、この場合、ブラウザかロボットかというのを問わない。
もう1つの例として、アンケートを考えると、複合機につないで、出力はHTMLの内容を、紙に出力し(白紙のアンケートができる)、入力は、その複合機でスキャンしてもらうと、書いた内容を自動認識して、HTMLのCGIと同じような形で、書き出し、サーバプログラムを呼び出した場合、サーバプログラムから見たら、ブラウザと同じ呼び出し方をされているので、同じように処理することになります。
つまり、この場合、ブラウザか複合機かというのを問わない。
ってかくと、Webの世界の人には、思考的な話であり得ない話と思うかもしれないが、じつは、これができると(いまは自動認識がそこまで言ってないと思うが、いってるのかな?)、便利なケースがある。セミナーのアンケートとか。。
セミナーのアンケートは、紙に書く。普通Webではない。なぜなら、会場できにゅうしてもらうとき、みんながパソコンにつながっているケースというのは、すくない。
じゃ、ケータイから入力してもらえばいいじゃん!っておもいかもしれないが、もし、セミナー会場で、ケータイから入力してもらうとなると、ケータイの電源をONにしないといけないことになる。そーすると、みんなマナーモードにしてもらうというのは無理があるため、セミナー中にケータイがなってしまう。これはこまる。なので、セミナーでは、ケータイの電源をOFFにしてもらうのがふつうだ。なので、ケータイからアンケート入力も難しい。
ま、現実的には自由文章入力のところは、文字認識が難しいので、無理と考えられがちだが、逆に言えば、ここだけは、スキャンして、白黒画像としてとって、Base64で送信すれば、あとは、○×やチェックに対して、反応すればいいようにすればいい(塗りつぶしてもらう形にする??)ので、将来的にあり得ないとは言い切れない。
っていうことで、サーバーもブラウザも、その他のクライアントアプリもMVCで統一的に考えることができる。じゃあ、この考えの場合、どこまで、クライアントに機能をもたせ、サーバーにどこまでの機能をさせるか?ということになるけど、それについては、また別の機会に書きたいと思う。
ランキングに参加中。クリックして応援お願いします!
人気ブログランキング
にほんブログ村
Hello World以前のプログラム言語(その5:レコードと型)。
2006-11-12 13:59:23
|
Weblog
情報処理とは何?から、Hello Worldを各種言語で出力するまでの流れをかく、シリーズ
Hello World以前のプログラム言語
のつづきです(このシリーズは、土日に書きます)。
■ここまでのストーリー
ここまでのストーリーをまとめると、
●コンピューターは情報を処理する機械で、
●情報を処理するとは、
必要な入力データ(情報)をいれて、
なんらかの処理をさせて、
目的となる出力データ(情報)を得る
ことである。
●で、情報を処理するのには、処理内容を指示するわけですが、それがプログラムであり、
●そのプログラムは、以下の種類の文で構成される
・処理を命令する文
・条件によって、処理を分けるための文
単純に条件をわける文
繰り返しする文
・変数を宣言する文
●そのプログラムには、同じようなことを何度も書くところがあるので、
それらを何度も書かないでいいように、1回書いたら、次からそれを
呼び出す方法がある。それがサブルーチンや関数である。
●で、プログラムに対して、データを入力するが、そのデータは
従業員データなど、いろんなプログラムで何度も利用することが
ある。そこで、それらを、ファイルという形で保存している
●ファイルは入力だけでなく、ファイルに出力することもあるし、
プログラムもファイルのカタチで書いて保存する
●ファイルがいっぱい集まると、管理に困るので、まとまりにわけて
管理する。このまとまりがディレクトリ(フォルダ)となる。
●ファイルの中身は、データの集まりとなるが、従業員データの場合
従業員一人一人の名前、住所、担当部署、年齢が繰り返し出てくる。
このように、ファイルの中に、同じ形式のものが繰り返しでてくる
という場合、その繰り返しを構成する1つ1つをレコードという。
で、今日は、このレコードについてです。
■レコードと項目
で、前回、ファイルは、レコードの繰り返しになっているものと、そうでないもの
(たとえば、プログラムのソースファイルとか、テキストで文章を打ったものとか)
があるという話を書きました。
で、レコードの繰り返しになっているものについて書きます。
そのレコードとは、たとえば、従業員1人1人をあらわしているレコードの場合、そのレコードの中に、従業員の名前、住所、担当部署、年齢などのデータを含んでいます。
この名前、住所、担当部署、年齢を、項目ということにします(要素といったりすることもあるし、いろいろあるけど、ここでは、項目としておきます)
なお、レコードと項目の関係、実は、表で表せます。
項目1 項目2 項目3 ・・・・
レコード1
レコード2
レコード3
:
:
っていうかんじです。で、表を表現するソフトである表計算ソフト(スプレッドシート)の場合、レコードを行(あるいはロー)、項目を列(あるいはコラム、カラム)といいます。
■項目と型
で、年齢とか、名前とかは、具体的にあらわせるわけです。
たとえば。。
名前
菅山 かおる
生年月日 1978.12.26
身長 169cm
体重 56kg
出身校 古川商業高校(現・古川学園高校)
出身地 宮城県岩沼市
ポジション リベロ
最高到達点 293cm
とかとか。。
で、このとき、文字でずらずら、コンピュータで書いていますけど、ファイルとして、保存する場合、これは文字でずらずら書いているわけではなく、0と1で表現します(0と1で表現すると、電気的、磁気的に表現でき、保存できるようになる)
このとき、文字で表現するより、数字(整数)なら、もっと効率よく表現できる方法があります(2進数)
というか、まず、数字を0と1で表現する方法を決めて、
文字は、ある文字は、この番号と割り振り(コード)
日付は、ある時を0として、そこからの経過時間を数字で表現し
小数点付きの数字は、ある数=あるかずX10の何乗というかたちで、表現する
など、いろいろあります。
そこで、値を効率よく表現して、その値が、どういうように表現されたかをみんなにわかるようにします。
で、その「値がどういうように表現されたか」というのを型といいます。
整数の型は、Integerで、
文字はCharで
日付はDateで
小数点付き数字はfloat(あるいはDouble、表現する長さが違う)
などなどです。
■固定長レコード
そういう形で、上記のレコードの例を表現すると
名前 文字の複数あるもの
生年月日 日付(Date)
身長 整数(Integer)*
体重 整数(Integer)*
出身校 文字の複数あるもの
出身地 文字の複数あるもの
ポジション 文字の複数あるもの
最高到達点 整数(Integer)*
(*具体的な数字は、小数点つきかもしれないが、ここでは整数で扱っている)
っていうことになります。
ここで、型が整数とか日付は、ファイル上、どのような大きさにするか、きまっています。
問題は、「文字の複数あるもの」です。これは、どれくらいの長さか決まりません。
そーすると、このレコードの大きさが決まらないので、保存するときに、どのくらいの大きさを用意すればいいか、さらに処理するときに、どのくらい大きさを用意すればいいか、わからなくって不便です。
でも、たとえば、名前は、50文字もある人はいません。たいてい20文字以下です。
出身校も30文字もあれば十分でしょう。
ってことで、予想できる最大限の大きさをとって、
名前 文字(20文字)
生年月日 日付(Date)
身長 整数(Integer)*
体重 整数(Integer)*
出身校 文字(30文字)
出身地 文字(20文字)
ポジション 文字(20文字)
最高到達点 整数(Integer)*
ってすれば、大きさは確定します。
このように、1レコードの大きさが決まっているものを固定長といいます。
ここで、固定長のメリットをまとめておきます。
<固定長のメリット>、
・大きさが決まっているので、処理がかんたん。領域を取るのも簡単
<デメリット>
・想定外以上に長いとき、プログラム、ファイルをすべて修正しないといけない
でないと、入らない文字は切り捨てないといけない
・項目(の順番)と、型がわからないと、利用できない
っていうことになります。
■可変長レコード
逆に、1レコードの大きさが決まっていないものを可変長といいます。
これは、固定長の正反対。っていうことは、固定長とメリットデメリットが逆になります。
<可変長のメリット>
・想定外以上に長いときでも、プログラム、ファイルを修正しないでよい
・項目(の順番)と、型がわからなくても、利用できる
<デメリット>
・大きさが決まっていないので、処理が面倒。領域を取るのも面倒
っていうことになります。
でも、「処理が面倒。領域を取るのも面倒」といっても、前回いった、
サブルーチンで、だれかが、その処理部分を作ればOKなわけですし、
それより、メリットのほうが、意味が大きいので、最近では、可変長は良く使われます。
■可変長レコードの例1;CSV、タブ区切り
では、問題は、可変長の表現の方法ですが、
名前 文字の複数あるもの
生年月日 日付(Date)
身長 整数(Integer)*
体重 整数(Integer)*
出身校 文字の複数あるもの
出身地 文字の複数あるもの
ポジション 文字の複数あるもの
最高到達点 整数(Integer)*
とあるとき、
・項目はすべて「文字の複数あるもの」にする(整数も日付も文字で書ける)
・項目の区切りを、タブなど、その要素でありえないものを入れてしまい
・レコードの終わりにもその要素でありえないものを入れてしまえば
項目の値を取り出すことができます。
で、区切りをタブにしたものが、タブ区切り、カンマにした場合、CSV(かんませぱれーてっどばりゅー:「値をカンマで分けた」って言う意味)となります。
(どちらもレコードの終わりは改行とします)
カオル姫の例をCSVでかくと、こんなかんじ
菅山 かおる,1978.12.26,169,56,古川商業高校,宮城県岩沼市,リベロ,293
■可変長レコードの例2;XML
しかし、CSVの場合でも、項目(の順番)までわからなくてもOKというわけではありません。たとえば、カオル姫の例を
菅山 かおる,リベロ,169,1978.12.26,56,宮城県岩沼市,古川商業高校,293
と入れ替えられてしまったら、違う項目だと思ってしまいます
(上の場合、生年月日がリベロになってしまいます)
ということは、項目の順番は変えられない、省略できないということになります。
その結果、カオル姫の名前と最高到達点しかわからない場合、
菅山 かおる,,,,,,,293
と、カンマだけの項目を書き出さないといけません。
これが、100も200も続き、飛び飛びに入っていたりしたら、なにがなんだかわかんなくなります。
そこで、項目の順番入れ替え可(ただ、入れ替える人は少ないと思うけど)省略も可とし、項目の順番がわかんなくても処理できるようにしたのが、XMLです。
XMLの場合
<名前>菅山 かおる</名前>
<生年月日>1978.12.26</生年月日>
<身長>169</身長>
<体重>56</体重>
<出身校>古川商業高校</出身校>
<出身地>宮城県岩沼市</出身地>
<ポジション> リベロ</ポジション>
<最高到達点>293</最高到達点>
(上記<>は、本当は半角)
ってかけば、たとえば、省略して
<名前>菅山 かおる</名前>
<最高到達点>293</最高到達点>
となっても、どこの項目が送られてきたかわかるので、処理できます。
自分の知らない項目なら無視すればOKです。
なので、このXML、便利です。
たしかに、タグの部分が無駄なのですが、その程度の容量の無駄は、最近のディスク容量の大型化、通信速度の向上で問題ないということです。
で、さきほど、デメリットについて
「処理が面倒。領域を取るのも面倒」とかき、そのあとで、そういう処理をするサブルーチンがあればOKっていうことを書きましたが、XMLの場合
XMLの処理をするものがXMLパーザー(Xalanなどがある)で、
XMLの領域を保持し、操作を提供するものの1つがDomです。
Domの操作方法は、
このブログでも、書いています
。
ということで、長くなりましたが、今回はおしまいです。
ランキングに参加中。クリックして応援お願いします!
人気ブログランキング
にほんブログ村
記事一覧
|
画像一覧
|
フォロワー一覧
|
フォトチャンネル一覧
カレンダー
2006年11月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
前月
次月
ログイン
編集画面にログイン
ブログの新規登録
ブログランキング
人気ブログランキングへ
アクセス状況
アクセス
閲覧
1,181
PV
訪問者
555
IP
トータル
閲覧
34,657,239
PV
訪問者
8,595,564
IP
ランキング
日別
1,115
位
週別
698
位
プロフィール
フォロー中
フォローする
フォローする
自己紹介
ろくでもない人です。
最新記事
Javaのバージョンアップに伴い、変更された箇所を調べるには?
年収103万円の壁、国民民主党と自民党で話してること違うように聞こえるのは。俺バカだから?
「神社で街おこし」はアリだよなあ
田淵華愛さんの2025年の手帳来た!
Log4Shellの話を聴いてきた?
高級化による高価格化の研究ーそばいちの場合
かぼちゃいなり
コージーコーナーのハロウィンは・・・
JAVAのWebフレームワークの現状とかMicroProfileについて聞いてきた
ラジオ英会話9月のまとめ(説明ルール)
>> もっと見る
カテゴリー
食べ物いろいろ
(256)
Twitter
(2120)
そのほか
(1139)
AI・BigData
(472)
ネットワーク
(1142)
仏教・神道・その他宗教
(14)
予言・スピリチュアル・自己啓発
(53)
音楽いろいろ
(144)
個人的見解
(88)
まちあるき
(36)
映画あれこれ
(7)
経営戦略とか
(16)
まとめ
(23)
世間話
(145)
CharGPT的見解
(1)
Weblog
(7027)
トピックス
(591)
正規表現
(12)
Ruby
(70)
PHP
(117)
ケータイ
(324)
コピーされるほど儲かるシステム!
(79)
開発ネタ
(630)
JavaとWeb
(501)
Linux
(43)
業務のモデル化
(24)
Officeソフト&VBA
(87)
一人勉強会
(22)
リンク集
(2)
XML
(10)
土日シリーズ
(109)
OpenOffice
(14)
SugarCRM
(26)
最新コメント
バックナンバー
2024年11月
2024年10月
2024年09月
2024年08月
2024年07月
2024年06月
2024年05月
2024年04月
2024年03月
2024年02月
2024年01月
2023年12月
2023年11月
2023年10月
2023年09月
2023年08月
2023年07月
2023年06月
2023年05月
2023年04月
2023年03月
2023年02月
2023年01月
2022年12月
2022年11月
2022年10月
2022年09月
2022年08月
2022年07月
2022年06月
2022年05月
2022年04月
2022年03月
2022年02月
2022年01月
2021年12月
2021年11月
2021年10月
2021年09月
2021年08月
2021年07月
2021年06月
2021年05月
2021年04月
2021年03月
2021年02月
2021年01月
2020年12月
2020年11月
2020年10月
2020年09月
2020年08月
2020年07月
2020年06月
2020年05月
2020年04月
2020年03月
2020年02月
2020年01月
2019年12月
2019年11月
2019年10月
2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年04月
2019年03月
2019年02月
2019年01月
2018年12月
2018年11月
2018年10月
2018年09月
2018年08月
2018年07月
2018年06月
2018年05月
2018年04月
2018年03月
2018年02月
2018年01月
2017年12月
2017年11月
2017年10月
2017年09月
2017年08月
2017年07月
2017年06月
2017年05月
2017年04月
2017年03月
2017年02月
2017年01月
2016年12月
2016年11月
2016年10月
2016年09月
2016年08月
2016年07月
2016年06月
2016年05月
2016年04月
2016年03月
2016年02月
2016年01月
2015年12月
2015年11月
2015年10月
2015年09月
2015年08月
2015年07月
2015年06月
2015年05月
2015年04月
2015年03月
2015年02月
2015年01月
2014年12月
2014年11月
2014年10月
2014年09月
2014年08月
2014年07月
2014年06月
2014年05月
2014年04月
2014年03月
2014年02月
2014年01月
2013年12月
2013年11月
2013年10月
2013年09月
2013年08月
2013年07月
2013年06月
2013年05月
2013年04月
2013年03月
2013年02月
2013年01月
2012年12月
2012年11月
2012年10月
2012年09月
2012年08月
2012年07月
2012年06月
2012年05月
2012年04月
2012年03月
2012年02月
2012年01月
2011年12月
2011年11月
2011年10月
2011年09月
2011年08月
2011年07月
2011年06月
2011年05月
2011年04月
2011年03月
2011年02月
2011年01月
2010年12月
2010年11月
2010年10月
2010年09月
2010年08月
2010年07月
2010年06月
2010年05月
2010年04月
2010年03月
2010年02月
2010年01月
2009年12月
2009年11月
2009年10月
2009年09月
2009年08月
2009年07月
2009年06月
2009年05月
2009年04月
2009年03月
2009年02月
2009年01月
2008年12月
2008年11月
2008年10月
2008年09月
2008年08月
2008年07月
2008年06月
2008年05月
2008年04月
2008年03月
2008年02月
2008年01月
2007年12月
2007年11月
2007年10月
2007年09月
2007年08月
2007年07月
2007年06月
2007年05月
2007年04月
2007年03月
2007年02月
2007年01月
2006年12月
2006年11月
2006年10月
2006年09月
2006年08月
2006年07月
2006年06月
2006年05月
2006年04月
2006年03月
2006年02月
2006年01月
2005年12月
2005年11月
2005年10月
2005年09月
2005年08月
2005年07月
2005年06月
2005年05月
2005年04月
2005年03月
2005年02月
2005年01月
2004年12月
2004年11月
ブックマーク
goo
最初はgoo
goo blog
おすすめ
おすすめブログ
【コメント募集中】
スタッフの気になったニュース
@goo_blog
お客さまのご利用端末からの情報の外部送信について
goo blog
お知らせ
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
【コメント募集中】goo blogスタッフの気になったニュース
gooブロガーの今日のひとこと
訪問者数に応じてdポイント最大1,000pt当たる!