前回とは?

前回は,.NETの世界を理解するためには,「クラス」に関する知識が必要なことをお話しました。今すぐにでもクラスについて本格的な説明を始めたいところなのですが,今回は,10行程度の小さなサンプル・プログラムを紹介しながら,これまでのプログラミングの歴史の中で重要な役割を果たしてきた「関数」について説明します。一部の方は,関数の知識などは.NETの世界を理解するために何の役にも立たないのでは?と思っていることでしょう。本連載を最後まで読めば分かりますが,.NETの世界は,「関数の役割を変更している世界」でもあるのです。
すべてのプログラムは何らかの目的を持っていますから,ここでは,次のような機能を持つサンプル・プログラムを作成することにします。
単純とはいえ,サンプル・プログラムに搭載する機能をはっきりさせました。次に,プログラムが動作するプラットフォームと開発環境について考えます。なお,第4回ではこの機能とまったく同じ機能を搭載するC++サンプル・プログラムを紹介することになっていますが,発想の転換が必要になることを覚えておいてください。
本日のサンプル・プログラムがターゲットとするプラットフォームはWindows 2000/XPとし,開発する環境は,Visual Studio.NETとします。
Visual Studio.NETは,コンソール・アプリケーション,Windowsアプリケーション,Webアプリケーション,そしてXML Webサービスまで開発できる巨大なプログラミング環境です。この環境では,Visual Basic,C/C++,JScript,あるいはC#など,複数のプログラミング言語が使用できます。
なお今回は,Visual Studio.NETが提供する.NET対応プログラム作成機能とMicrosoft言語拡張機能を一切無効にしています。このため,本日のサンプル・プログラムを実行すると,ANSI(米国規格協会)仕様準拠のCコードを作成する旨のメッセージが出ます。
開発時に作成したプロジェクト・ファイルはダウンロードできるようにしてありますから(ダウンロードはこちら),後日自分の目で動作を確認されてください。
本日のサンプル・プログラムは,関数と.NETの関係を考える目的を持っていますから,次のような実装方針をとり,分かりやすいプログラムを開発することにします。
ご覧のように,本日のサンプル・プログラムはC言語で記述したコンソール・アプリケーションとなります。それでは,完成したソース・コード(リスト1)と実行画面(図1[拡大表示])を見てみましょう。
これらはいずれも関数です。一見すると分かるように,カッコ()の中に入っている情報に微妙な違いがあります。例えば,最初の関数checkcompilerinfo()のカッコの中には何も入っていませんが,2番目の関数はshowVariable(Kaisuu)となっており,カッコ内にKaisuuという情報が入っています。このような情報を引数と呼んでいます。
一般に,関数は特定の処理を実行し,その結果を返すといわれています。これは,関数を使用する側の立場に立てば,関数内部でどのような処理を行っているかは重要なことではなく,結果さえ返してくれればよい,ということになります。また,関数は繰り返し使われる,つまり,再利用される便利なソフトウエア部品であるとも言えます。この再利用という考え方をさらに推し進めたのが,COM(Component Object Model)であり,.NETの世界といえます。
ところで皆さん,実はここに紹介した関数以外にもう1つ別の関数があるのですが,分かりますか?それは,次の関数です。
この関数と上に示した2つの関数の間にはたいへんな違いがあります。上の2つの関数名は親しみやすい名称を持っていますが,この関数の名称であるmainはどうでしょうか。実は,この関数名は,プログラマが勝手に付けられないのです。それどころか,このmain関数は,OSとの窓口という重要な役割も持っています。詳しくは本稿の最後で説明します。
それでは,名前を自由に付けることができる2つの関数と特殊なmain関数の間には,どのような関係があるのか考えてみましょう。
showVariableなどの通常の関数は,main関数の中カッコ“{ }”内に記述されています。これは,main関数が内部で2つの関数を使用していることを意味します。このように,関数がその内部で別の関数を使用することを,“関数を呼び出す”という言い方をします。それでは,ひとまずここで,これまでの説明内容を整理しておきましょう。
“基本的に関数は,引数という情報を受け取り,必要な処理を行った上で,処理結果を報告する再利用部品である。関数は別の関数を内部で呼び出すことができる”
先の関数の説明の中で,main関数という特殊な関数に触れ,その関数は内部で2つの関数を呼び出していると言いました。main関数は特殊ですが,関数であることに変わりはありません。ならば,このmain関数を呼び出すのはいったい誰でしょう?回答は次のとおりです。
本日のサンプル・プログラムをVisual Studio.NETのデバッグ環境(より正確には,ステップ・イン・モード)で実行すると,図2[拡大表示]のような情報を得ることができます。
図2は,サンプル・プログラムが動作を開始すると,main関数が最初に呼ばれることを示しています。このため,“main関数はOSへのエントリ・ポイントを提供する”と言うことがあります。そして.NET時代に入った今,このようなOSから直接呼ばれる関数を持つプログラムは,「アンマネージド・コード」と呼ばれます。アンマネージド・コードというのは,管理されないコードという意味ですが,多くの人は次のような疑問を持つはずです。
“本日のサンプル・プログラムは管理されないコードといわれるなら,いったい誰によって管理されないということなのであろうか?また,管理されないコードがあるならば,管理されるコードというのはあるのだろうか?”
本日は,Visual Studio.NETの.NET対応コード生成機能とMicrosoft言語拡張機能を一切無効にした上で,コンソール・アプリケーションを作成してみました。作成したサンプル・プログラムは,単純であるがゆえに,OSとの密接な関係を端的に示しています。次回は本日のサンプル・プログラムを「マネージド・コード」(管理されるプログラムコード)に変換します。そのプログラムはいったい“誰によって管理されている”のでしょう。main関数とOSとの関係はどのような変更を受けるのでしょう。
■.NET対応のバーコード生成ソフト部品,アドバンスソフトウェアが10月に発売 (2002/09/05)
■「次期 .NETで“五つの障壁”をクリアできる」,米マイクロソフト副社長が強調 (2002/08/05)
富士ゼロックス DocuWorks導入事例シリーズ 〜ドキュメントにまつわる経営課題を解決〜
キヤノン/キヤノンマーケティングジャパン キヤノンの「船積書類管理システム」〜船積書類を電子化し輸出業務を効率化
日本ヒューレット・パッカード 直線的に向上するパフォーマンス“クアッドコア×マルチプロセッサ”の威力
日本アイ・ビー・エム IBMがリリース 最大16CPUまで拡張可能なクアッドコア搭載ハイエンドx86サーバー
日本アイ・ビー・エム/日立製作所 POWER6のイノベーションを支える数々のキーテクノロジーを紐解く
日本ヒューレット・パッカード 130万人が利用する“電子交付サービス”を支える,仮想サーバ環境
日本ヒューレット・パッカード 次世代ASPサービス展開を視野に,第3世代ブレードで社内メッセージング環境を刷新
日立製作所 エンタープライズサーバ事業部 日立だからできるN+1コールドスタンバイ 〜日立BladeSymphonyが選ばれる理由
日本ヒューレット・パッカード コンパクト第3世代ブレード登場 中小規模のシステムにこそ,ブレードのメリットを
日本アイ・ビー・エム ブレードサーバー市場における「IBM 4年連続シェアNo.1」の理由を探る
日本アイ・ビー・エム 今,急がれる地球にやさしいITの実現 〜そのカギはITインフラのエネルギー効率化
情報システム 業務アプリケーション 上流工程 SaaS&Enterprise 2.0 グローバル・ソーシング
ITpro協力誌 日経コンピュータ 日経コミュニケーション 日経SYSTEMS 日経情報ストラテジー 日経NETWORK 日経ソリューションビジネス 日経ソフトウエア 日経Linux 日経ニューメディア 日経BPガバメントテクノロジー 日経パソコン 日経BPソフトプレス
IT経営 システム開発 プロマネ&アーキテクト ネットワーク最新テクノロジー 業績&業界動向 セキュリティ Windows オープンソース
製品&サービス・ディレクトリ 業務アプリケーション 設計開発 OS/DB/ミドルウエア サーバー/ストレージ 運用管理 ネットワーク セキュリティ SIサービス 通信サービス クライアント/OA機器

[ 81] 10行のサンプル・プログラムで分かる.NETの基礎(第2回):ITpro
[引用サイト]  http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20020909/1/

2003年の夏,世界最大の小売チェーンである米ウォルマート・ストアーズが米ジレットの製品に無線ICタグを取り付ける実験を計画したところ,消費者保護団体のCASPIANにプライバシの問題で反対され,中止になったことは読者もご存知だろう。今回は利便性とプライバシについて述べてみたい。
プライバシについて考えるなら,無線ICタグを「バックヤード」で使う場合と「フロント」で使う場合に分けて考える必要がある。物流業務の効率化など,「バックヤード」だけで使う場合にはプライバシは問題とならない。消費者に物を渡す前に無線ICタグを外してしまえばよいからだ。無線ICタグの導入効果は,純粋に業務の効率化とかいった尺度でとらえればよい。
ところが,店舗から消費者のところへ物が渡る「フロント」の場合には,無線ICタグの導入によりプライバシ問題が浮上してくる。個体を一意に識別できるタグが付いたものを店の中から外に持ち出すということになると,お店から出てきた人に電波を当てれば,買った物をすべて他人に知られてしまうのではと心配する人が出てくる。「何をどこの店で買ってきたのね」,「そっちのポケットにいっぱい入っているのね」といったことを言われたらどうするのかといった具合だ。さらに,家の中に置いてある無線ICタグ付きの物に外から電波を当てたらどうなるか,と騒ぐ人もいる。技術的に見れば,仮に強力な電子銃のような電波を当てたとしても,小さな無線ICタグの情報を屋外にいる人間が知ることは,それほど容易なことではない。しかしウォルマートの場合は,プライバシ問題を懸念している消費者団体の意見を受けて,店頭での実験を中止してしまった。
ウォルマートの無線ICタグ実験に対して反対意見が出たのは,無線ICタグが出てくる前に起きた事象と関係があると思っている。近年ものすごい勢いでCRM(顧客関係管理)が広がったが,CRMが普及するなかで,多くの人が,自分が買い物をした業者とはまったく別の見ず知らずの業者から,ダイレクト・メールや電子メールを受け取るという経験をしていると思う。こうした状態のなかで無線ICタグが登場したため,一般の人々の間ではCRMと無線ICタグが完全にオーバーラップしてしまい,必要以上に防衛心が働いたのではないだろうか。CRMやマーケティングの乱用・悪用が原因であるにもかかわらず,見ず知らずの業者からダイレクト・メールが来るような状況が,無線ICタグを製品に付けることにより,さらにひどくなり,「自分の生活を誰かに見られてしまうのでは」という警戒心を持たれてしまった。
米国ほどではないにせよ,日本人もプライバシに対して過敏に反応するときがある。最近では「住基」に対して,ものすごい勢いで反対の声が挙がった(住基については別の回で述べたいと思う)。
ところが一方では,ETC(自動料金収受システム)や電子定期券(Suica)など,使用すると持ち主の行動が分かってしまう可能性があるにもかかわらず,便利と思えば抵抗無く使用しているケースがある。携帯電話しかり,インターネットでのオンライン・ショッピングしかり,プライバシの面から考えると不安に思える部分があるはずだが,実際には便利なので盛んに使われている。
情報システム 業務アプリケーション 上流工程 SaaS&Enterprise 2.0 グローバル・ソーシング
ITpro協力誌 日経コンピュータ 日経コミュニケーション 日経SYSTEMS 日経情報ストラテジー 日経NETWORK 日経ソリューションビジネス 日経ソフトウエア 日経Linux 日経ニューメディア 日経BPガバメントテクノロジー 日経パソコン 日経BPソフトプレス
IT経営 システム開発 プロマネ&アーキテクト ネットワーク最新テクノロジー 業績&業界動向 セキュリティ Windows オープンソース
製品&サービス・ディレクトリ 業務アプリケーション 設計開発 OS/DB/ミドルウエア サーバー/ストレージ 運用管理 ネットワーク セキュリティ SIサービス 通信サービス クライアント/OA機器

[ 82] 日本でならプライバシ問題をクリアできる(1):ITpro
[引用サイト]  http://itpro.nikkeibp.co.jp/free/NBY/RFID/20040614/1/



お気に入り



  • track feed
    • seo