CNET Venture view

本当はデスクトップで開発したいけどノートパソコン持ち歩いて開発もしたい、という人のための環境構築

代表取締役
赤松洋介
2008年04月24日 15時57分

トラックバック

トラックバック一覧を見る(0)

ブックマーク

印刷用ページ

この記事を印刷する

開発合宿や、ちょっとカフェで開発、みたいなことをすると、どうしても「ノートパソコン」に開発環境をいれないといけません。

でも、やっぱり「デスクトップ環境」で広い画面をたっぷり使いながら開発したいんですよね・・・


で、この2日間くらい、何故かすごく悩みながらいろいろやってみました。結果はこの通り。

desktop-note.gif

結論は単純なんですが、意外に苦労したのでメモとして残しておきます。

絵を描いて説明・・・、とか思ったんですが、もう疲れ果てたのでテキストオンリーで。
砂を噛むように味気ない文章なんですが、よろしければ参考までにどうぞ。


■やりたいこと

外ではノートで、会社では デスクトップPC で「シームレス」に開発したい!


■基本ルール

それ Mac 使えばできるよ・・・というのは無し。Let's Note 最強。


■ベースとなる開発環境

ノートパソコンに vmware player + CentOS をいれて、ノートパソコン単体では開発できるようにしてある。
つまり、ノートパソコンが開発用サーバー。


■会社にあるPC

Mac mini も含めて、4台全部使って開発したい。検証も楽々。


■とにかく

・どこのネットワークにつないでもすぐ開発できる。
・ネットワーク上のどの PC のブラウザからでも開発中の画面が確認できる。
・ネットワーク上のどの PC からでも開発中のコードを参照・編集できる。
・公衆無線LANなどではセキュリティにも配慮したい


■ということで、要は

A. 開発環境の Web サーバーに外部からアクセスできるようにする
B. 開発環境のファイルシステムを外部から参照・編集できるようにする

ということだけなんですよね。


■VMWare の NAT 環境で実現してみよう!

安全だし手軽ですからね。ゲストOSをNAT環境で運営する方法。で、これは嵌りまくって断念。
特に B. の「ファイルシステム」ですね。

開発環境の CentOS には Samba を入れてあるのですが、これを生かす場合は NAT の「ポート転送」を設定しないといけない。
137~139番ポートの転送は簡単なのですが、445番ポートの転送が非常に厳しい。
Windows では DHCP クライアントを落としたくないので、別途 IP アドレスを確保して云々・・・
参考:仙石浩明の日記: Windows「ファイルとフォルダの共有」をリモートな Windows VISTA マシンからアクセスする方法 (1)

で、もう一つ思いついたのが、ゲストOSでNFSサーバーを動かして外部からmountする方法。
Windows からの mount は Windows Services for UNIX などを使うことで簡単に実現できます。
問題はまたしてもポート転送。Windows が 111 番の portmapper を握っているので、結局 NAT の中にいるゲストOSのNFSサーバーを外部から mount するのは難しい、と。

その他、ssh でトンネル掘ってファイルを共有、とか考えたのですが、そこまでする必要はないだろう、と。。

そんなわけで、残る選択肢は「ブリッジ接続」になります。


■ブリッジ接続で環境構築してみよう!

ブリッジ接続を使う場合、ゲストOS は DHCP で IPアドレスを取得するようにしたいので、ゲストOS の IPアドレスが何になるかわからない、という問題があります。

これを Samba と hosts ファイルと apache プロクシで解決します。
順を追って説明しますね。


■ブリッジ接続:ゲストOSのネットワークは DHCP にする

どんな環境でも動作するように、ホストOSはもちろん、ゲストOSもDHCPが基本になると思います。

これは /etc/sysconfig/network-scripts/ifcfg-eth0 に

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

のように記述すればいいだけですね。

この段階で、vmware 上のゲストOSはブリッジ接続でもNAT 環境でも動作するようになります。
セキュリティの設定に悩むより、公衆無線LAN環境などでは、さくっとNATに切り替えて運用するのがいいでしょう。
※vmware のメニューから NAT に変更し、ゲストOSで /etc/rc.d/init.d/network restart とすれば切り替え完了です。


■ブリッジ接続:ゲストOS のWebサーバーにアクセスできるドメイン名を割り当てる

DHCP でブリッジ接続を行ったら、ファイルエクスプローラーなどで「\\(ゲストOSのホスト名)」で、ネットワーク上のどの*Windows*PCからでも共有ファイルが閲覧できる状態になっていると思います。

※閲覧できない場合は Samba の設定がまずい可能性が高いです。

さて、ここで、開発をしている人なら、例えば「trackfeed.local」など、テスト用のドメイン名を使ってゲストOSのWebサーバーにアクセスしたいと思うはず。。

すると、trackfeed.local という仮想ドメイン名を ゲストOS の(動的に割り当てられた) IPアドレスに変換する必要があります。

そこで、ホストOS のhosts ファイルを利用します。
ゲストOSのホスト名が guest だとすると、ノートパソコンの C:\Windows\system32drivers\etc\hosts に以下のように追加します。

guest trackfeed.local
guest feedmeter.local
...


ポイントは「IP アドレスで指定しない」点です。
※2008/5/12 訂正 : IPアドレスでないと駄目なようです。すいません、間違いでした。たまたまDNSサーバーに登録していたのでうまく動作していたようです。申し訳ありません。...
これにより、このホスト OS に聞けば、「trackfeed.local」というドメイン名の名前解決が行えるようになります。


■ブリッジ接続:テスト環境のURLにどのマシンからでもアクセスできるようにする

上記のhostsファイルへの追記をすべてのパソコンで実施・・・なんてやりたくないです。

ということで、ホストOS (Windows) に proxy サーバーを立てます。

apache サーバーを入れて ポート 8080 などで運用してみます。

httpd.conf をちょっと書き換えます。

Port 8080
LoadModule proxy_module modules/mod_proxy.so
AddModule mod_proxy.c
<IfModule mod_proxy.c>
 ProxyRequests On
 <Directory proxy:*>
  Order deny,allow
  allow from all
 </Directory>
 CacheSize 0
</IfModule>

こんな感じですかね。

そして、プロクシ設定用の .pac ファイルを用意します。

function FindProxyForURL(url, host) {
  if ( dnsDomainIs(host, ".local" ) )
    return "PROXY your-note-pc-name:8080";
  else
    return "DIRECT";
}

ドメイン名が「.local」の場合は、your-note-pc-name の 8080 番をプロクシとして使う、という設定ですね。
これを適当なファイル名で Web からアクセスできる場所に保存します。

そして、IE, Firefox, Safari などのプロクシ設定で、この .pac ファイルを使うように指定します。

すると、それらのブラウザから「trackfeed.local」などにアクセスできるようになります。

.pac ファイルを使うとその場で名前解決は行われず、pacファイルのルールに従ってノートパソコンのホストOSにアクセスし、そこでプロクシが動作し、そのプロクシは hosts ファイルによりゲストOSのIPアドレスを特定し、ゲストOSのWebサーバーにアクセスできるようになる、という仕組みですね。

IP が動的に変更されても、NAT・ブリッジ環境問わず大丈夫!

なお、上記 .pac ファイルの「your-note-pc-name」はノートパソコンのホストOSの名前ですので、mac の場合は IP アドレスを指定する必要があるかと思います。

あと、Windows ファイアウォールでホストOSのポート 8080 番を空けておくのをお忘れなく。


■あとは Synergy でもいれて

あとは Synergy でもいれておけば、マウスとキーボード一つですべてのパソコンから操作できます。

開発マシンから、ゲストOSのファイルシステムをファイル共有しておけば、さくさく開発できて、その場でブラウザから検証も可能になります。


ふとカフェに行きたくなったり、明日から開発合宿に、という場合でもノートパソコンだけ持ち歩けば「画面が小さくなった」くらいの制約しかありません。

再び会社に戻ってきたら、会社のネットワークにつないで、今度はデスクトップでそのまま開発続行、と。


ということで、まぁ、ブリッジ接続すばらしー、というだけの結論なのですが、最近主流のノートパソコン開発といえど、やっぱりデスクトップや大画面で開発したい人も多いはず、、で、参考までにメモとして。。。

#もはやここまでして Windows 使う必要があるのか・・・Mac でいいんじゃないかw

#途中から相当疲れてきたので、メモとしても雑な内容ですいません・・・


トラックバック

この記事に対するトラックバックはまだありません

この記事に対するTrackBackのURL:

プロフィール

サイボウズ在籍中に、通常のHTMLで構築されたウェブサイトのRSS化を実現するサービス「MyRSS.jp」を始めた赤松洋介氏。最初は、サイトの更新情報を自ら確認するのが面倒だという理由で、自分のために趣味で立ち上げたサービスだった。このサービスを一般公開したのが2004年1月で、その後赤松氏は2005年7月末にサイボウズを退社、8月1日にはMyRSS.jpをはじめとするRSS関連のサービスを提供する企業としてサイドフィードを設立した。

バックナンバー

記事・企業検索

 

 すべて  企業情報のみ