読者です 読者をやめる 読者になる 読者になる

naichi's lab

3日後の自分(他人)への書き置き

GGJで作ったゲームを展示してきました @ サイエンス・ワークショップ in けいはんな #精華町

日記

今日はこのイベントに行ってきました。

kscan.jp

といっても講演を見に行ったわけでもなく、ワークショップを開いたわけでもなく、
子供達にGGJで作ったゲームを遊んでもらってました。

写真

f:id:naichilab:20170306004142j:plain

楽しそうに遊んでくれる子供達

f:id:naichilab:20170306003431j:plain

親子の対戦中

f:id:naichilab:20170306003434j:plain

子供はルールの理解も早い

他にも Microsoftさんが 女子高生AI りんな の出し物してたり、
Pepper君がPPAP踊ってたり、リアル精華ちゃんがいたりしました。

展示したゲーム

基本的にGGJで作ったゲームを展示。
自分が参加した会場もここだったので、試遊会って位置付けですね。

blog.naichilab.com

育毛DJ

IKUMO-DJ | Global Game Jam®

植毛リズムゲーム。
見た目がわかりやすく親子で楽しんでくれました。

Escape by Ship

Escape by Ship | Global Game Jam®

船を狙う砲台 に分かれて戦うゲーム。
逃げる or 撃つ とやることがはっきりしてるので小さな子も楽しんでました。

心電図パニック

心電図パニック Electrocardiogram panic | Global Game Jam®

運び込まれる患者をタップ連打で助けるゲーム。
なかなか忙しいゲームなので小さいお子さんには難しそうだった。
そもそもマウス操作に慣れてない子も多かったので
その場でiPadに書き出してタッチ操作できるようにして展示しました。

四子舞

Shishimai | Global Game Jam®

2人1チームでコントローラを操作して対戦する4人対戦ゲーム
大人も子供も楽しめるいいゲーム。

FORDITE

Fordite | Global Game Jam®

シンプルな避けゲー
間違いなく今日一番遊ばれたゲームですね。
1時間かけてクリアして帰って行った子もいました。

子供に遊んでもらった所感

  • マウス操作に慣れていない
    • マウスを初めて触る子もいました
  • とにかく飲み込みが早い
    • 最初はわけわからず操作してても、数回やったらもう理解してる
    • マウス操作も然り
  • タッチ追従よりドラッグ
    • 心電図パニックはタッチしている箇所に移動。という操作なんだけど、 キャラクターを何度もドラッグ移動しようとしてる子が多かった。

なるほどな〜

おまけ

f:id:naichilab:20170306003436j:plain

こっそり太陽人間も展示

f:id:naichilab:20170306003435j:plain

お父さんに単語の意味を聞きながら太陽人間を遊んでる女の子
たしなめる ってなに?
ドン引き ってなに?
JK ってなに?
お父さん困らせてすいませんでしたw

f:id:naichilab:20170306003432j:plain

1-2 Switch で遊ぶ兄弟
そら面白いよね
任天堂さすがやわ〜〜〜〜〜

【unity】プログラマーがデザイナーと協力してゲームを作った話【 #太陽人間 】

Unity 日記

f:id:naichilab:20170304165555p:plain

太陽人間リリースしました

太陽人間というゲームアプリをリリースしました!

コミット履歴を見たら昨年7月3日からだったので、、、開発8ヶ月!
まじか。2〜3ヶ月で出すつもりだったのにw

ちょっと不具合出てるみたいですが、評価は概ね好評で胸を撫で下ろしています。
すでにプレイいただいている皆様、ありがとうございます!

ダウンロードリンクはこの記事の最下部にまとめてありますので 未プレイの方はぜひダウンロードお願いします!

さて、このアプリですが 、 開発はプログラマー(私 @naichilab )とデザイナー( りるをさん )の二人体制で作りました。

今日はプログラマー視点で開発を振り返ってみたいと思います。 会話までは全部覚えてないので使ったツールの紹介とかそういうのメインで。

ではさっそく。

開発期間

2016/07頭〜2017/02末 (8ヶ月間)

京ゆにで作ろうか〜って話をしたときは3ヶ月ぐらいで出そうって話をしていた覚えがあります。
ぜんっぜん無理でしたね。見積もりの3倍かかるのは本当w

当初はキャラ30種類!とか、アプリ内課金もする!とか、
りるをさんの中で風呂敷広げまくりで大変だった記憶が・・・w

京ゆに行くたびみんなにいつ出るの?って聞かれて
もうちょっと、もうちょっとって言い続けてた気がするw

役割分担

  • 原案 りるを
  • ゲームデザイン りるを、ないち
  • キャラクターデザイン りるを
  • 素材
    • 背景 りるを
    • キャラクター りるを
    • UI りるを
    • 音 りるを
  • プログラム
    • ゲームロジック全般 ないち
    • アニメーション りるを、ないち
  • ストア準備 りるを
  • 開発環境準備 ないち
  • 開発協力
    • テキスト作成アシスタント いおさわさん
    • キャラコラボ ぴのPさん

まぁ見た目に関するところはりるをさん、 プログラム系は自分、
どっちでも無いところは都度相談って感じでした。

お互いのスキル分野が全く被ってないのでその点は楽だった。

使ったツールとか

Git & GitHub

ソースコード管理に利用。ホスティングはGitHubのPrivateリポジトリ(有料)。

github.com

りるをさんも使った経験はあるが、あまり深くは知らないのでブランチは切らずに全部masterで運用した。
競合対策は専用フォルダ ( assets/riruwo/)の用意!安易w

f:id:naichilab:20170304173625p:plain:w320

全部で822コミットだった。 だいたい自分700、りるをさん100ぐらい。

f:id:naichilab:20170304173745p:plain:w320

コミットの時間帯分布。深夜過ぎて笑えるw

SourceTree

GitのGUIツール。無料。

ja.atlassian.com

自分もりるをさんもこれを使用した。
使い慣れればまぁまぁ使いやすい。

Brabio

プロジェクト管理ツール。無料。

brabio.jp

最初の一ヶ月ぐらい使ったけど、二人ならここまで大掛かりなものは不要だった。
すぐにTrelloに移行した。

Trello

タスク管理ツール。無料。

trello.com

むちゃ手軽で使いやすい。Android/iOSアプリも使いやすい。
リリースまでの全タスクを書き出して担当者を割り当てて管理。
バグとか改善案とか見つけたらすぐに放り込んでた。

Slack

コミュニケーションツール。無料。

slack.com

チャンネルは3つ

会話用チャンネル

f:id:naichilab:20170304175110p:plain:w320

普段の会話用。
Trelloカードへのコメント記入や、GitHubへのプッシュを自動通知するように設定してた。

CI用チャンネル

f:id:naichilab:20170304175300p:plain:w320

機械的な通知を集約。
Trelloカードの作成・編集・アーカイブ・コメント、GitHubへのプッシュ、
UnityCloudBuildの成功・失敗

夜中にGitHubへプッシュしておくと、朝にはCloudBuildから通知がきていて、
通勤時間にリンクからスマホにインストールして不具合をTrelloにメモ。とかそんな使い方をしていた。

エゴサ用チャンネル

f:id:naichilab:20170304175643p:plain:w320

IFTTT経由でTwitterの検索結果を通知。
全部見てますw

Unity Cloud Build

自動ビルドツール。無料。

unity3d.com

GitHubにプッシュすると自動ビルドが開始されるように設定。

f:id:naichilab:20170304175941p:plain:w320

最終的に残ったビルド設定は3つ。

  • Android Release
    • スマホでダウンロードして直接試す用途
    • GooglePlayConsoleのベータ版にアップロードする用途
    • GooglePlayConsoleのリリース版にアップロードする用途
  • iOS AdHoc
    • テスト端末を登録した証明書で署名したもの。
    • 実機での動作確認用に利用
    • Slackへの通知->CloudBuildを開く->iPhone/iPadに直接インストールって使い方
  • iOS AppStore
    • iTunes Connectにアップロードする用
    • ダウンロードしてApplication Loaderでアップロード

とにかくローカルでビルドしなくて済むようにした。

f:id:naichilab:20170304180409p:plain:w320

プッシュさえしておけば15分後にはダウンロードできるのでオススメ。

GitHubWiki

GitHubの一機能。

f:id:naichilab:20170304180521p:plain:w320

Trello&Slackで決めて決まったら記入的な使い方。
っていってもやっぱり面倒なので忘れがち。

GoogleDrive

共有フォルダ。無料。

f:id:naichilab:20170304180641p:plain:w320

当初は仕様書的なものも入れてもらってたけど、
結局Git上に Documents/ ってフォルダ作ってそっちに入れてもらうようになった。
最後まで使ってたのは Google SpreadSheet
これはセリフとか文章リソースの管理に使った。

IFTTT

なにかをトリガーになにかするサービス(なんていうのw)。無料。

ifttt.com

Slackのとこにも書いたけど、Twitter検索してSlackに通知。って用途で使ってる。

Skype

一度だけ打ち合わせに使ったけどほぼ毎月京ゆにで合うしそんなに使わなかったなぁ。

京ゆに

コミュニケーションツール(?)。1500円/回。

https://kyotounity.jimdo.com/

人に見せるのはモチベーション維持に大事ですね・・・
よくエターナらずにリリースできたと思う。

人に見せる

デジゲー博に出したり、POP会で見せたり、妻や知人に遊んでもらったり。 人に遊んでもらって反応を見る・聞くのは大変有益でした。

わかりづらい点やアドバイスももらえるし、何よりモチベ(ry

協力いただいた皆さんありがとうございました。

まとめ

って感じでいろんなツール使ってみました。
人と協力して作るのは初めてだったので、いろいろ勉強になりました。

お互い趣味での開発だったので、モチベーションの維持が一番大変だったかなぁ。 そういう意味ではCloudBuild、Slack、Trelloの組み合わせはよかったと思う。 常に動くものを確認できる。次やることを細分化してメモできる。って点で。

あとはツールと関係無いけどUnityのアニメーション周りとかりるをさんに教えてもらって、
ある程度使えるようになったのはよかった。

しばらくは休憩するけどまた何か作りたいねぇ。

太陽人間のプログラマからは以上です!!!

ダウンロードリンク

よろしくお願いします!

iOS

太陽人間

太陽人間

  • kawamura ayumi
  • ゲーム
  • 無料

Android

play.google.com

【Unity、TextMeshPro】簡単な使い方+日本語フォントアセットを作るときの設定値メモ

Unity TextMeshPro

f:id:naichilab:20170301225136p:plain

ストアはこちら -> TextMeshPro

TextMeshProが無料になったらしい。

すごいですね。

自分はだいぶ前のセールに買ってからずっと使ってます。

日本語フォント作るときの設定値をメモしておきます。

Font Asset Creater

TextMeshPro付属のアセット作成ツール

Window -> TextMeshPro - Font Asset Creater

f:id:naichilab:20170301225453p:plain

ひらがなだけとか、使う文字が決まってる場合

key value
Font Source <フォントファイルを選択>
Font Size Custom Size - 48
Font Padding 5
Packing Method Fast
Atlas Resolution 1024 * 1024
Character Set Custom Characters
Custom Character List 下記参照
Font Style Normal - 2
Font Render Mode Distance Field 16
Get Kerning Pairs? false
0123456789
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
あいうえおかきくけこ
さしすせそたちつてと
なにぬねのはひふへほ
まみむめもやゆよ
らりるれろわをん
がぎぐげござじずぜぞ
だぢづでど
ばびぶべぼぱぴぷぺぽ
ぁぃぅぇぉっゃゅょゔ
アイウエオカキクケコ
サシスセソタチツテト
ナニヌネノハヒフヘホ
マミムメモヤユヨ
ラリルレロワヲン
ガギグゲゴザジズゼゾ
ダヂヅデド
バビブベボパピプペポ
ァィゥェォッャュョヴ
、。!?ー…「」『』×
( ) +-%.'・/:;

こんな感じ

f:id:naichilab:20170301224910p:plain:w480

あとは Generate Font Atlas -> Save TextMeshPro Font Asset で保存するだけ。

文字数によってはフォントサイズを小さくしないとダメかもですね。

使い方

UGUIなら -> Create -> UI -> TextMeshPro - Text

f:id:naichilab:20170301225543p:plain

3Dなら -> Create -> 3D Object -> TextMeshPro - Text

f:id:naichilab:20170301225813p:plain

あとはまぁさっき作ったフォントアセット選んでテキスト入力してって感じ。

f:id:naichilab:20170301230144p:plain

日本語全部は?

漢字含めた日本語全部、とかは作ったことないです。 必要になったら調べます。

【読んだ】UnityではじめるC# 基礎編

読書感想文 Unity

読んだ本の感想メモ。

読んだ本

UnityではじめるC# 基礎編

UnityではじめるC# 基礎編

なぜ読んだ?

Twitterで分かりやすいと評判っぽかったので一度読んでみたいと思ってた。
全くの素人にプログラミング教えたりすることがたまにあるので、
教え方の参考になるような箇所があればいいなーという思いもあった。

さらにたまたまAmazonの技術書セールで半額になってたので購入。

どんな本?

表紙に 知識ゼロでも大丈夫!! と書いてある通り、非常に分かりやすい。
非常に丁寧な説明と共に豊富なスクリーンショットが載っており、
誰でもゲームを完成させられる作りになっている。

この本で作成するゲームは下記2本。

  • 脱出ゲーム
  • 物理パズルゲーム

冒頭はC#の基本から、Unityの基本的なお作法とか。
脱出ゲームではタッチ判定とそれを受け取る処理、配列を使ってまとめる方法など。
物理パズルゲームでは2Dの物理処理と当たり判定とかに触れてた。
ゲーム自体はシンプルなものだけど、うまくUnityの機能を説明してるなーと感じた。

さらに最後にはXCodeでのビルド方法や、
GooglePlay/AppStoreへの公開方法まで書かれてるサービスっぷり。

とりあえず真似ればゲームができてスマホで動く、さらにストアにも公開できる。 これ1冊でばっちりスマホアプリ開発者を名乗れますね・・・ 初めてUnityを触る人にはとてもいい教材なんじゃないかな?

挿絵で 余裕があったらこういう改造してみよう! みたいに和尚が微笑んでる
とりあえずこれをベースに一本だしてみいって言われてるようだ・・・

おすすめできる?

こんな人におすすめ

  • スマホゲーム作ってみたいけど何から手をつけていいかわからない人
  • Unity触れるようになりたいデザイナーの人

こんな人にはオススメできない

  • 中級者以上(とっても易しいので)

まとめ

Unityの知識として知らなかった点は1つもなかったけど、
初心者への教え方とか、分かりやすい書き方とかの参考にはなった。
挿絵もたっぷりで誤植も見つからなかったし結構いい本だと思いました。

UnityではじめるC# 基礎編

UnityではじめるC# 基礎編

【zsh、percol】percolで履歴検索、cd履歴ジャンプとか

zsh

久々にターミナル触ったらほとんど忘れてたのでリハビリ

iTerm+zsh入れてたんだけどあんまり使いこなせてないし、 これを機に気になってたoh-my-zshっての入れてみることにした。

さらに調べてる途中で見つけたpercolってのも入れてみた。

環境

  • 2017/02/28
  • Mac OS X El Capitan 10.11.6

oh-my-zsh

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

インストールはこれだけ。

~/.zshrc のZSH_THEMEは wedisagree にした。

path が消えたので ~/.zshrc に下記を追加した。

export PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
eval "$(rbenv init -)"

percol

sudo pip install percol してみたがエラー。

ぐぐったら easy_install pip すると直るよと書いてあったので試す。

入った

f:id:naichilab:20170228005320p:plain

percolでコマンド履歴検索

percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ

上記の通りなんだけど、~/.zshrc に下記を追加した

# ctrl+Rで履歴検索
# http://memo.sugyan.com/entry/20140611/1402487717
function percol_select_history() {
    local tac
    if which tac > /dev/null; then
        tac="tac"
    else
        tac="tail -r"
    fi
    BUFFER=$(fc -l -n 1 | eval $tac | percol --query "$LBUFFER")
    CURSOR=$#BUFFER             # move cursor
    zle -R -c                   # refresh
}
zle -N percol_select_history
bindkey '^R' percol_select_history

はてなの引用貼り付けしたらフォーマット死んだのでコピペしました。すいません。

ctrl+r 押すだけでコマンド履歴がpercolで表示される。

f:id:naichilab:20170228005455p:plain

そのまま単語入れればAND検索で絞り込める。 さらにEnter押せばプロンプトに入力されるのでそのまま再実行できる。

なんて便利なんだ・・・

percolでcd履歴ジャンプ

percol で z / autojump のようにディレクトリ高速ジャンプ - Slip Ahead Logging

またまた上記の通りなんだけど、~/.zshrc に下記を追加した

# percolで履歴ジャンプ
# http://stillpedant.hatenablog.com/entry/percol-cd-history
# {{{
# cd 履歴を記録
typeset -U chpwd_functions
CD_HISTORY_FILE=${HOME}/.cd_history_file # cd 履歴の記録先ファイル
function chpwd_record_history() {
    echo $PWD >> ${CD_HISTORY_FILE}
}
chpwd_functions=($chpwd_functions chpwd_record_history)

# percol を使って cd 履歴の中からディレクトリを選択
# 過去の訪問回数が多いほど選択候補の上に来る
function percol_get_destination_from_history() {
    sort ${CD_HISTORY_FILE} | uniq -c | sort -r | \
        sed -e 's/^[ ]*[0-9]*[ ]*//' | \
        sed -e s"/^${HOME//\//\\/}/~/" | \
        percol | xargs echo
}

# percol を使って cd 履歴の中からディレクトリを選択し cd するウィジェット
function percol_cd_history() {
    local destination=$(percol_get_destination_from_history)
    [ -n $destination ] && cd ${destination/#\~/${HOME}}
    zle reset-prompt
}
zle -N percol_cd_history

# percol を使って cd 履歴の中からディレクトリを選択し,現在のカーソル位置に挿入するウィジェット
function percol_insert_history() {
    local destination=$(percol_get_destination_from_history)
    if [ $? -eq 0 ]; then
        local new_left="${LBUFFER} ${destination} "
        BUFFER=${new_left}${RBUFFER}
        CURSOR=${#new_left}
    fi
    zle reset-prompt
}
zle -N percol_insert_history
# }}}

# C-x ; でディレクトリに cd
# C-x i でディレクトリを挿入
bindkey '^x;' percol_cd_history
bindkey '^xi' percol_insert_history

こちらもはてなの引用貼り付けしたらフォーマット死んだのでコピペしました。すいません。

引用元の最後の2行はエラーしたので消した。

ctrl + x -> ; でcd履歴からジャンプ
ctrl + x -> i で履歴パスをプロンプトに貼り付け

もちろんpercolなので履歴を自由に絞り込める

これも超便利

まとめ

フォルダ移動する際に cd ~/hogehoge みたいなのを記憶を頼りに打ってたから超楽になった・・・

どっかに 世界変わるわ って書かれてたけどこれは本当に変わるわ・・・

ありがとうありがとう

【参加してきた】雲勉:大阪【勉強会:開発者向け】サーバーレスで作るモバイルアプリバックエンド #kumoben

AWS kumoben

kumoben.doorkeeper.jp

参加してきました。

会社紹介

おきまりの宣伝

  • アイレット株式会社
    • 2003〜
    • 従業員162名ちょい
    • システム開発、ゲーム開発、保守、マネージドホスティング
  • cloudpack大阪
    • 構築
    • MSP運用
    • MSP開発
  • cloudpack
    • デザイン
    • 設計・コンサル
    • システム開発
    • MSP
  • 7年間AWSのみで運用
    • 600社1200プロジェクト超
  • APNプログラム
    • Amazonパートナープログラムの
    • プレミアパートナーに5年連続選ばれている
    • アジアで7社だけ
  • 請求代行サービス
  • AWSよりも安い
  • 大阪の話
    • RoBoHon オートヒーリングシステム
      • 改ざん自動修復
    • スタバのサーバーレス案件
    • 毎日放送 動画イズム444
      • フルサーバーレスで実現
      • 3ヶ月でデザインからリリースまで
    • 近畿大学AWS移行
    • MSP事業支援開発
      • kibana
  • サーバーレス開発チームの取り組み
    • MaaS(仮) & ServerlessPack
  • KDDIの子会社になりました。 2017/01/25
  • 募集
    • 開発・インフラ・UI/UXエンジニア

雲勉について

  • cloudpackの社内勉強会を外に公開
  • 基本的に資料公開はしない
  • 今回は中級者向け
  • #kumoben

サーバレスで作るモバイルアプリバックエンド

やっとはじまり

自己紹介

  • すみさきさん
  • Webアプリケーションエンジニア
  • 2016/09~cloudpackにjoin

サーバレスってなに

サーバ「レス」

  • サーバが存在しない
    • サーバはあります
  • サーバの存在を意識しなくていい
    • 自動スケーリング
  • ハードウェア、OS、ミドルウェアに依存しない
    • コードが動くことが大事
  • ステートレス
    • リクエストごとにプロセスを使い捨てる
  • 使いたい「機能」にフォーカスを当てる
    • FaaS (Function as a Service)

どっかの偉い人 0.5秒実行するインスタンスを20mm秒以下で効率的に起動できるならサーバレス

メリット

  • リソースを時間単位で確保
    • 運用費用を削減できる
  • インフラが存在しないため構築の手間を削減
    • 初期費用も削減できる

デメリット

  • それぞれが独立・非同期
    • 原子性を確保することが難しい
  • SLAが保障されていないものが多い
    • 障害発生時のリカバリー手順が必要
  • 構築から運用まで一貫して考える必要あり

実案件で使おうとするとここらへんが難しい

構成例

f:id:naichilab:20170208195803j:plain

AWSにおけるサーバレスサービス

いくつかある。

f:id:naichilab:20170208195602j:plain

AWS Lambda

  • AWSのサーバレスといえばこれ
  • Java8、Node.js、Phthon2.7、C#で記述可能
    • java 初回が重たい
      • CPUがっつり使う処理には有効
    • Node.js
      • 色々めんどくさい
    • Phthon
      • コンソールでかけるのでよい
    • C#
      • まだあまり試してない
  • たいていの処理はなんとかしてくれる
  • 初期の同時実行数は100に制限(アカウント単位!
    • 過度な依存は禁物
    • AWSに相談すれば少しあげることはできる・・・
  • 最大処理可能時間は5分

Amazon API Gateway

  • RESTfulなAPIを構築できるサービス
  • 他のサービスのプロキシをしたり、APII/Fになったり
  • Webサービスのスロットリングにも使える
    • スロットリング:際限なくアクセスされることを防ぐ
  • Lambdaと仲良し
  • 30秒でタイムアウトする

Amazon DynamoDB

  • 高速で柔軟なNoSQLデータベース
  • 事前に設定したスループット要件に合わせて自動的にスケーリング
  • オンラインゲームのバックエンドに使われたりする
  • スループット要件に対して課金される
    • 利用料金が青天井
    • 例)秒間1万件データ取得したい
      • -> 秒間1万件以上に設定すると、その金額がずっとかかる
  • 1日2回しかスループット要件変えられない。

Amazon S3 (Simple Storage Service)

  • シンプルで耐久性がありスケーラブルなオブジェクトストレージ
  • 99.999999999%の耐久性
  • 99.99%の可用性
  • 静的ウェブサイトホスティングという機能があり、コレ1つでWebサイトを作ることも可能
  • 仕組み上高速ではない
    • 同じオブジェクトを読み書きする際には注意が必要
  • 親戚
    • グレイシア(長期保存用)

Amazon Cognito

  • ユーザーのサインアップとサインインの機能を追加できる
  • ソーシャルIDや自前のIDシステムによる認証もできる
  • 認証したユーザーにIAMロールを割り当てる使い方など
  • 中身は3つぐらいに分かれている
    • Cognito UserPool
    • Cognito Identity
    • Cognito Sync
      • スマホ間同期とか
  • 認証用メールがAmazon SESを通じて発行される
    • キャリアメールが関わる場合は工夫が必要
      • キャリア側の迷惑メールフィルタに引っかかる
    • 動画IZMではSendGridを利用

番外編

Amazon CloudFront

  • CDNサービス
  • コンテンツを世界に配信できる
  • S3やAPIGatewayの前段に挟むことで痒いところに手が届く
    • S3へのアクセスを減らせる
    • S3は404以外のエラーはサポートしていない
    • APIGatewayの前段でAppFirewallの機能を担う

Amazon Route 53

  • 可用性・拡張性に優れたDNSサービス
  • S3の静的ホスティング、APIGateway、CloudFrontを独自ドメインで使いたい場合に

他にも

  • Amazon SNS
    • プッシュ通知
  • Amazon SES
    • Email配信
  • Amazon SQS
    • メッセージキューイング
    • 溜め込んでLambdaで取り込んで処理とか。

実際にモバイルバックエンドをサーバレスで考えてみる

簡単な構築パターンを考えてみる

アプリから送ったデータを保存したい

  • 構成例
    • API Gateway -> Lambda -> S3 or DynamoDB
  • f:id:naichilab:20170208203148j:plain

  • Lambdaを直接たたくためにはIAMが必要

  • APIGatewayを挟むと抽象化できる

写真をとったらサムネイルを作りたい

  • 構成例
    • API Gateway -> Lambda(保存) -> S3 -> Lambda(加工) -> S3
      • たまにLambdaの処理が抜ける
  • f:id:naichilab:20170208203229j:plain

  • 構成例2

    • API Gateway -> Lambda(保存) -> S3 / SQS -> (Timer起動)Lambda(加工)
      • SQSを挟むことで確実性を上げる
  • f:id:naichilab:20170208203252j:plain

許可した人にだけAPIを公開したい

  • 構成例
    • Amazon Cognito
      • 認証トークンを発行
    • API Gateway -> Lambda -> …
  • f:id:naichilab:20170208203333j:plain

デモ

  • API Gateway -> Lambda -> Lambda -> S3
  • Unity -> Lambda <- S3
  • f:id:naichilab:20170208203455j:plain

Unity用SDKもあっていくつかの機能は直接呼べる

  • API Gateway
    • AJAXで呼ぶならCORS設定が必要

ホワイトペーパー

cloudpackサーバーレス開発ホワイトペーパーとして公開している

cloudpack.jp

質疑

サーバーレスのログ追跡どうやってるの?

  • CloudWatchは大変
  • 答えはあるがまだ発表できない
    • 2月末ぐらいに発表できる

次回予告

  • 2月開催
    • AWS Storage Gateway
  • 3月
    • 3/1 ホワイトペーパーの説明
    • 3/8 AWS Code Deploy
    • 3/29 クラウド基礎

感想

まだほとんど使えてないけど雰囲気つかめてよかった。 簡単に試せそうやし触ってみよう。

GGJ2017 精華町 けいはんなプラザ会場に参加してきました

日記 GGJ

f:id:naichilab:20170123021716j:plain

タイトルの通り、GGJ2017に参加してきました。

記憶が新しいうちに感じたこととかをメモ。

GGJ(Global Game Jam)は一言で言うと全世界同時開催のゲームジャム。 知らない人たちが互いに集まって即興でチームを作り、48時間でゲームを作ります。

29時間で作ったゲーム紹介

心電図パニック

f:id:naichilab:20170122211625p:plain:w320f:id:naichilab:20170122211656p:plain:w320

心電図パニック Electrocardiogram panic | Global Game Jam®

Mac版は上記サイトからダウンロードできます。

  • 夜間病棟に勤務する医者となって次々運び込まれる急患をひたすら助けるゲーム。
  • すごい勢いでやってくる患者
  • 放っておくとすぐに心臓が止まるので助けてあげよう
  • オンラインランキング対応

これをプログラマ2人、デザイナ3人の5人で作りました。

土曜日の10時にチーム分けされて、翌日15時に完成なので29時間ですね。 いやー楽しかった。

覚えてることメモメモ

21日 07:00〜

9時半集合だけど7時に出発しないと間に合わない。 京都駅から直通バスがあるって見つけたからタクシーでバス停まで行ったら土日は運行してないとのこと。 マジかよ、調べ直して近鉄で行けることを発見。

近鉄で揺られること40分ぐらい。さらにバスで15分ぐらい。

途中にかなりでかい工場やオフィス、国会図書館とか見かけた。 学研都市って何かわかんないけどなんだかワクワクする感じ。

でもやっぱ遠いぞけいはんなプラザ。

21日 09:00〜

会場になんとか到着。

f:id:naichilab:20170123010638j:plain:w320
とんがってるのは世界一巨大な日時計らしい。
夜はレーザー光線が出る。 なんでや。

ホテルや貸会議室がくっついたような行政施設?かな。

ロビーで待っていると プログラマのみ 先に部屋に通される。

何事かと思ったら、かなりプログラマが不足しているらしく、チーム分けの作戦会議がしたかったらしい。

6人(ぐらい)中、ゲーム作ったことある人が3人いたので3チームに別れることに決定。

そのままチームリーダーに任命されてしまった。ABCチームのうち、Bチーム。

21日 09:30〜

他の参加者も部屋に通される。 どうもチーム分けは事前にされていたようで?運営の人が名前呼びながらテキパキとチームを振り分けていく。すげー手際いい。

あっという間に自分のいた机に5人が座った。

自分を含めて男性3人、女性2人
プログラマの人を除き全員Mac、学生は学校で全員購入するそうな。さすがデザイン系。

全体的に学生は多く、特に精華大学の学生だけで9人ぐらい(全員デザイナ)いた。

そのあと運営の方から自己紹介や開催の経緯説明、精華町町役場の方から精華町の紹介などがありました。

f:id:naichilab:20170123011005j:plain:w320
精華町のイメージキャラクター 京町セイカちゃん
めっちゃおしてますね
https://twitter.com/kyomachi_seika

21日 09:45〜

GGJお約束のお題発表。ビデオを見る。GoldスポンサーのUnityの宣伝がふんだんに入ってた。

お題は WAVES 。波。

21日 10:00〜

ここからは各チームごと、チームリーダーに一任された。

とりあえず自己紹介はじめる。

  • 自分はプログラマで趣味でUnity使ってることを説明。あと 太陽人間の宣伝。
  • 他にプログラマが一人。SEやっててゲーム開発は趣味とのこと。
  • あとは学生が3人。全員同じ学科(キャラクターデザイン化)で2回生と3回生。
    • イラスト見せてもらった。うますぎ。

21日 10:30〜

付箋を使いながらブレスト。2~30枚が出たかな?

WAVE、、、波、、、波形(グラフ)、、、心電図、、、心肺停止、、、心臓マッサージ!!

訳わかんないけどこんな感じで方向性決定。

ここからはA3模造紙に画面レイアウトをざっくり書いてみてアイデアを詰めていく。

絶対面白いわ!って楽しそうにする学生。いいねいいね。

21日 11:30〜

運営の人からWikiやSlackの説明を受け、チームメンバー全員に設定。自分以外Slackは初めてだった。

さらに運営の人がSilverスポンサーのGitHubも利用を勧められたので(勧められなくても使うけど)、 全員にGitHubアカウントを取得してもらいSourceTreeもインストール。こっちも自分以外使うのは初めて。

作ったプライベートリポジトリに全員を招待。

21日 12:00〜

近くにあるでかいスーパー(アピタだったか?)のフードコートでご飯。

f:id:naichilab:20170123011632j:plain:w320
ゆっくり食べられる最後のご飯かなーとか考えてた。

21日 13:00〜

SlackやGit設定を全員分完了。

もう一人のプログラマはキャラクタの移動処理とかを作り始めてもらう。
自分はゲーム全体の流れを作るためにゲームマネージャやシーン制御クラス、音関係のマネージャクラスとかを過去プロジェクトから流用して雛形を作った。

デザイナの3人には背景、メインキャラクター、患者に分かれてラフ作成開始してもらった。

背景に関しては30分もしないうちにラフが出てきてビビる。

リソース作成早すぎてプログラムまにあわねーぞこれは。

21日 15:00〜

それぞれのチームのコンセプト発表


いつのまにか動画撮影&公開されてた

発表するいい練習になるだろうと学生をそそのかして発表させる。超緊張してるw

となりのAチームはハゲについて熱く語ってましたね・・・Cチームは2人対戦ゲームになるとのこと。
楽しみ。

ここで宿泊者には部屋の鍵が配られる。

f:id:naichilab:20170123012444j:plain:w320
精華町さんびっくりするほど太っ腹。
これだけ快適だと来年は規模拡大するだろうし宿泊者や社会人は有料になるのかなーとか考えてた。

発表後は引き続きプログラムや素材作成

f:id:naichilab:20170123012358j:plain:w320
作業風景

続々とできあがる画像素材たち。
ぜんぜん進まないプログラム。

あーこれは徹夜かなって感じ。

ゲームの細かいところだとかはすぐに声を掛けてプチミーティングを開く。悩んでる暇も無いのでその場その場で決めていく。

チーム名とか、翌日までに決めればいいようなものは付箋に書き出して壁に貼っておいた。余裕のある人にやってもらう予定。

プログラマ間で共有するやることリストはGitHubのプロジェクト機能でカンバン管理することにした。

f:id:naichilab:20170123012249p:plain:w320
まぁまぁ役立ったかな?

21日 17:00〜

すがやみつる先生が応援に来てくださった。
清華大学から参加している9名の学生は、すべて先生の教え子らしい。
学生との会話を聞いているととても慕われてらっしゃるのが伝わってきました。


ドーナツごちそうさまでした。

21日 19:00〜

運営の方から差し入れのたこ焼き

f:id:naichilab:20170123013235j:plain:w320
各チームに3パックずつ。
近所のスーパーの売り切りセールで買い占めてきたとのことw ごちそうさまでした。

このころUnityCloudBuildも設定。

f:id:naichilab:20170123013436p:plain:w320 これでWin/Mac用ビルドが常に届く。 チームメンバー全員にUnityアカウントも作ってもらい、アクセスできるようにした。 あんま使わなかったけどね。

この日は夜中3時ぐらいまで作業した。

  • 背景やあらかたのUI素材は完成
  • リザルト画面素材も完成
  • プレイヤー(医者)素材は完成
  • プログラムは医者の移動と患者の生成ぐらいは完成
    • ゲームロジックやUIの制御とかは全く。やばい。

相変わらずプログラマの進捗ピンチ

とりあえずデザイナのみんなには明日引き続き作業してもらいたいことを説明して解散。

もう一人のプログラマの人とは同じ部屋だったのでもう少し進める。

結局5時までやった。

  • 患者の生成と退場処理完成
  • UI要素の制御もある程度組んだ

なんとかなりそうな目処が立ったので寝る。

22日 07:00〜

朝7時に部屋から会場に向かうと、まだ人は少なかった。

f:id:naichilab:20170123013823j:plain:w320

朝ごはんは雲丹亭ラーメン。

f:id:naichilab:20170123014042j:plain:w320

朝食後はひものさんと早朝の変なテンションでじゃがりこタワー作った。


訳がわかんねぇな。

22日 10:00〜

ベータ版をプレゼン。

UIとかはまだまだだけどだいたいのゲームロジックは完成。
なんとかなりそうだ。

22日 12:00〜

運営からピザの差し入れ

f:id:naichilab:20170123014229j:plain:w320
ごちそうさまでした。ジャムも佳境って感じですねぇ

BGMやSEを実装し、開発も佳境へ。

午後はなるべく難易度調整に時間を割く、
プログラマが調整し、デザイナ全員でテストプレイ。

全員にSourceTree(Git)とUnityをインストールしておいたので、
プログラマがPush、デザイナはPullして即座にUnityエディタでプレイ。
ってことができた。これはなかなかいい感じだった。

みるみるゲームとして遊べる形になっていく。

終了30分前から急遽オンラインランキングを実装することにした。
NCMB使えば楽勝!

22日 15:00

そうこうしているうちに締め切り。

f:id:naichilab:20170123014654j:plain:w320
モニターに映し出されるカウントダウン

お疲れ様でした!

ここからGGJ本家サイトへの登録作業。地味だけど大事な作業。

22日 16:00〜

全チーム完成品のお披露目!

今回は全チームちゃんとゲームとして動くところまでできていました。みんなすごい。

これで冒頭に紹介したゲームができあがりです。

22日 17:00〜

試遊会&懇親会

f:id:naichilab:20170123015232j:plain:w320
f:id:naichilab:20170123015233j:plain:w320
f:id:naichilab:20170123015234j:plain:w320
懇親会の最後にはちゃっかり京ゆにの宣伝もさせてもらいました!

最後まで和気藹々と、談笑の絶えない会場でした。

最後に全員で記念撮影してお開き!

皆さんお疲れ様でした!

参加してみて

やっぱりゲームを作るのは楽しい!
しんどいけれど、とんでもなく多くの経験値を得られるすばらしいイベントでした。

プログラマが二人いたおかげで、適度に作業分担しつつ作りきることができ助かりました。

0からキャラクターを生み出せるデザイナ(で呼び方あってる?)さんのすごさ、自分には絶対無理なので尊敬しっぱなしでした。SlackだのGitだのSourceTreeだのと初めて聞くツールにも関わらず使ってみる姿勢は好印象でした。Gitとかプログラマでもなかなか難しいツールなんやけど使ってくれてありがとう。

前回(一昨年)のゲームジャムはメインプログラマを担当したけれど全く時間が足りず大変な思いをした。それから2年、着実に書いたソースは残っているので管理クラス等を流用することでかなり新規実装の負担を減らすことができたと思う。

あとはゲームジャムというとプログラマ8割!みたいなイメージでしたが、今回はデザイナ6割というプログラマから見たら(いつもグラフィックリソースに困るから)夢のような環境でした。

このようなすばらしい企画を実行してくださった精華町町役場の皆さん、運営側の皆さん、ありがとうございました。そしてお疲れ様でした。

また来年も開催されるのであれば是非参加したいと思います。
また機会があればよろしくおねがいします!