mattak's blog

人生を1ミリ進める

フリーランスになりました!

前職は主にスマホ向けのアプリ・ゲーム開発をしていました。

会社に入ったときに20代のうちに誇れるようなモノ(アプリ・サービス・ライブラリなんでもよい)を創るぞ!というのが目標でした。 20代が終了して、30代に突入したので新しいことを試していきたい!というのが今の心境です。 環境変えることで、自分を変えていこうという所です。

前職、とてもよい同僚と環境に恵まれました。 本当にありがとうございました!

f:id:mattaclj:20180316004422p:plain

働いて負けないようにばんがります

gamejam 2018/03

雑に書いていく運動

今回のテーマ

「声」

GoogleHomeで遊べるアプリを作ろうと思った。

企画

f:id:mattaclj:20180313001032p:plain

GoogleHomeで簡単な時間あてゲーム。 イメージは、10歩歩いて振り返って撃ち抜く荒野のガンマンのイメージ。

「10秒で勝負!」

...10秒後

「バン!」

でもって指定時間誤差であれば、勝利するという簡単なゲーム.

スケジュール感

3/10

  • 12:30-13:00 企画決定
  • 13:00-18:00 GoogleHome勉強&試行錯誤

3/11

  • 16:00-18:00 GoogleHome試行錯誤

作業時間7時間程度確保。 少なめなのは、歯医者とTOEICが要因。。

結果

完全に作り切ることはできなかった。 終了後にちょっと調整して一通り遊べる感じには出来上がった。

作ってみての感じた問題点

  1. 時間遅延がひどい (3-5秒くらいずれる。ゲームとして致命的)
  2. 開始タイミングがわかりづらい

1の要因

  • 音声認識時間 (発話してから認識してくれるまでの時間ずれ、GoogleHome -> DialogFlowの通信時間も含む)
  • 通信時間 (DialogFlowから用意したFirebase Cloud Functionsへの通信時間)
  • 関数実行時間 (Cloud Functionにリクエストが来てから、関数実行してレスポンスを返すまでの時間)

2の要因

  • 言葉でタイミングを伝えるというのが難しかった。
  • 例えば、「よーい、ドン! 」で開始するとする。実際には「よ」の音声再生開始から「ドン」のタイミングまでを考慮して時間を計算して引かなければならない。
  • 実際には1の要因もくわわるので、ローカルで実行完結する環境でないと難しいゲームだった.

ハマリポイント

Dialog FlowのIntentからUser saysが消えている問題

f:id:mattaclj:20180313003635p:plain

かわりにTraining phrasesのところに、入力してあげれば認識してくれた。 ぐぐるとUser saysに入力するって記述が多いので要注意

Fillfullmentでnot handled問題

Fillfullmentでイベントをフックするには、FillfullmentでWebHook用のURLの設定と、IntentでのFillfullmentセクションのトグルが必要。 さらに重要なのは、Actionのところにきちんと値を指定すること。

f:id:mattaclj:20180313004350p:plain

github.com

こんな感じでactionMapに対応するactionを指定するのだけど、対応actionが見つからないと not handledなerrorが出る。 初めintent名がactionMapのkeyと対応していると考えていたのだけど、そうでなくてハマってしまった。

tellとask

github.com

DialogFlowのレスポンス関数として、tellとaskが用意されている。 tellは会話終了. askは会話継続。tellでなんとかしようとしてハマってしまった。

感想とか

sayコマンドで実機検証するのよかった。 発話するのが恥ずかしい人にオススメ。

say "オッケーグーグル。テスト用アプリにつないで"

ただ共同作業スペースなどでやると周りの人がびっくりするので注意.

GoogleHomeおもしろい。 DialogFlowの賢さにも感心した。 「10秒で勝負」って入力するだけで、勝手に「5秒で勝負」といった数字部分の変更抜き出し対応ができるのがすごい。 あと「10秒でスタート」「10秒で勝負」といった曖昧な単語バリエーションにも反応してくれる。 ただ、擬音系が弱いようで、「バン」「パン」「バキュン」などどれが認知しやすい擬音かどうか何度も試行錯誤した。

簡単なゲームをサクッと作りたい

雑に記事を書いていこう運動

ゲームジャムなどでできるだけさくっといつもやっている作業を行えるようにしたい. 一人で作業するときはだいたい時間切れで悔しい思いをする. 大事なことに注力できる時間をさきたいと思ったので振り返り.

普段どんな作業に時間を使っているか考える

  1. 企画素案作成
  2. デザイン作成
  3. シーン配置
  4. コーディング
  5. レベルデザイン
  6. 音 / 演出

大体いつも作り終えられなかったり、遊びごたえのない完成形で終わる感じがする.

失敗から考える

  • 企画作成 1-2h
  • デザイン 4-8h
  • コーディング 2h - 12h
  • シーン配置 1-3h
  • レベルデザイン 2-10h
  • 音/演出 1-4h

何も根拠ないけど、自分の中の肌感としてはこんな感じの作業時間感覚. 8h x 2 = 16hで仕上げると考えるとかなり厳しい.

企画の部分は大体こんな感じで、あまり訓練しても変わらない感じがする. 早くてクオリティが高い人を見ていると、企画/デザインを並行で作業しつつ、デザイン自体の作業時間もかなりコンパクトな印象がある.

失敗1. デザインに時間かけすぎ

  • 特に2d系のゲームを作るときに画面イメージを頑張って作ろうとすると時間がかかる
  • アイコン系、素材系でオリジナルなものを頑張ろうとするとこだわりだして4h-8hくらい消費する

失敗2. 定番のコーディングに時間かけすぎ

  • いつも使うライブラリ系のsetup (30 min). (UniRx, DOTween)
  • 定番の処理 (ゲームシーン遷移, 得点反映, 結果表示, ダイアログ, ...)に3-4hかけている
  • ゲームオリジナルの独自処理にしっかり時間を掛けていきたい

失敗3. スピード << 堅実なコーディングになりがち

  • いい感じにメンテしやすい結合関係にせねばとか考えたり、冗長でも健全なコーディングにしがち
  • スピードが出て、あとで拡張に困らないコーディングパターンを見つけたい
  • StateMachineをつかうとか、できるだけコーディングしなくてよくて、さくっと作れる世界観が良さそうな気がする

よりよい成功を目指す

レベルデザインに時間を書けたい

しっかり遊びながらさわり心地の調整部分に時間がかけられるようにしたい. リスク <=> リターン のバランスを意識した制作ができるようにしたい

音/演出にこだわりたい

アニメーションや音によって、説明が不要ですっと入ってくるようなデザインや気持ちよさを実現したい

シンプルだけど心に響くデザインをしたい

ごてごてしていなくてよい. 情報は少なく、動きによって感情が動くようなものを作りたい

どうActionしていく?

よいAssetをつかう

自分でできる能力には限界がある. 効率よく必要な素材や機能を取り入れる行為は必要だ.

でも自分が実現したいものが、AssetStoreで購入したものの組み合わせだけで作りたいのか?と考えるとそうではないと感じる. 適切に重要かつ必要な部分を自分で作る見極めと、作ろうと思ったときに作れるだけの技量や準備があると捗りそうだ.

デザイン力をアップさせる

たいていつくりたいもののデザインは購入できない.

ツールをきちんと理解して何回か反復して練習すれば、身につきそうな気がする.

似たようなパターンを作ってみる

いいゲームのデザインや機能を模写して作ってみる訓練をすると良さそうな気がする. まずは作りたいものに近いものを真似て練習することで色々と制作能力のベースアップが図れそう.

毎回やる定番行為を効率化する

スコア反映だとか、ゲーム状態管理とか、AssetDownloadとか、もろもろ 10本くらいサンプルを作ってみて共通行為の洗い出しとライブラリ化などできれば、スピードが出そうな気がする

というようなことを雑に考えたので練習していこう

try! swift 2018 参加メモ

雑に書いていく運動

try! swift tokyo

雑な感想

楽しかった! 今回で3回目の参加、例年に比べて海外勢の参加比率が増えている気がする. tokyoがたまたま初回だっただけで、真にinternational なカンファレンスなんだなぁ。

個人的に面白かったトーク

  • Kryzysztof Zablocki さんのtoolの話https://www.tryswift.co/events/2018/tokyo/en/#tools
    • みんなが不満に思ってるまともに動かない Playgrounds の話から、アプリの状態を手元で再現するtoolsの話もよかった。当たり前の無駄な時間を短縮する工夫の重要性を再認
  • @giginet さんのgame開発話
    • 仕事と全く関係ないけどアクティブに作りたいもの作っててすごい。
    • ios周りのgame kit結構あるんだなぁと。面白そうだったので紹介されてたいくつかためしたい

懇親会

  • @oydku さんと話す。iOS -> Androidに移った感想を聞いてみた、Xcodeは色んな人が不満に感じてるんだなぁとしみじみ。
  • ノルウェーとオーストラリアの人と話す。秋葉原をおすすめしておいた。Tokyoっていうアプリが地下鉄もより検索に便利だそうだ. 外人にリーチした日本のインフラを使いやすくしたアプリってのはいろいろ他にも需要ありそう。

その他

  • try! swift は隣の人と話しましょう!みたいな時間を作ってくれてやさしさを感じる. そういう雰囲気とか志向性がいいなーって。
  • なんのためにそのカンファレンスを開いたのかを考えて、それを最大限いかすような施策をしてくれるようなイベントは素敵だ。
  • 大規模でもtrackをあえてひとつに絞って、みんなで同じ体験を共有するような部分にも何か哲学があるんだろうか
  • そういえば、日本語 => 英語 の部分を絵文字で、 🇯🇵=> 🇺🇸って表示してたのが気になった。言語と国旗は別物だし、アメリカ合衆国国旗 = 英語って表現にしてしまって大丈夫だったんだろうか...

1week gamejam に参加しようとおもった

けど間に合わなかった.

雑に振り返る.

スケジュール

日曜日に作業しようと思い立つ。 過去に作成したゲームをベースにしてつくろう。 なんか気に入らないので、作り直そう。 10hくらい作業。 もろもろステージ案考えてたらタイムアップ.

成果物

f:id:mattaclj:20180225233730g:plain

リザルトとかステージ切り替えとかができたら行けそうな気もする。 ただパズルとしてのゲーム性があんまりないのでもっとステージ工夫せねば...

反省とか

今回のハマリポイント

  • Camera.main.ScreenToWorldPoint(Input.mousePosition); で画面位置したい. Cameraの設定がOrthographic担っていないことに気づかず、悩みまくる.

毎回同じ記述やハマり方をしている & 同じようなコードを書いている. もうゲームジャム用のテンプレ化をして、作成時に同じ作業を繰り返さない工夫をしようと思った.

DroidKaigi 2018 参加ふりかえり

こうゆう記事を雑に書いていきたい運動

DroidKaigi

https://droidkaigi.jp/

開発者むけのAndroiderの年に一度のお祭り.

特に発表はしていないけどメモ程度に書く

感想とか

参加者

  • 海外勢の参加が増えた感じがする、かなり貴重なスピーカーが来ていた。
  • でも海外勢の講演はガラガラになるケースが多い、すごい面白い話もあったのでもっとみんな参加すればいいのにって感じだ。
  • 英語避けがちなのだけど(自分もそうで意識しないと避ける)、スライドの雰囲気でしゃべっている内容がわかるのでもっとカジュアルにいけばいい感じがする。

懇親会とか

  • 身近な人と話しがち問題. 楽しいけれど、そればっかになりがちでよくない
  • 広く浅く話しし過ぎも気をつけたい。理想は1-2人新しい人と知り合うくらいの感じでがんばろう
  • ハードル低くカジュアルに話せるようにしていきたい

発表

  • アーキテクチャの話が多かった印象.
  • アーキテクチャは長期プロジェクトのパフォーマンスに影響するし、普段ムカつくポイントだし、みんな話したい感じが伝わってくる
  • 気になって聞いてしまうけれど、新しい発見はあまりなかった. でも聞いちゃう
  • Android Studioの中の人のGradle高速化の話が素晴らしかった. 即役立つ話であり、中のタスク並列化の話も学びが多かった.

チケット代

  • 年々いろんな勉強会が値上がりしてる感じがする(数千円から数万円へ). DroidKaigiも例にもれずだ
  • 会場費とか食事代とかきっといろいろあるのだろう
  • 個人的にはもっと会場質素なところでやってる勉強会が好きだ. でも気になるのでついつい行っちゃう
  • 周囲でも値段を気にして参加しない人が一定層いる.
  • 価格上げるメリットもあるとおもうので良し悪しだろうけど

動画up

  • Google I/O をみならって即youtubeにupするべき. むしろライブ配信でいいくらい
  • 実際やろうとすると色んな事情があるんだろうけど.... それでもやるべき
  • Google I/O規模のカンファレンスでも時間が立つとシェアされる可能性や視聴される機会が激減する
  • そもそも勉強会動画を見る人自体が貴重な存在だし、再生数もそんな伸びない. だから皆が気になるタイミングで速攻配信するべき.
  • そうすれば部屋が込みすぎることも抑制できるし、カンファレンスのFBをしたい、発表を他の人に伝えたいひとにもすぐに伝わる
  • いかに多くの人に良質な知見や気づきを広められるか? ってのがカンファレンスのひとつの命題だと思う
  • そこを真剣にサポートできるカンファレンスになるとすごい
  • っていうことを勝手に思った. Google I/O すごい