ガンズターン 公式サイト

楽しいことに、まじめです。 ——ガンズターンアプリ研究所公式サイト

アプリ1つ作るのに、たった一人でやらなきゃならなかったことリスト(ぱずもぐ備忘録1回目)

Pocket

0. 意外と多い、アプリのためにやったこと色々

こんにちは。ガンズターンのRyosukeです。
昨日の記事で書いた通り、今日から「ぱずもぐ!」の製作にあたって初めてやったことがら&忘れたくないものごと等を備忘録として記事にまとめていきたいと思います。

文章量がかなり多くなる(予定)ので、ひょっとしたら1日に何度も記事を投稿するとか、そういうこともあり得るかと思います。
(一応、記事投稿のたびにTwitterにはつぶやくつもりです。)

まあ、気長におつきあい頂けると幸いです。

さて。
備忘録企画第一回目のこの記事では、ひとまず一人でやらなきゃならなかったことの総括をしたいかと思います。
その後、特に忘れたくないことの多かった工程1つ1つに絞って具体的な記事を書いていきたいかな、と。

……と思って、ざっとやったことを書き出してみたのですが、いやまあ、思い出せば出すほど色々出てくる……。

死ぬほど細かい話(今回の開発にだけ必要だったような知識や工程)もあるかと思いますが、できるだけ事細かに記していこうと思います。

あと大事なのは、具体的にどの工程にどれぐらいの日数がかかったか。
毎日詳細なログを取っていたわけではないのですが、ざっと体感で、3ヶ月(実働70人日ぐらい)のうちどの工程にどれだけ割いていたかを、忘れないうちに書き記しておきたいと思います。

なぜかといえば、それは自分の現在の力量を少しでも客観的な形で残しておきたいからです。
(自分で測っている時点で主観的なことは否めませんが、こうして文章に残しておくことでわずかでも客観性を得られるかなと)

本来はもっと他にやるべきこと、勉強すべきことがたくさんあるのでは、なんてついつい考えてしまいますが……。
新たな知識を身につける前に今知っていることを忘れてしまったのではまったく意味がないので、ちょっとだけ気合を入れて書いてみようと思います。

もくじ 1/4(全部で4ページあります。長っ! 笑)

1. ゲーム全体のデザイン

(1) 工程:約5人日(2+3)

基本コンセプトの策定で、2人日。
その後、モックの作成途中に基本デザインに欠陥があることがわかり、大幅な軌道修正をしました。
そのため追加で3人日。

ぜんぶ合わせて5人日程度の時間を使用してしまいました。
今回は自分がこれまで自作してきた中でもとりわけ規模の大きなゲームでしたので、妥当な時間かと思っています。
ただし今後は、もっと規模の小さなゲームをなるべく多く作っていきたいとも思っているので、できればこの工程を2〜3人日まで縮めていきたいですね。

(2) なにをしたか

ゲームの基本コンセプトをこの時点で策定しました。具体的には以下の通りです。

「ゲーム内でのユーザの目的を決める」:パズルを解く。
「デザインのコンセプトを決める」:もぐらたたき風にする。
「ターゲットとするユーザ」:パズルを解くのが好きな、12歳以降の人全般。
「ゲーム作成を通じて自分が得たいもの」:1万人のユーザ。

……1万人のユーザはちょっと欲張り過ぎかと思いますが、まあ目標は高く持とうというわけで。
1万ユーザは無理でも1万ダウンロードまではせめてなんとかしたいと今は思っています。
(みなさん、「こいつめ、大きくでたな」、とお思いでしょう。しかしアプリで飯を食っていくには実際のところ1万ダウンロードされてもぜんぜん足りないぐらいです。。。)

その他、基本的なルールと画面遷移もこの時合わせて考えました。
(画面遷移のデザインには、こちらの記事で紹介しているペーパープロトタイピング手法を使用しています)

(3) 苦労したこと

この時は、本当にまだ何も知らない状態(使える知識は「Objective-C」と「OpenGL」のみ)でした。

なので「こういう機能を作るのにはこういう知識が必要」みたいな感覚がまったくなかった状態ともいえます。

曲がりなりに8年間はIT業界でプロとして働いていたので、妙な自信があったことは否めません。

なんの根拠もなく「自分なら一週間ぐらいでひとまず動くレベルまで持っていけるだろう」なんて本気で思っていたのですから、おバカさんもいいところですね。

結果的に、当初のデザインで盛り込もうと考えていた機能は、半分近く削ぎ落とすことになりました。そしてそれでも「一週間」のつもりが「3ヶ月」もかかってしまったという体たらく……。

次に作るアプリでは、もうちょっと現実的な設計をできるはず……!
……ですが、何事も実際に手を動かしてみなければ確かなことはいえないというのは本当にその通りですね。

自分の場合は自己都合で締切をいくらでもずらせますが、世のプログラマの皆さんはこういう状況で締切に合わせてきっちり納品できるのですから、素直にすんげー、と思います。

2. どの情報をサーバに持たせるか(DBおよびAPI設計)

(1) 工程:約3人日

一番最初にDB(データベース)設計、API設計を終えた時は、どちらも合わせて1日で終わりました。
けれど、モックを作っていく最中にどんどん「あれも必要じゃん! これも必要じゃん!」と追加要素が発生しまくり、結果、トータル3人日かかりました……。

(2) なにをしたか

サーバ側のDB設計と、クライアント(iPhone端末)との通信に用いるAPI設計をしました。
どちらも、生まれて初めて、きちんと自分の手でやってみたことがらです。
具体的にやったことをまとめると以下の通り。

  • 設計書の雛形づくり(かなり簡易的なメモ程度のもの。Excelで作りました)
  • DBに収めるべき値とクライアントで完結すべき値の取捨選択
  • 各データの属性値決定(文字列で保持すべき値、整数で保持すべき値など……)
  • 各データをクライアントと通信するためのAPI設計(リクエスト値と、返却値)

(3) 苦労したこと

一度「ここはこのインターフェイスで十分だろう」と見切りをつけた機能に限って、後から後から追加仕様が判明してドキュメントも訂正しまくったのはなかなかこたえました。
組織で働いていた時はこういう「ドキュメントの訂正」が仕事の半分を占めていたので、なんだか独立前に逆戻りしたかのような心境に。
とはいえ、今は設計だけでなく実装も1から10まで全て自分でしているので、「実際に実装してみたら無理な設計だった」なんて際にも誰にも文句を言われることなく好き勝手に修正できたのはなんだか楽しくも感じました。

とりあえず、設計書の雛形はもうちょっと見やすくて修正にも手のかからないものに変えていこうと思います。(時間とやる気のある時に。笑)

3. とりあえず動くモックの作成(Xcode & Objective-C)

(1) 工程:約10人日

取り掛かった瞬間は「今日1日で終えるぞ!」と気合十分でしたが、途中でどんどん自作のライブラリに機能追加したくなって、結果10人日(実質まるまる2週間)もかかってしまいました。
しかしおかげで、ゲーム作りに必要な機能をたくさん自作ライブラリに詰め込むことができたので、次回からはもう少し短縮できそうです。(最終目標は1人日)

(2) なにをしたか

「1. ゲーム全体のデザイン」で設計した画面設計をもとに、ひとまずゲーム全体の流れを俯瞰できる骨組み状態のアプリを作りました。
IT業界では、こういう風に「骨組み」だけで「中身のない」状態のものを「モック」と呼んだりします。
本来的な意味では「モック」=「下位モジュール スタブの一種」(wikipediaより)らしいですが、わたしはアプリの動作を模擬的に網羅している「プログラム群全体」のことをそう呼んでいます。

この時点で作成したモックでは、以下の部分を実装しました。

  • 単一のステージ情報を静的に読み込む
  • パズルを解く部分のロジックはきちんと実装
  • 画像の表示や音楽を鳴らす仕組みを作っておき、素材は今あるもので代用(とりあえず「りずもぐ」のやつを使いました)
  • 各画面の連絡経路だけは確保(具体的にはリンクするボタンの配置)
    →見栄えの微調整は後回し
  • 自作ライブラリのリファクタリング及び機能追加

(3) 苦労したこと

とにかく「自作ライブラリ」が使いづらくて大変でした。
この使い物にならない「自作ライブラリ」、実は「りずもぐ!」作成時点で作ったものだったんですが、安易に流用したのがそもそもの苦労の始まり。
「テキスト表示」や「アニメーションの管理」が1つも実装されていないゲーム作成ライブラリなんて聞いたことありませんが、実際のところそんな感じでした。
(実を言うと「りずもぐ」では、UI以外の文字はすべて「画像」であり、他のスプライトとなんら変わらない扱いでした)

今回の開発において、このライブラリに以下の機能を実装してます。

  • 任意のフォント、サイズ、色、縁取り付きで、文字列を好きな場所に表示できるオブジェクト
  • アニメーションを管理するための各オブジェクト(位置移動、色変化、透明度変化、サイズ変化など)
  • イージング計算用関数の実装
  • 画面スクロールの機能(ただし作るだけ作って「ぱずもぐ」では使いませんでした。泣)

ちなみにこのライブラリの愛称は「麦茶ライブラリ(接頭辞は MG_)」です。
「Cocoa」とか「Java」とか「Coffee Script」とかがあるのに「麦茶」がないのはおかしい、という思いから名付けました。
いずれAndroidにも対応させて、目指せ「ポストCocos2d-x」……なんてことは毛頭思っておりませんので悪しからず。(今のところは。笑)

いずれ「OpenGLにおける文字列表示の難しさ」についてもブログ記事で触れたいと思いますが、しばらく先になりそうです……。

むむむ。ここまででかなり長くなってきましたね。
ちょっと小休止をはさみまして、続きは次のページからにしたいと思います。
(この記事、まだまだ続きます。汗)

Pocket

ページ: 1 2 3 4

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバックURL: http://gunsturn.com/2015/07/01/puzzmog_devlog_1/trackback/