創造的プログラミング

提供:Shohei Yokoyama
>>Top
移動: 案内, 検索

目次

このページについて

創造的プログラミング(2012年度前期)の講義資料です。この講義では、microsoftのkinectを使って何か面白い事をしようというのが課題です。普通の大学でのプログラミングの演習と異なり、教員が何かを教えるスタイルではなく、学生が自らネットなどから、参考となる情報やソースコードを検索して、自ら創造的なコードを書くことを目標としています。このページには、その参考情報を探す際の手がかりとなる、リンクや情報を少々載せますので、参考にしてください。


お題

何を作るかは自由ですが、まったく好き勝手作ると、混沌としてしまいますので、以下の制約を設けます。

  • Microsoft Visual C#でコーディングする。
    • たぶんこれまでに講義や演習で触った事が無いと思いますので、これを選びました
  • The Kinect for Windows SDKを使う
    • オープンソースなOpenNIというSDKもありますが、そっちは個人の楽しみにとっておきましょう
  • 二台以上のマシンを通信させるようなアプリケーションを作る
    • やっぱ繋がってなきゃね
  • 通信のプロトコルはWebSocketとし、Webブラウザからアプリケーションを扱えるようにする
    • WebSocketは最新の通信プロトコルの一つで、今後Webブラウザと非Webの世界を結ぶ重要な架け橋になる事が期待できます。

インストール&事前準備の参考情報

Visual C# 2010 express

The Kinect for Windows SDK

  • http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx
  • Step 1: Set-up Kinect for Windows SDKをダウンロード
  • Step 2: Set-up Kinect for Windows Developer Toolkitの方も今後の参考になるかもしれない
  • Visual C#でのdllのリンクの仕方
    • 参照設定にすでにMicrosoft.Kinectがあり、ビックリマークが付いている場合は一度削除してください。
    • ソリューションエクスプローラー参照設定を右クリックし参照の追加
    • 出てきたウィンドウの.NETタブをクリックし、
    • 一覧からMictosoft.Kinectを選択してOKを押す。

msysgit

gitとはソースコードのバージョン管理ツールですが、githubなどにあるコードを単にダウンロードする目的でも使えます。サンプルコードのダウンロードに使いますのでインストールしておいてください。

github

githubとはソーシャルコーディングサイトで、みんなでわいわいコーディングするのに適しています。とりあえずアカウントを作っておきましょう。(ソースコードをダウンロードするだけでは、アカウントを作る必要はありませんが、せっかくなんで、今回の講義で作るプログラムはここにオープンソースとして上げておきましょう~)

  • https://github.com/
  • Signupをクリックして、Free for open sourceをクリックで無料アカウントを作れます。
  • オープンじゃない秘密のプログラムを作るには有料アカウントである必要がありますが、オープンソースなら無料です。
  • 手元のmsysgitからgithubにアクセスするためには、公開鍵による認証が必要となります。それにはここ↓らへんの情報が参考になります。

Git GUIで公開鍵(public key)を生成する方法

WebSocket4Net

WebSocketクライアントを作るためのライブラリです。本来ならkinectの付いたマシンがサーバ、もう一台がクライアントとなるのが自然ですが、IPが実装・デバッグの場所場所で変わってしまうのは不便ですので、WebSocketのデータを中継するサーバをこちらで準備します。よってそのサーバを介して、複数台のマシンがデータを送受信するような通信形態となります。サーバへの接続のしかたやデータの通信方法などは準備ができ次第、このページでアナウンスします。

  • http://websocket4net.codeplex.com/
  • ダウンロードはこちら⇒ http://websocket4net.codeplex.com/releases/view/86111
  • Binariesをクリック。(Sourceをダウンロードして、自分でコンパイルしても良い)
  • そのzipのなかのnet40フォルダにあるWebSocket4Net.dllを、取り出してどこかに置く。
  • プログラムから使うには、Visual C#のソリューションエクスプローラーにある参照設定を右クリック、参照の追加をクリックし、出てきたウィンドウの参照タブをクリック。そうするとリンクしたいDLLファイルを選ぶ画面になるので、先ほどZIPから取り出したDLLを指定する。
さあ。これで、だいたい準備が整いました。

サンプルプログラムを使ってkinectプログラミングを始めよう

github上でソースコードを見つける

forkする

  • 単にダウンロードしても良いですが、ここはgit風にforkしてみましょう。
    • gitはソースコードのバージョン管理ツールです。gitは(他の多くのバージョン管理ツール同様)ブランチという枝分かれのバージョンが作れます。つまり、あるバージョンを元にAさんのバージョン、Bさんのバージョンというように枝分かれさせられます。この機能を使ってみましょう。
  • 右上にある「fork」というボタンを押してみましょう
  • これだけで、あなた用のサンプルプログラムのコピーが作成されました。
    • 私のコードが「abarth500/kinect-sdk-example」という名前でしたが、それがコピーされ「あなたのユーザネーム/kinect-sdk-example」という新しいページが作成されたはずです。

cloneする

  • 自分のgitのurlを確認しましょう

Github01.jpg

  • git guiを立ち上げて、ソースコードをローカルに持ってきましょう。既存のリポジトリを複製するをクリックすると、以下のウィンドウが出てきます。

Github02.png

  • ソースの位置:先ほど確認したgitのurl
  • 先ディレクトリ:適当なフォルダ(その名前のディレクトリが新規に作られ、その中にソースコードが展開されます。)
  • 複製をクリック
  • 求めに応じてパスワードを入力する
  • 以下の画面(git gui)が出てきたら成功です。

Github03.png

  • フォルダを確認してみましょう。

Github04.png

プログラミング開始!

  • kinect-sdk-example.slnをクリックするとVisual C#が開きます
  • kinectの接続を確認して、とりあえず実行してみましょう。
  • 成功すれば、kinectで認識された骨格の座標が出てきたwindowに表示されます。
  • kinectに正対して1mぐらい離れて試してみてください。
  • kinectには他にも、カメラやカメラからの距離情報が得られますし、あるいは音声認識なんかもできます。ググると、色々とチャレンジした人の成果が載っていますので、なにか想像力を膨らまて、面白いアプリケーションを作ってみてください。

commit&pullする

  • プログラムを書き換えてたらcomitしましょう。
  • 先ほどのgit guiで再スキャンをクリックすると、前回から改変されたファイルの一覧が出てきます。
  • 変更をコミット予定にいれるをクリックし、コミットする事で、新しいバージョンが保存されます。
    • 逆に過去のバージョンを復活させる事をロールバックといいます。
  • コミットしたものをgithub上に登録することをプッシュといいます。
  • プッシュボタンをクリックすると以下の画面が出てきます。

Github05.png

  • この画面のプッシュも押すと、パスワード入力画面の後、プッシュが完了
  • これでgithubを通して、あなたの新しいプログラムがオープンソースソフトウェアとして世界中に公開されました。

サンプルプログラムを使ってWebSocketでエコーサーバにつないでみる

前の章ができた人は、同じようにgithubからWebSocketクライアントサンプルプログラムをダウンロードして動かしてみましょう。

サーバは事前に準備してあります。このプログラムはそこに接続するものです。ただしプログラム中のサーバのURLは空欄になっていますのでメールでお知らせしたURLを入れてください。

創造的プログラミング(二日目)

創造的プログラミング(二日目)

創造的プログラミング(三日目)

創造的プログラミング(三日目)
個人用ツール
名前空間

変種
操作
案内
写真で綴るなにか
ツールボックス
Share