【しずおかアプリ部】活動ログ　第28回

![しずおかアプリ部2.jpg](https://qiita-image-store.s3.amazonaws.com/0/88105/ee800648-fa25-1829-20c3-bad9c2055d35.jpeg)


##■タイトル##
第２８回


##■開催日##
２０１６年１１月５日（土）　１６：００～１８：００


##■参加者##
１７名


##■活動内容（概要）##
・部員さんプレゼン「Gitでバージョン管理（ログ・リバート・リセット）」
・部員さんプレゼン「迷路生成アルゴリズムと迷路解読アルゴリズム」
・菅原プレゼン「Unityはじめるよ　～NavMesh応用～」
・雑談


##■活動内容（詳細）##

【実演・プレゼン】


**・部員さんプレゼン「Gitでバージョン管理（ログ・リバート・リセット）」**

　今回紹介したのは以下の４つ。

　　ログの閲覧 (log)
　　　ファイルに対するコミット履歴を一覧表示します。

　　ファイルの注記 (blame)
　　　各行のコードがどのコミットで変更されたのかを表示します。

　　コミットの打ち消し (revert)
　　　あるコミットの変更を無かったことにします。 
　　　逆の変更を行うコミットにより、打ち消します。

　　過去の変更のリセット (reset) 
　　　任意のコミットの状態に行単位で戻します。 
　　　元に戻しても自動コミットされないため、コミットし直す必要 があります。　

　■補足
　　直前のコミットの修正(amend)との違い
　　　直前のコミットを修正すると、歴史が変わります。 
　　　これは複数人で運用している場合に注意です。 
　　　既に公開した過去のコミットを変えてしまうと、
　　　他の人の状態と不整合が起きてし まいます。

　　打ち消しの使い道 
　　　上記の通り、複数人で運用している場合は
　　　歴史は変えてはいけません。
　　　もし、間違えたコミットを公開してしまった場合は、
　　　そのコミットをまるごと取り消す コミットすることで、
　　　歴史を変えずに間違えたコミットを無かったことにします。

　　資料：[第28回_プレゼン資料(Gitでバージョン管理～リバート編～).pdf](http://monolizm.com/sab/pdf/第28回_プレゼン資料(Gitでバージョン管理～リバート編～).pdf)
　　プロジェクト一式：[GitWorld20161105.zip](http://monolizm.com/sab/src/GitWorld20161105.zip)

![写真 2016-11-05 16 17 10.jpg](https://qiita-image-store.s3.amazonaws.com/0/88105/e471a625-daed-b3ad-ed38-6cde2f60932f.jpeg)


<hr>
　
**　・部員さんプレゼン「迷路生成アルゴリズムと迷路解読アルゴリズム」**

　迷路生成アルゴリズムと迷路解読アルゴリズムを紹介
![写真 2016-11-05 16 54 52.jpg](https://qiita-image-store.s3.amazonaws.com/0/88105/5565a26c-47a3-a8a8-88ad-f371c1f74b82.jpeg)

　　迷路生成の代表的なアルゴリズムは３つ
　　　棒倒し法
　　　壁伸ばし方
　　　穴掘り法

　　　今回は比較的簡単な棒倒し法を実装。
　　　シンプルなアルゴリズムだがちゃんと迷路が生成された。
　　　ただ、左上をスタート、右上をゴールとして設定すると簡単にクリアできるパターンが生まれやすい。

　　迷路解読の代表的なアルゴリズムは３つ
　　　右手法（左手法）
　　　トレモー・アルゴリズム
　　　オーア・アルゴリズム

　　　今回は比較的簡単かつ有名な右手法で実装。
　　　右側の壁に手をついて、ひたすら壁沿いに進むとい方法。
　　　シンプルなアルゴリズムな分、実装は比較的簡単だが、探索速度が遅いというデメリットもある。

　　資料：[第28回_プレゼン資料(迷路の生成と解法アルゴリズム).pdf](http://monolizm.com/sab/pdf/第28回_プレゼン資料(迷路の生成と解法アルゴリズム).pdf)

![写真 2016-11-05 16 54 41.jpg](https://qiita-image-store.s3.amazonaws.com/0/88105/969596ec-9a60-c344-c43d-84d3c87c4f7c.jpeg)

<hr>
　　　　


**・菅原プレゼン「Unityはじめるよ　～NavMesh応用～」**

　簡単にNPCが作れるNavMeshの応用編。
　今回は、NavMeshだけでは移動不可能な段差や隙間を超えるためのOffMeshLinkと、
　動く障害物NavMeshObstacleの紹介。

![写真 2016-11-05 17 14 06.jpg](https://qiita-image-store.s3.amazonaws.com/0/88105/af93007c-11c7-5869-7d53-03f2e35dc0fe.jpeg)

　　OffMeshLink
　　　手動で作る方法
　　　　　移動元と移動先のGameObjectを用意して、OffMeshLinkコンポーネントを追加するだけ。
　　　自動で作る方法
　　　　Bakeの設定の、DropHeightとJumpDistanceを設定するだけ。
　　　　　※自動で作る方法はなぜかうまくいかず・・・次回までの宿題

　　　ただし、OffMeshLinkは移動が不自然という問題がある。
　　　※スクリプトで解決可能。

　　NavMeshObstacle
　　　動く障害物にNavMeshObstacleコンポーネントを追加して、適切な設定をする。
　　　車のように常に動くものと、外的要因があって初めて動く木箱のようなものでは設定方法が違うので注意。

　移動コストについて
　　移動可能範囲のエリアごとにコストを設定可能。
　　　Agentは　コスト×移動距離　の少ないルートを選択する。


　　資料：[第28回_プレゼン資料(Unityはじめるよ～NavMesh応用～).pdf](http://monolizm.com/sab/pdf/第28回_プレゼン資料(Unityはじめるよ～NavMesh応用～).pdf)
　　プロジェクト一式：[NavMeshTest(応用編)完成版.zip](http://monolizm.com/sab/src/NavMeshTest(応用編)完成版.zip)

![写真 2016-11-05 17 13 57.jpg](https://qiita-image-store.s3.amazonaws.com/0/88105/ce242f76-66f1-e968-e816-88dd2df43c3f.jpeg)

<hr>
　
**・雑談**　　　　

Qiitaのイベントの紹介
　「Advent Calendar」とは、プログラミングに関する記事を12/1から12/25まで毎日みんなで投稿するイベントです。
[http://qiita.com/advent-calendar/2016](http://qiita.com/advent-calendar/2016)

LAC「すごうで2017」
　ITを使って世の中を便利にしたい、自分を成長させたいと願う若い皆さんの夢の実現をお手伝いしてくれるイベント。
　最高100万円まで支援してくれる。
[http://www.lac.co.jp/lp/sugoude2017.html](http://www.lac.co.jp/lp/sugoude2017.html)