C/C++ リモート開発 - NetBeans IDE 6.9 チュートリアル
執筆:
Sergei Grinev
、管理: Susan Morgan
2010 年 6 月 [リビジョン番号: V6.9--1]
目次
要件
このチュートリアルに従うには、次のソフトウェアが必要です。
必要な NetBeans ソフトウェアのダウンロードとインストールについては、「NetBeans IDE 6.9 のインストール 」および「C/C++/Fortran 向けの NetBeans IDE の構成 」 必要なソフトウェアのダウンロードとインストールに役立ててください。
はじめに
このチュートリアルでは、C/C++ プロジェクトのリモート開発の使用方法を示します。Windows 7 や Mac OS X が実行されているラップトップで SolarisTM または Linux アプリケーションを開発したり、IDE から離れずにアプリケーションを異なるオペレーティングシステム上でテストしたり、あるいは大規模アプリケーションをコンパイルするため、通常使用しているワークステーションよりも速いマルチコアサーバーを使用してみたいと思ったことはありませんか。NetBeans IDE 6.9 には、これらすべてのニーズにこたえるリモート開発機能があります。
このチュートリアルを読むと、この機能の使用方法がわかります。
リモート開発の概念
リモート開発は、次のような方法で動作します。
クライアントシステム上で NetBeans IDE を実行すると、ローカルプロジェクトで行うのと同じように、プロジェクトの作成、ファイルの編集、およびコード支援機能を使用できます。ただし、プロジェクトを構築、実行、またはデバッグするとき、それらのプロセスはリモートサーバー上で実行され、入出力がクライアントシステムに転送されます。そのため、リモート開発ホストを設定したあとは、観念的にはローカル開発とリモート開発でのワークフローに違いは感じられないはずです。
ツールの実行にリモートホストを使用できるようにするため、次の条件を満たす必要があります。
共有リソースを使用するか、Secure Shell プロトコル (SSH) を使用するかのどちらかの方法で、ローカルクライアントシステムとリモートシステムからプロジェクトファイルにアクセスできる必要があります。
プロジェクトファイルが共有フォルダにある場合でも、クライアントは Secure Shell (SSH) でリモートシステムに接続できる必要があります。
リモートシステムは、サポートされているツールコレクションにアクセスできる必要があります。
プロジェクトでコード支援を有効にするために必要なサポートシステムライブラリが、リモートシステムにある必要があります。
それぞれの要件を次で説明します。
ソースの共有
クライアントシステムとリモートサーバーの両方から、ソースファイルが認識できる必要があります。ソースファイルは、共有ネットワークパスに配置することも、ローカルシステムからリモートシステムに安全にコピーすることもできます。「システムの設定 」節では、異なるシステム上で共有フォルダを設定する方法をさらに詳しく説明しています。
接続
共有ネットワークパスを除くクライアントとサーバー間のすべてのデータ転送は、SSH (Secure Shell) プロトコルを介して行われます。SSH とは、ネットワーク接続された 2 つのデバイス間で、セキュリティー保護された通信を行うための共通プロトコルです。サーバーには SSH サーバーがインストールされている必要があり、クライアントシステムとサーバーとの間で SSH 接続が許可されている必要があります。
ツールコレクション
IDE は、GNU コンパイラコレクション、Sun Studio、または Oracle Solaris Studio のサポートされているツールコレクションを見つけられる必要があります。ツールの実行可能ファイルは、IDE が簡単にツールを見つけられるように、リモートホスト接続に使用するユーザーアカウントのパスに置くようにしてください。これは特に、ツールがデフォルト以外の場所にインストールされている場合に当てはまります。
コード支援
コード補完や意味解釈の強調表示、「クラス」ウィンドウなどのエディタ機能が正常にサポートされるには、プロジェクトを正しい環境 (システムインクルード、マクロ定義、プラットフォームなど) で使用する必要があります。この情報はすべてリモートサーバーから収集されてクライアントシステムにローカルに保存されるため、プロジェクトがリモート開発ホストを使用するように設定されている場合でも、ローカルで編集するときにコード支援が機能します。
システムの設定
リモートサーバーで、IDE を実行しているクライアントからの SSH プロトコルを介した通信が許可されている必要があります。IDE がリモートサーバーにファイルをコピーできるようにする代わりにファイル共有を使用する場合、ファイル共有が両方のシステムのネットワーク内で設定されている必要があります。
SSH プロトコル
SSH サーバーは通常 Linux および Solaris オペレーティングシステムに組み込まれており、ほとんどの場合、デフォルトで実行されます。そうでない場合は、http://en.wikipedia.org/wiki/Secure_Shell で SSH のインストールおよび管理についての情報を参照できます。
IDE は自身の SSH クライアントを提供するため、SSH クライアントをローカルマシンにインストールする必要はありません。
SSH 接続はクライアントシステムとサーバーシステムの両方で許可されている必要があります。これは通常、両方のサーバーでポート 22 が開かれている必要があることを意味します。ポート 22 が無効になっている場合、root アクセス権またはシステム管理者の支援が必要です。
「スマートセキュアコピー」オプションを使用してプロジェクトファイルをリモートサーバーへ転送していない場合でも、SSH はシステム間で有効になっている必要があります。
ソースの共有
ほかの用途のために Windows システムと Unix リモートホスト間のファイル共有がまだ設定されていない場合、ファイル共有よりも「スマートセキュアコピー」オプションを使用する方がずっと簡単です。
Windows から UNIX® への構成の場合、ソースを共有するための主な方法として次の 2 種類があります。
UNIX システム上で Samba サーバーを使用
Windows システム上にインストールされた Windows Services for UNIX (SFU) パッケージを使用
Samba を使用したソースの編成
Samba サーバーを使用すると、Windows ユーザーは共有 NFS フォルダを Windows ネットワークドライブとしてマップできます。Samba パッケージは、Linux および Solaris オペレーティングシステムのほとんどのディストリビューションに含まれています。ディストリビューションに含まれていない場合、www.samba.org からダウンロードできます。
サーバーへの root アクセス権がある場合、次のリンクの簡単な手順に従って Samba を設定できます。root アクセス権がない場合、システム管理者に連絡する必要があります。
Samba の開始後は、Windows のフォルダと同じように UNIX サーバーのフォルダをマップできます。
Windows Services For UNIX (SFU)
もう一つのオプションは、Microsoft が提供する一連のユーティリティーの Windows Services For UNIX です。これを使用すると、Windows から NFS ファイルシステムにアクセスできます。
これらは「Microsoft ダウンロードセンター 」からダウンロードできます。「Unix 向け Windows サービスのページ 」でドキュメントを読むこともできます。
Windows Vista または Windows 7 ユーザーは、SFU パッケージを使用できません。Windows Vista および Windows 7 Enterprise Edition および Ultimate Edition には Services for Unix コンポーネントが組み込まれており、Subsystem for UNIX-based applications (SUA) および Client for NFS v3 に名前が変更されています。詳細については、http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX を参照してください。
Mac OS X の構成
Mac OS X は、Samba サーバーへの接続をサポートしています。また、Mac OS X はサーバーから NFS 共有をマウントすることもできます。
「Finder」>「移動」>「サーバへ接続」を使用して、サーバーアドレスを入力できます。
SMB/CIFS (Windows) サーバーおよび共有フォルダに接続するには、次のいずれかの形式でサーバーアドレスを入力します。
smb://DNSname/sharename
smb://IPaddress/sharename
共有フォルダのユーザー名およびパスワードの入力が要求されます。詳細は、Apple ナレッジベースの「Windows ファイル共有 (SMB) への接続方法 」を参照してください。
NFS サーバーに接続するには、次のいずれかの形式でサーバー名および NFS 共有フォルダのパスを入力します。
nfs://servername/path/to/share/
nfs://IPaddress/path/to/share
詳細は、Apple ナレッジベースの「Finder を使って NFS エクスポートをマウントする 」を参照してください。
ユーザー名およびパスワードは要求されませんが、Mac UID を確認して認証が行われます。UID は、UNIX 系のオペレーティングシステム (Mac OS X、Solaris、Linux など) でユーザー名に割り当てられる一意の整数です。NFS を使用するには、Mac UID がサーバーのアカウントの UID と同じである必要があります。
UNIX - UNIX の構成
Solaris または Linux システム間のファイル共有では、特別な設定は必要はありません。システムの 1 つでフォルダを共有するか、または、home ディレクトリがネットワークファイルサーバー上でマウントされており、両方のシステムからアクセスできる場合は、このディレクトリを使用できます。
パスマッピング
共有ソースモデルを使用する場合、ローカルホスト上のソースの場所を、そのソースにアクセスするリモートホストで使用されるパスにマップする必要があります。
たとえば、次のような構成について考えます。
Solaris サーバー solserver に共有フォルダ /export/pub がある
SFU がインストールされた Windows XP を実行するワークステーションで、パス \\solserver\export\pub がドライブ P: にマウントされている
プロジェクトソースファイルは solserver のフォルダ /export/pub/myproject にある
この場合、サーバーから見て、ソースファイルは /export/pub/myproject にあります。しかし、クライアントから見ると、ソースファイルは P:\myproject にあります。そのため、IDE でこれらのパスがマップされていることが認識されるようにする必要があります。
/export/pub -> P:\
NetBeans IDE でリモートホストを構成する前にソースファイルの共有リソースを設定すると、ほとんどの場合に必要なパスマッピングが自動的に検出されます。
IDE の設定
次の例では、クライアントホストは Windows Vista が実行されているワークステーションです。b20 という名前のリモートホストは、Solaris オペレーティングシステムが実行されているサーバーです。
「ウィンドウ」>「サービス」と選択して、「サービス」ウィンドウを開きます。
「C/C++ 開発ホスト」ノードを右クリックして、「新規ホストを追加」を選択します。
「新規リモート開発ホスト」ダイアログで、IDE がローカルネットワークのホストを検出します。ホスト名はこのダイアログの表に追加され、SSH サーバーを実行している場合は「使用可能」としてマークされます。
使用するサーバー名をダブルクリックするか、「ホスト名」フィールドにサーバー名を直接入力します。「次へ」をクリックします。
「ホストのセットアップ」画面に、リモートホストへのログインに使用するユーザー名を入力し、認証方法を選択します。このチュートリアルでは、「パスワード」を選択して「次へ」をクリックします。
SSH キーを使用する場合は、まず IDE の外部で設定されている必要があります。そうすると IDE で SSH キーの場所を指定できるようになり、IDE がそのキーを使用してリモート開発ホストへの SSH 接続を行えるようになります。
サーバーに接続されたら、「認証」ダイアログにパスワードを入力します。
任意で「パスワードの記憶」をクリックすると、IDE によってパスワードが暗号化されてローカルディスクに保存され、IDE がリモートホストに接続するたびにパスワードを入力する必要がなくなります。
IDE によってリモートホストが構成され、リモートホスト上のツールコレクションが検索されます。
ホストが正常に構成された場合、「概要」ページに、プラットフォーム、ホスト名、ログインに使用されるユーザー名、および見つかったツールコレクションなどのリモートホストに関する情報が示されます。
「概要」ページの最下部に、2 つのオプションが表示されます。複数のツールコレクションが見つかった場合、それらのコレクションのうちの 1 つを「デフォルトツールコレクション」として選択できます。
「同期」オプションについては、次のようにします。
クライアントシステムとリモート開発ホストに、プロジェクトファイルへの共有アクセス権がない場合、「スマートセキュアコピー」を選択します。「スマートセキュアコピー」を選択した場合、プロジェクトファイルは、scp または sftp コマンドを使用して、サーバー上の自分のホームディレクトリにコピーされます。
クライアントとサーバーに、同一のフォルダへのアクセス権がある場合、「ファイルシステムの共有 (同期なし)」を選択します。
「完了」をクリックしてウィザードを終了します。
「サービス」ウィンドウで、「C/C++ 開発ホスト」ノードの下に新しいリモートホストが表示されています。新しいホストのノードを展開すると、「ツールコレクション」の一覧に 1 つまたは複数のツールコレクションが表示されているはずです。
ツールコレクションが一覧表示されていない場合は、次のようにします。
リモートホストで、ホストのユーザーパスにツールコレクションの bin ディレクトリを追加します。リモートホストで使用できるツールコレクションがない場合は、GNU コンパイラコレクション、Sun Studio ソフトウェア、または Oracle Solaris Studio ソフトウェアをリモートホストにインストールする必要があります。
ツールの実行可能ファイルのパスがリモートホストのユーザーパスに設定されたら、ローカルシステムでツールコレクションの再設定を試行できます。「サービス」ウィンドウでホストを右クリックして「デフォルトのツールコレクションを復元」を選択すると、IDE によってリモートホストのツールコレクションが再度検索されます。
または、「サービス」ウィンドウでホストを右クリックして「新規ツールコレクションを追加」を選択し、リモートホストのツールコレクションのパスを指定または参照します。
ツールコレクションが表示されたら、新しいリモート開発ホストの作成は完了です。このホストを開発で使用する方法を見てみましょう。
リモートホストでのローカルプロジェクトの構築
「ファイル」>「新規プロジェクト」を選択して新しいサンプルプロジェクトを作成します。
「サンプル」>「C/C++」と展開して「Welcome」サンプルプロジェクトを選択し、「次へ」をクリックします。
この例では共有フォルダを使用していないため、提案されているプロジェクトの場所 (共有されていない Windows ユーザーディレクトリの NetBeansProjects フォルダ) をそのまま使用できます。
共有ソースファイルを使用する場合、「プロジェクトの場所」として、リモートサーバーで共有されているパスを選択していることを確認してください。
「開発ホスト」に、新しいリモートホストを選択します。「ツールコレクション」の一覧が更新され、リモートホストで使用できるツールが表示されます。
「完了」をクリックしてプロジェクトを作成します。「プロジェクト」ウィンドウでプロジェクト名の上にカーソルを置くと、プロジェクトの場所と、プロジェクトが構築されるリモートホストがツールチップに表示されます。
ここで、ツールバーの「構築」をクリックするか、プロジェクトノードを右クリックして「構築」を選択すると、選択したリモートの開発ホスト上でサンプルプロジェクトが構築されます。
次のスクリーンショットでは、ソースファイルがローカルマシンにあることがツールチップに表示されていることが確認できます。また、argc シンボルの上にカーソルを置いて Ctrl- スペースキーを押したときに、コード支援サポートが機能することも確認できます。
「出力」ウィンドウに、アプリケーションの構築元のホスト名と、リモートコンパイラおよび make ユーティリティーが構築に使用されたことが表示されます。プロジェクトファイルは、リモートホストのユーザーの .netbeans/remote/system-platform ディレクトリにあります。
リモートホストを設定したあとは、ワークフローにほとんど違いはありません。構築、実行、テスト、デバッグなど、ローカルで実行するすべての編集機能を使用できます。
リモートホストでのターミナルセッションの開始
Secure Shell ターミナルセッションを IDE から開始して、リモートシステムまたはローカルシステムに接続できます。この機能は、ネイティブで SSH をサポートしない Windows プラットフォームの場合に特に便利です。
IDE で「ウィンドウ」>「出力」>「ターミナル」を選択すると、ローカルまたはリモートホストでターミナルセッションを開始できる「ターミナル」タブが開きます。
「新しいリモートターミナルタブを作成」ボタンをクリックして、「SSH 接続」ダイアログを開きます。
ユーザー名およびホスト名を入力して、「了解」をクリックします。
IDE によって、指定したホストへの SSH セッションが開始され、「ターミナル」タブにリモートホストのログインプロンプトが表示されます。
$HOME/.netbeans/remote ディレクトリを見るとプロジェクトファイルを確認できます。プロジェクトファイルはデフォルトで、プロジェクトが作成されたローカルシステム名およびプラットフォームを示すサブディレクトリに格納されます。
IDE の内蔵ターミナルは、通常の SSH セッションでリモートホストに行うどのような作業にも使用できます。
リモート開発のヒント
プロジェクトノードを右クリックして「リモート開発ホストを設定」を選択すると、プロジェクトの開発ホストを変更できます。
「サービス」ウィンドウでホストを右クリックして「プロパティー」を選択すると、初期設定後にリモート開発ホストのプロパティーを変更できます。
リモートホストを使用してグラフィカル UI を持つアプリケーションを構築および実行している場合、ホストプロパティーの「X11 の転送を有効化」を選択すると、リモートホストでの実行中に UI がローカルシステムで表示できるようになります。
「サービス」ウィンドウだけでなく、IDE の「ツール」メニューからでもリモートのホストおよびツールの情報にアクセスできます。「ツール」>「オプション」>「C/C++」>「構築ツール」を選択して、「開発ホスト」の一覧の横にある「編集」ボタンをクリックします。
プロジェクトファイルのファイル共有を使用する場合、パスマッピング機能を使用してローカルおよびリモートのパスを共有フォルダにマッピングできます。マッピングを設定するには、「ツール」>「オプション」>「C/C++」>「構築ツール」>「編集」を選択します。そのあと、リモートホストを選択して「パスマッパー」ボタンをクリックします。
プロジェクトの構築によってリモートでライブラリがコンパイルされる場合や、主要な構築結果以外のファイルが生成される場合、IDE はファイルをローカルシステムにダウンロードすることを確認します。変更されたファイルのうちどれをダウンロードするかを選択できます。
C/C++/Fortran サポートについての詳細情報
IDE の C/C++/Fortran 機能の使用法についての詳細は、「C/C++ の学習 」を参照してください。