リモートでプログラミングを教える際に使うツール類

プログラミングを知り合いなどに教えるときに使ってるツール類。
前提だけども、こういったツール類をすぐに使いこなせるぐらいコンピュータ、インターネットに慣れてる人であること。

リモートじゃない場合はどうやって教えてるか

直接画面を見せながらプログラムを入力して、動かして説明してる。ファイルを渡すときはUSBメモリで渡す。
つまりこれらを各種ツールを使ってインターネットごしに同様にできるようにする。

繋ぐ(場所の問題の解決)

まずは横にいる状態、つまりネットワーク的に同じ空間にいる状態を作らないと各種ツールを使うのに不便です。
グローバルIPで片方に繋がる環境があれば必要なかったりするかもしれないけど、必要であればVPNSSHなどでトンネル掘るなりして、LAN環境を作ります。

VPN

手軽に使いたいならHamachiなどのP2Pでつなげるもの、しっかりやるならOpenVPNといったところか。

SSH

主に "-L" オプションのトンネリングで使う。

画面を見せる(デモを見せる)

リモートで画面を見せたり、共有したりするためのソフトウェア。

VNC

WindowsならRealVNCあたりが簡単かも、画面を見せられれば別のVNCサーバ/クライアントでも構わないと思う。
複数クライアントからの接続許可+表示のみで入力不可にすれば、複数人に同時に画面を見せることもできる。

Gobby

リアルタイムで反映されるテキストエディタ+チャット。シンタックスハイライトが使えるのが結構うれしい。
プログラムコードを書き方(過程)を見せるのに便利。

gyazo

画面のスクリーンショットをさっと見せたいときに使う。有料アカウントじゃないと消せないのが難点。

google docs

リアルタイムで変更を共有できるので、ホワイトボードの変わりにdocsの図を使ったりすると良い感じ。

説明する(話す)

説明のためにチャットベースでやるのは時間がかかってイマイチだし、伝えにくい部分もあるので、音声は必須。インターネット経由で使える音声チャットソフトなどが該当する。
音声チャットのソフトはCPUパワーが少し必要だけど、最近のPCなら余裕ですよね。

Skype

これに関してはやっぱりSkypeが鉄板かな。

GoogleTalk

ブラウザごしで使えたりするかも。

Windows Live Messenger

Skypeが使えるなら特にこれを選ぶ必要はない気がする。

ファイルを渡す

ソースコードや各種ファイルのやりとりに使うソフトウェア。手軽に使えることが重要。

gist

ソースコードを貼りつけて共有できるサービス。シンタックスハイライトをしてくれるのが嬉しい。

Dropbox

フォルダ同期。httpで認証なしに直接アクセスできるPublicフォルダをうまく活用すると便利。

bitbucket/github/googlecode

ソースコードリポジトリの共有にリポジトリホスティングサービスを使う。

おわりに

最近は便利なツール/サービスが多くて楽になったねぇ。

6/27追記

そういえば、ここで紹介してるものは大部分がWindows/MacOSX/Linux(Ubuntu)で使えるツールです。
自分がWindowsで相手がUbuntuMacということが私の周りで結構あったので...
プログラミングに関しては、クロスプラットフォームで使えることも、いくらか気にする必要があると思ってます。