!!! プロジェクト名 Simpleグループチャット! 「 Wine 」 !!! プロジェクト説明 *ユーザー同士で輪をつないでLINEのようなトークルーム型チャットをしよう **シンプルなログイン方式 **複数人数に対応したトークルーム機能 **見やすくて使いやすいレイアウト !!!プログラムの流れ 今回のグループチャット「Wine」ではユーザー同士を輪のようにつないで通信をして、チャットを行う。そのため、輪の中にいる人数がチャットルーム内の人数となる。 *まず、輪を作る。(チャットルーム作成) **1人で作る方法 → 実行コマンドのみ(./wine) **2人で作る方法 → 実行コマンドにチャットをしたい人同士に相手のホストネームかIPアドレスを引数として渡してプログラム実行(以下から、相手を指定してプログラムを実行するという) ***(例 ./wine esutXXXX または ./wine xxx.xxx.xxx.xxx) **3人以上で作る方法 → 同様に相手を指定してプログラムを実行するが、但し、指定する相手はつぎつぎと繋いで、最終的には輪の形を作る必要がある。 ***(例 ホストネーム esut0001, esut0002, esut0003の3台でチャットを行う場合) ****esut0001 → ./wine esut0002 で実行 ****esut0002 → ./wine esut0003 で実行 ****esut0003 → ./wine esut0001 で実行  <<{通信.png} >> なので、一番簡単な使い方は、誰か一人で輪を作り、次々とすの輪に入ればオッケー! << *輪に参加する(ルームに入る):途中に抜けるとか途中参加に対応 **輪に入ってるメンバーの中で誰か一人を指定して(ホストネームかIPアドレスを引数で渡して)プログラムを実行する。 *チャット内でのハンドルネームを入力しログイン *グループチャットを行う !!!ダウンロード&インストール *インストールしたいフォルダに移動して、以下のコマンドを打ちます。 8< $ svn co https://svn.cis.iwate-u.ac.jp/svn/csd/15/g10/proj/shin/ $ cd shin/ $ make >8 !!! モジュール分けとヘッダファイル *http://wiki.cis.iwate-u.ac.jp/~wiki/csd/group.cgi/2015/?p=15%3A%3Agr10%3A%3A%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%28%E6%9C%80%E7%B5%82%29{ログインウィンドウ}(沢田) *http://wiki.cis.iwate-u.ac.jp/~wiki/csd/group.cgi/2015/?p=15%3A%3Agr10%3A%3A%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%28%E6%9C%80%E7%B5%82%29{チャットウィンドウ}(平井) *http://wiki.cis.iwate-u.ac.jp/~wiki/csd/group.cgi/2015/?p=15%3A%3Agr10%3A%3A%E9%80%9A%E4%BF%A1%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB{通信モジュール}(辛) !!!動作スクリーンショット !!ログインウィンドウ <<{login.png}
!!チャットウィンドウ <<{chat.png} !!!個個人の感想 !!桃井秋義 !!沢田祐介  ログインウィンドウのボタンやエントリウィジットの設置については簡単に行えたが、入力した文字を次のウィンドウにどう渡したらいいか結構悩んでしまった。また, 次のウィンドウに移動するときに前のウィンドウが消えず手こずってしまったが最終的には完成できたのでよかった。作りたいと思う機能はたくさん思いついたが、それをどのようにすれば実現できるのかが思いつかず難しいと思った。自分が作ったプログラムが目に見えて結果となるので楽しかった。授業の中盤あたりでは本当にチャットのプログラムができるのか心配であったが、最低限のチャットはできたのが何より良かった。チャットの要になる通信を担当した辛さんには感謝です。 !!平井諒  チャットウィンドウはモジュール分けの段階で、通信部分とのやり取りについて明確に確認できていなかった。通信モジュールがどのような処理をするのか予想が難しく、半ば見切り発車な部分があり、どのようにメッセージをやり取りするかが本当に苦労した。他にも様々な問題に直面して、その度に頭を悩ませることになったが、ひとつずつ自分で調べ、解決していくのも苦ではなかったし、最終的に作りたいものが作れてよかったと思う。実際に形になる部分だったので、それがモチベーションにつながり、楽しく取り組むことができた。 !!辛承勳 段階できに通信機能をupgradeしていく過程がたのしかったです。最初はターミナルで文字1つだけを送信できるように、 次は文字列1つ、あとは複数の文字列のやりとり、そしてGTKと融合させた通信モデル、二人だけのチャットから、初期設定が必要だがリング型の連結を設定してその上でデータを循環させて3人以上の複数人数のチャット(これで輪INEという名前にしました)、そして、最後には自動的に連結させたり、切ったり、途中抜けたり、途中参加もできる、より使いやすい通信モジュールをつくることが出来ました。やっぱり、モジュール分けが大事だっていうのはある程度先輩もゆってたし、予想はしてたんですが、そもそもこうやってグループで作った経験がなかったので、他の人のプログラムと合体させるのが難しかったです。最初はちゃんとライブラリー化して、Makefileもちゃんと整えて作っていくつもりだったんですが、途中から勝手に他の人のプログラムを変えたり、グローバル変数を宣言して、あっちこっちで使ったり、Makefileさえみても、完成したプログラムはただObjectファイルをくっつけて作ったプログラムだというのがわかります。 あとは、個人的に苦労したのは、決まったサーバがないんで、3人以上のチャットの時どうやって繋げてメッセージを転送するかが結構苦労したし、そして、最後に自動的に輪を作ってくれる通信モデルを作るには、一人でテストができなくてみんなのたすけをもらい完成させることができました。完璧ではないがある程度チャットができるプログラムを完成させることができて、嬉しいです。