はじめに
初めまして!
AIQVE ONE Advent Calender 17日目を担当します@umi_nと申します。
この記事では、社内コンペとして開催された「自動化コンテスト」に、
プログラミング歴半年だった筆者と未経験者2人の、3人組で参加した際に感じたことを振り返っていきたいと思います。
自動化コンテストの内容についてはこちら!
作成を始めるにあたって
思ったより簡単に決まった題材
まず始めに行ったことは「何を自動化するか」でした。
今回の自動化コンテストのテーマは「”面白い”自動化」。何をもって”面白い”なのか、使用するアプリ・ゲームは何にするのか。
ある程度決めるまで時間がかかるだろうと思っていましたが、何個か候補が上がった後あっさりと、
「麻雀ゲームで、カスタマイズが可能なCOMとして使用できる自動化スクリプトを作成し、メンバー3人+1COMで4人麻雀をする」
という内容に決まりました。
ところが、ここからが大変だったのです……。
スキルもバラバラ!全然進まない作業!
「よし、題材も決まったし、さっそく作業に進もう!」
と勢いよくスタートを切ろうとしたもののすぐに問題発生。
メンバーはプログラミング歴半年と未経験者という構成の為、ディープラーニング等の技術を使用するのは困難。
また、コンテストの提出期限も短い為、学習をしてから作成を行うというのも不可能でした。
その後も、メンバーとどう作成をしていくか協議をしたものの作業は進まず、時間だけが過ぎていきました……。
経験者が主導しなければならない
ここまでは、明確なリーダーがいるわけではなく、メンバーは対等という形でした。
しかし、時間だけが過ぎていくうえで、誰かが明確に主導しなければ作業が進まないという事に、この段階でようやく気付きました。
そして、それは半年ながらもプログラミング経験があった、自分がしなければいけなかったのです。
チームのリーダーとして
具体的な内容を決める
リーダーとして、まず行わなければいけなかったのは、作成するスクリプトの具体的な内容を決めることでした。
「麻雀ゲームで、カスタマイズが可能なCOMとして使用できる自動化スクリプトを作成し、メンバー3人+1COMで4人麻雀をする」
という題材こそ決まっていましたが、「カスタマイズが可能なCOM」の部分の具体的な内容が決まっていなかったのです。
そこで、チーム全体のスキルが高くないことを踏まえて、以下の内容を決めました。
- 「河は見ずに、自身の手牌のみを見て切る牌を判断する」
- 「牌それぞれに評価値を与え、切る牌の優先順位を決める」
- 「鳴きをするかしないかのカスタマイズのみ可能」
たった3点だけのシンプルなものでしたが、具体的な内容を決めた事により、
何をしなければいけないのかがはっきりと分かるようになりました。
役割を決める
次に行ったことは、役割を決めることでした。
時間を浪費してしまったこともあり、メンバーの未経験者2人にコードを実際に書いてもらうのは、困難な状態でした。
そこで、メンバーそれぞれの、現状のスキルで出来ることを確認し、以下のように役割分担を行い作業を進めることになりました。
- 筆者
- 各作業の進捗を確認する・コードの作成を行う
- A氏
- 牌の種類ごとに評価値を決め、切る牌の優先順位を決める・発表用のフローチャートを作成する
- B氏
- ゲーム内の手牌を牌ごとに画像を切り出す・発表用のパワーポイントを作成する
これにより、メンバーそれぞれが行う作業が理解できるようになりました。
そして完成へ
その後は大きなトラブルも無く、それぞれ進捗を共有しつつ順調に作業を進めることが出来、
締め切り前日というギリギリでの提出ではありますが、無事に完成し提出をすることが出来ました。
最後に
コンテストの結果としては3位という結果でしたが、
それ以上に、プログラミング歴半年の間では経験することがなかった、
「リーダーとしてチームの主導をしながら成果物を作成する」
という得難い経験をすることが出来、コンテストに参加することが出来て良かったなと思いました。
来年も同様に、自動化コンテストを行うかもしれないとの事なので、
その際には、再度同じメンバーで参加してみようかなと思います。