本稿は「レッツ! Windows 7」と題して、Windows 7の便利な機能を中心に、初心者が判断に悩む設定や、気付きにくい場所に設けられた設定を解説していきます。Windows 7から初めてコンピューターに触る方はもちろん、Windows XP/Vistaからアップグレードした方も是非ご覧ください。また、読者からの質問をお待ちしておりますので、本稿末尾にあるリンクから投稿をお願い致します。今回は様々なアプリケーションやツールを実行する際に必要なランタイムライブラリの導入に関して解説しましょう。

レッツ! Windows 7 - デスクトップ編(1)
レッツ! Windows 7 - デスクトップ編(2)
レッツ! Windows 7 - デスクトップ編(3)
レッツ! Windows 7 - 電源管理編(1)
レッツ! Windows 7 - 電源管理編(2)
レッツ! Windows 7 - 電源管理編(3)
レッツ! Windows 7 - ユーザーインタフェース編(1)
レッツ! Windows 7 - ユーザーインタフェース編(2)
レッツ! Windows 7 - Windows Update編(1)
レッツ! Windows 7 - ユーザーインタフェース編(3)
レッツ! Windows 7 - ユーザーインタフェース編(4)
レッツ! Windows 7 - デバイス編(1)
レッツ! Windows 7 - ホームグループ編(1)
レッツ! Windows 7 - ユーザーインタフェース編(5)
レッツ! Windows 7 - Windows XP Mode編(1)
レッツ! Windows 7 - Windows XP Mode編(2)
レッツ! Windows 7 - Windows XP Mode編(3)
レッツ! Windows 7 - Windows Media Player 12編(1)
レッツ! Windows 7 - Windows Media Player 12編(2)
レッツ! Windows 7 - ユーザーインタフェース編(6)
レッツ! Windows 7 - ユーザーインタフェース編(7)
レッツ! Windows 7 - システムメンテナンス編(1)
レッツ! Windows 7 - トラブルシューティング編(3)
レッツ! Windows 7 - リモートデスクトップ編(1)
レッツ! Windows 7 - リモートデスクトップ編(2)
レッツ! Windows 7 - リモートデスクトップ編(3)
レッツ! Windows 7 - バックアップ・復元編(1)
レッツ! Windows 7 - バックアップ・復元編(2)
レッツ! Windows 7 - Windows XP Mode編(4)
レッツ! Windows 7 - システムメンテナンス編(2)
レッツ! Windows 7 - システムメンテナンス編(3)
レッツ! Windows 7 - システムメンテナンス編(4)
レッツ! Windows 7 - ユーザーインタフェース編(8)
レッツ! Windows 7 - 検索編(1)
レッツ! Windows 7 検索編(2)
レッツ! Windows 7 - 電源管理編(4)
レッツ! Windows 7 - ユーザーインタフェース編(9)
レッツ! Windows 7 - Windows PE編
レッツ! Windows 7 - Windows PE編(2)
L レッツ! Windows 7 - Windows PE編(3)

ランタイムライブラリとは?

「Windows 7大百科」が待望の書籍化!!著者阿久津良和氏による560ページにおよぶWindows 7の大百科。著者: 阿久津良和 A5判560ページ 定価2,079円http://www.amazon.co.jp/dp/4839935513/(Amazon.co.jp)

そもそも「ランタイムライブラリ」とは、ソフトウェアを実行する際に必要となる機能をまとめたパーツを意味し、意訳すると「実行時」となるため、そのまま「ランタイム」と称することもあります。機能の共通化やバイナリファイルで配布するのが一般的なWindows OS環境では、ファイルサイズの軽減や管理の簡易化などを目的として、古くから存在していました。

例えば、MicrosoftがBASICをベースに開発した開発言語であるMicrosoft Visual Basic製プログラム(アプリケーション)を使用するには、「MSVBVMxx.DLL」(xxはバージョン番号)というファイルが必要です。どのランタイムライブラリを使用するかは、プログラム開発者のスタイルによって異なるため、あらかじめランタイムライブラリを同こんしているファイルを用意する配布元もあれば、独自収集し、手動で導入しなければならい場面にも出会うかも知れません。

このようにプログラムの実行に欠かせないランタイムライブラリですが、注意しなければならないのは、必要なライブラリはプログラムによって異なるという点。前述のようにMicrosoft Visual Basic 6.0で開発されたプログラムであれば、「VB6JP.DLL」「MSVBVM60.DLL」といったファイルが必要になりますが、その前バージョンであるMicrosoft Visual Basic 5.0で開発された場合は「VB5JP.DLL」「MSVBVM50.DLL」が必要となります(図01~02)。

図01 ランタイムライブラリが用意されている場合

図2 ランタイムライブラリが存在しない場合

ただし、ラインタイムライブラリを必要としないプログラムも存在することを覚えておきましょう。そもそも、プログラムを特定の開発言語を用いて記述したソースコードから実行ファイル形式に変換する、コンパイルおよびリンク作業時にラインタイムライブラリの扱いを選択できるからです。同一のプログラムファイルに埋め込む場合は「静的リンク」、前述のようにプログラムから必要に応じてランタイムライブラリをメモリ上に展開する場合を「動的リンク」と称するのが一般的。

前者はランタイムライブラリを展開する際のオーバーヘッドを軽減するというメリットと、バイナリファイルの肥大化というデメリットを備えています。しかし、最近ではコンピューターのスペック向上に伴い、オーバーヘッドによるメリットは希薄化するようになりました。プログラムの開発と縁のない方には、少々難しいロジックですが、単純に「実行するプログラム(アプリケーション)によっては、特定のランタイムライブラリが必要」ということだけを覚えておきましょう。

Windows 7の初期状態

ランタイムライブラリの基本的な概念を理解しますと、「Windows 7の導入を終えた状態から、どのようなランタイムライブラリを導入すればよいのか」という疑問にぶつかることでしょう。そもそもWindows 7の初期状態では、下記のようなランタイムライブラリが導入されています。

Windows 7の初期状態で導入されるラインタイムライブラリ

  • Microsoft Visual Basic 6.0の一部(MSVBVM60.dll)
  • Visual C++の共有Cランタイム(MSVCRT.DLL/MSVCRT20.DLL/MSVCRT40.DLL)
  • Visual C++のクラスライブラリ「MFC(Microsoft Foundation Class)4.0/4.2/8.0」
  • ゲームおよびマルチメディア処理用環境「DirectX 11.0」
  • .NETアプリケーション開発および実行環境「.NET Framework 1.0~3.5」

上記はWindows 7 Professional 32ビット版の導入直後をベースに、筆者が独自に調べたものです。今回は.NET FrameworkもDirectXもランタイムライブラリの一種であるという観点に立つと同時に、.NET Frameworkを前提にしたアプリケーションも多く出回るようになってきましたので、リストに加えてみました。

さて、このようにWindows 7の初期状態は最小限の状態であり、Microsoft Visual C++ .NET 2002/2003のクラスライブラリである「MFC(Microsoft Foundation Class)7.0/7.1」や、古いMicrosoft Visual Basic用ランタイムライブラリは導入されていません。もちろん、Microsoftが手を抜いているわけではなく、不要なランタイムライブラリファイルを加えて、Windows 7導入時の必要なディスク容量を軽減するのと、ランタイムライブラリファイル同士が衝突し、予期しないトラブルが発生する「DLL地獄」を回避するための処置でしょう。この場合はランタイムライブラリファイルを必要に応じて入手し、実行するプログラムと同一のフォルダーに入れておけばよいのです。

なお、Windows Update経由で導入(正しくは更新)されるランタイムライブラリも存在します。筆者が確認した限りでは、.NET Framework 3.0 SP(Service Pack)2、.NET Framework 3.5 SP(Service Pack)1、.NET Framework 4.0が導入されました(図03)。

図03 Windows Update経由で導入されるラインタイムライブラリも存在します

一般的に必要なランタイムライブラリ

筆者が本稿を執筆しようと思った理由は、「『ランタイムライブラリ』というエンドユーザーには奇々怪々な存在を明確にしよう」というものでした。そのため、エンドユーザーの使用頻度が低く、数世代前の古い開発環境となるMicrosoft Visual Basicや、Borland C++ Builderなどを除外し、大多数が必要なランタイムライブラリは何かと考えますと、Microsoft Visual C++のラインタイムライブラリに絞られます。

Microsoft Visual C++は、CやC++といった各開発言語のコンパイラやバグを修正するデバッガなどを含んだ統合開発環境です。そもそもラインタイムライブラリも同製品の一部であり、本稿で述べているMicrosoft製ランタイムライブラリは同社の製品としてライセンス保護されています。そこで同社は、以前から開発環境に含まれる一部のランタイムライブラリを、再頒布可能なパッケージとして公開してきました

Microsoft Visual C++再頒布可能パッケージは、バージョンおよびOSのバージョン(x86/x64)によって異なるパッケージが用意されています。Windows 7向けとして導入すべきは、「Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ」「Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ」「Microsoft Visual C++ 2010 再頒布可能パッケージ」の三つ。お使いのWindows 7が32ビット版か64ビット版かによって異なりますので、下記の囲みのリンクからジャンプするときは注意してください。

また、Microsoft Visual C++ 2010以外のパッケージは、リンク先のダウンロードページに記述されている「サポートされているオペレーティングシステム」に、Windows 7が含まれていませんが、筆者が確認した限り、OSに悪影響を及ぼすことはありません。ただ、ランタイムライブラリ自身に脆弱性が含まれている場合は、それがセキュリティホールになりかねませんので、Microsoftセキュリティ情報センター などセキュリティ情報を確認してください。

Microsoft Visual C++ 再頒布可能パッケージ

Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)
Microsoft Visual C++ 2010 再頒布可能パッケージ (x64)
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64)
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x64)

読者のなかには「Microsoft Visual C++ 2010再頒布可能パッケージを導入すれば、同2005 SP1再頒布可能パッケージは不要では?」と考える方もおられるでしょう。しかし、Microsoft Visual C++ 2005以降は、「%WinDir%\WinSxS」フォルダー下の「x86microsoft.vc80.mfc~(64ビット版Windows 7は『amd64microsoft.vc80.mfc~』」などのフォルダーに、Side-by-Sideアセンブリ(DLL地獄と呼ばれる、DLLファイル同士の衝突を避けるための仕組み)で導入されるようになりました(図04~05)。

図04 初期状態で存在する「%WinDir%\WinSxS\x86_microsoft.vc80.mfc~」フォルダーのVisual C++のランタイムライブラリ(バージョン2005相当)

図05 こちらは、Microsoft Visual C++ 2008 SP1再頒布可能パッケージを導入した状態。「%WinDir%\WinSxS\x86_microsoft.vc90.mfc~」フォルダーなどが生成され、各DLLファイルが格納されます

そのため、バージョンによって異なるランタイムライブラリが追加導入されるため、必要であれば各バージョンの導入が求められるのです。また、64ビット版Windows 7の環境では、32ビット版プログラムを実行しても、64ビット版再頒布可能パッケージが提供するランタイムライブラリにアクセスできないため、同時に32ビット版再頒布可能パッケージも導入してください(図06)。

図06 各Visual C++再頒布可能パッケージを導入しますと、「プログラムと機能」に同パッケージが並びます

なお、どうしてもmicrosoft Visual Basic 6.0時代のアプリケーションをWindows 7上で実行しなければならないような場面で出会(でくわ)す場合は、下記のランタイムライブラリを導入しましょう。

Visual Basic 6.0 Service Pack 6 ランタイム再頒布可能パッケージ
Visual Basic for Applications ランタイムのセキュリティ更新プログラム

阿久津良和(Cactus)