![]() |
連載
|
|
Page1
Page2
|
本連載では、新たに.NETで開発を始めようとしている新人プログラマを対象に、.NETアプリケーションが動作する仕組み、つまり「.NETの動作原理」について解説する。
もちろん、有能なプログラマや優秀なアーキテクトを目指している読者は、これまでも普通の人よりはコンピュータを使ってきただろう。だから、メール・ソフトやブラウザなどのアプリケーションはある程度思いのままに操れるし、Windows OSのトラブルにも何とか対処できる自信があるに違いない。
しかしこれからは、そのような「ソフトウェアがうまく使える能力」を磨くだけでは済まなくなる。これからは、「普通の人に役立つ、面白くて、便利で、使い勝手の良いソフトウェアを開発するための能力」を伸ばしていかなくてはならないはずだ。
「そのために、まずは.NET開発を極めたい。それにはプログラムが実行される仕組み、とりわけ.NETの動作原理の基礎はきちんと学んでおきたい。」
本連載は、そういう熱意のある新人開発者のための記事である。
本連載は、次のような構成で進める予定である。
第1回 .NETアプリケーションを動かす土台(パソコンとOSの動作原理)
第2回 .NETアプリケーションが起動する仕組み(Windowsローダーの働き)
第3回 .NETアプリケーションが実行される仕組み(CLRの動作原理)
今回は、「パソコンとOSの動作原理」について解説する。それぞれの項目を解説する際には、あまり難しくなりすぎたり、細かくなりすぎたりしないように気を付け、なおかつ基本はきちんと押さえた記事にしていきたい。どうか、連載終了(恐らく3回)までお付き合いいただければ幸いである。
Windowsプログラミングの歴史的変化
●Windows OSの普及と進化
1995年11月23日。この日、Microsoft Windows 95(日本語版)の発売が開始された。それから今日まで、約10年の歳月が流れたことになる。その間、Windowsというオペレーティング・システム(OS)を利用するコンピューティング環境は、個人、企業、産業を問わずに、急速にかつ幅広く普及した。マイクロソフトは、この10年という年月の流れの中で、Windows OSのバージョンアップを繰り返しながら、機能やユーザビリティ(=使い勝手)、パフォーマンス(=性能)、セキュリティ(=安全性)などを大きく向上させてきた。
|
【コラム】Windows OSの歴史 次の表にあるように、これまでマイクロソフトは、新しいバージョンのWindows OSを次々と市場に投入してきた。1995年より以前のバージョンについては、「@IT:Insider's Computer Dictionary [Windows]」を参照してほしい。なお、本表にある「クライアントOS」とは、一般的なユーザーが利用することを目的としたOSを意味し、「サーバOS」とはWebサイト構築やファイル共有などの目的で複数のクライアントからアクセスされることを目的としたOSを意味している。
|
もちろん進化したのはOSだけではない。そのOS上で動作する個々のアプリケーション・ソフトウェア(以降、アプリケーション)も同様に進化してきた。例えば、インターネット上のWebサイトを参照するための「IE(Internet Explorer)」などは、これまでにもたびたびバージョン・アップしてきたのだ。
Windows 95が登場したころのアプリケーションは、Windows OSが提供するAPI(Application Programming Interface:アプリケーションをOS上で動作させるためのインターフェイス。APIは、例えば「ファイルを開く」といった1つの機能をアプリケーションに対して提供するもの)である「Win32 API」を用いて開発することが一般的だった*1。
しかしWin32 APIは、Windows OSと密接に結び付いているため*2、Windows OSの影響を直接的に受けてしまうという問題があった。Windows OSのバージョン・アップの歴史とは、簡単にいえばWindows OSの機能拡張の歴史でもあるのだが、こうして拡張された機能をアプリケーションが利用できるようにするには、既存のAPIを拡張するか、新しいAPIを追加するしか方法がない。このように増築を繰り返しながら、API全体としての一貫性や統一性を維持することは不可能だ。このためアプリケーション開発者は、OSのバージョンごと(例えば、Windows 98とWindows Server 2003など)でのAPIの違いに注意したり、一貫性のないAPI群を複雑な手順で呼び出したりしなければならず、開発が非常に面倒だったのだ。
| *1 そのように開発されたアプリケーションは「Win32アプリケーション」と呼ばれる。 |
| *2 Win32APIは、このようなOSの機能に密接に結びついた原始的なシステム・インターフェイスであることから「低水準のAPI」と呼ばれる。逆にインターフェイスを高度に抽象化したもの(例えば、一連の低水準APIの呼び出しを1つのAPIにまとめたものなど)は、「高水準のAPI」と呼ばれる。 |
そこで、Windows OSの異なるバージョン間の違い(例えば、Windows 95とWindows XPの違い)をあまり意識する必要がなく、しかもよりシンプルな開発が可能な(つまり、より手軽で簡単にAPIの呼び出しが行える)アプリケーション開発手法が、これまでにいくつも出てきた。
例えば、(旧来の)「Visual Basic」というプログラミング・ツールでは、プログラミング初心者がなじみやすいWindowsアプリケーションの画面デザインを中心にした開発が行えるプログラミング手法が提供された。また、「Visual C++」という開発ツールでは、大規模なアプリケーション開発に適した(より効率的な開発が可能となる)「オブジェクト指向」*3という考え方に基づく「MFC(Microsoft Foundation Class)」というクラス・ライブラリ(=オブジェクト指向の「クラス」という言語構文機能によって、利用目的ごとにAPIを寄せ集めてまとめたもの。例えば、ファイル操作を目的として「ファイルを開く」「ファイルにデータを書き込む」「ファイルのデータを読み込む」「ファイルを閉じる」という複数のAPIを寄せ集めたクラスなど。このようなクラスをたくさん作成してまとめたものがクラス・ライブラリである)が提供されている。
| *3 オブジェクト指向については「オブジェクト指向プログラミング超入門」を参照してほしい。 |
このようなプログラミング環境の発展のおかげで、Windowsアプリケーションの開発生産性は飛躍的に高まった(つまり、より早く、より多くの機能を簡単に開発できるようになった)。
●現在のWindowsプログラミングの主流「.NET開発」
そのような開発スタイルの進化は、最終的に「.NET Framework」を生み出した。これが現在のWindowsプログラミング手法の主流となっている。
.NET Frameworkとは、「現時点で最も高水準かつ高機能なAPI」(=クラス・ライブラリ)を利用できる開発スタイルだと考えればよい*4。.NET Frameworkを使えば、高機能なアプリケーションを素早く簡単に開発できるだけでなく、開発できるアプリケーションの種類も、Windowsアプリケーションから、インターネット上のWebサイトとなるWebアプリケーション、PDA(Personal Digital Assistants)などの携帯端末までと幅広い*5。
| *4 詳しくは「初めてのMicrosoft .NET」を参照してほしい。 |
| *5 .NET Frameworkを用いたアプリケーションの開発方法については、「簡単!Visual Studio .NET入門」や「オブジェクト指向プログラミング超入門」を参照してほしい。本稿では、そこで開発された.NET Frameworkを用いたアプリケーションが、どのようにして実行されるのかに焦点を当てて解説する。 |
本連載では、「このような.NET Frameworkを用いたアプリケーション(以降、.NETアプリケーション)が、どのようにして起動し、どのようにして実行されるのか?」という.NETの仕組み・動作原理について解説していくわけだが、今回は、「そもそも、アプリケーションを動作させる母体であるWindows OSは、どのようにして動いているのか?」ということについて、次のページで解説しよう。
| INDEX | ||
| .NETの動作原理を基礎から理解する! | ||
| 第1回 .NETアプリケーションを動かす土台 | ||
| 1.Windowsプログラミングの歴史的変化 | ||
| 2.パソコンの歴史と動作原理 | ||
| 「.NETの動作原理を基礎から理解する!」 |
ホワイトペーパー(TechTargetジャパン)
- .NET TIPS - .NET開発のテクニックとヒント集 - (2010/3/18)
− GridViewコントロールを階層表示させるには?
− Windowsフォームのボタンに画像を表示するには?
− C#でnullチェックを簡潔に行うには? - Chapter15:LINQとクエリ式 (2010/3/17)
C# 3.0の目玉機能であるLINQについて、さまざまな記述例を交えながら徹底解説。書籍『[完全版]究極のC#プログラミング』より転載 - VBラムダ式 基礎文法最速マスター (2010/3/16)
今度はVB。ラムダ式の基礎文法を、短い説明と簡単なコードでまとめる。「ラムダ式、どう書くんだっけ?」という場合の簡易リファレンスとして活用できる - ASP.NET MVC 2がリリース (2010/3/15)
ASP.NET MVC 2の正式版(VS 2008のASP.NET 3.5向け、VS 2010には標準で含まれる予定)のリリースについてのお知らせ
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |







