知識ゼロからAndroidアプリ開発者に!

Androidアプリなどの開発者です。「知識ゼロからAndroidアプリ開発者になるまで!」からタイトル変更しました。

面白法人カヤックから内定をいただいたときの話

はじめに

約半年前、自分は恥ずかしながら就職活動をしていました。職歴があるから正確には転職というのだろうか。就職難の時代にあってもプログラムが書ける人の需要は高いのか、希望するところからいくつか縁があったので、そのときのことを書きます。とくに「Androidアプリ開発者」というキーワードを見ている人が興味のありそうな有名どころの「面白法人カヤック」さんについて書きます。ちなみに私は現在別の会社にいます。

この記事には何が書いてある?

  • 業界の人材動向
  • カヤックを受けたときの印象(面接・書類など)
  • クリエイティブ業界を受ける上でやるべきこと
  • 受からない人の特徴

この記事に書いていないことは?

  • 就職活動ノウハウ
  • 面接アドバイス
  • 受かる方法

業界の人材動向

自分が受けたのは「ソーシャルゲームスマートフォンエンジニア」という職種。カヤックさんではソーシャルゲーム分野に進出していて、その分野での募集でした。そんなスマートフォン業界の人材動向はどうなっているのでしょうか。

ソーシャルゲーム関連で人材が不足

就職活動をする中で情報を調べると、最近はソーシャルゲームの求人が多い。とくにプログラムが書ける・絵が描ける・スマートフォン特価のwebデザインができる人はソーシャルゲームを勧められることが多いようです。

ソーシャルゲームスマートフォンゲームは格差

スマートフォン向けのゲームを作っている会社の中には「ソーシャルゲームは手を出さない」という会社もあり、App storeGoogle playを中心にネイティブアプリを出している会社もあります。印象的だったのは「おさわり探偵なめこ栽培キット」を出している株式会社ビーワークスさん。もともとは出版業界で、web部門・ゲーム部門があり「なめこ」で一気に有名になったようでした。出版業界ならではのグッズ展開などの横展開も好調の理由だと思います。非ソーシャルではコストに対して売り上げが上がらないのでこういう横展開できるところがのびているようです。

BtoBスマートフォンアプリも一部で好調

BtoCが注目される中、実はBtoBも好調のようで、スマートフォンの爆発的な普及で、キャリアのプリインストールアプリを開発している会社や、電子書籍関連・ソーシャルゲームフレームワークを作る会社がのびているようでした。

カヤックさんを受けたときの印象

人材動向

最近海外展開に力を入れて外国籍の人を積極的に採用していたり、VCからの出資や上場の可能性といった噂があったりと、人材確保には積極的だという印象を受けました。

webからの応募

実は応募をする前にカヤックの社員の方と話をする機会があり紹介してもらうこともできたのですが、自分の力を試してみたいという気持ちからwebから直接応募しました。自分のことや職歴を書くことは当然ですが、印象的だったのは自分の人となりがわかる写真を送信することと、自分の持っているサイトなどのURLを送信することでした。写真は自転車で川崎-京都間を走ってゴールしたときの写真・中国で馬に乗ったときの写真・アイスホッケーの写真を送り、URLは自分のGoogle Playのアプリのページやjsdo.itのアカウント、いくつかやっているブログのURLなどを送りました。

書類

(※いいか悪いかはわかりませんが)
これはほかの会社にもそうしたのですが、履歴書は自作デザインのA4を一枚、職務経歴書もA4でまとめその他自分の作った物がわかるような資料をA4で何枚かまとめて送りました。手書きの履歴書じゃないとだめという会社もあるのでしょうがそういうところにいきたいとは思わなかったのでこれで統一しています。カヤックさんは大丈夫でした。たぶんデザイナーはポートフォリオとか就職ノウハウとかあるのでそれは別のサイトとかをみてください。

ちなみに余談ですがA4でまとめるのは自分のこだわりです。ビジネス書類が基本的にA4で相手に送る場合はほかの書類と一緒に持てるように統一しています。印刷できるサイズなので面接に持ってきてもらえるかもしれないですし。また家の中のサイズのバラバラな紙類(メモ・はがきサイズ・どこかでもらったステッカーなど)やCDなど薄いものは全てA4ファイルに入れているので統一していると検索しやすいです。

面接

事前情報では3回から5回くらいある人もいるということを聞いて覚悟していたのですが、自分の場合は2回でした。「面白法人カヤック」ですが面接を受けるときには「株式会社カヤック」という意識で行くといいと思います。特に面白い人ということをアピールしなくてもわかる人にはわかるものだと思いますので。話した内容は様々で、自分のやりたいこと・将来像・仕事をする上で大切にすること・チームワークについて…など。たぶんほかのどの会社よりも本音を話した気がします。一生涯会社にいるつもりがないということも素直に話しました。詳しくは書けませんが。

ほかの企業の面接と違う部分。これが一番大事で、面接の最初の質問が「作ったものを見せてもらえますか」というものだったこと。僕の場合は資料にまとめたwebやflashスマートフォンのアプリもありましたが、実際に動くものを見せました。その場にはスマートフォンしか用意していなかったのでAndroidアプリしか見せられませんでしたが、PCを持っていっても問題はないと思います(おそらく)。たぶん見せられるものがないと確実に受からない。

内定連絡とその後

最後の面接からそれほど時間が経たないうちに条件提示を添えた内定の連絡がメールできました。そのころいくつか別の会社からも内定が出ており、迷っているという節のことを伝えると人事の方と話をする機会があったり、現場のリーダーの方と話す機会を作っていただくなど親身になって相談していただきました。

クリエイティブ業界を受ける上でやるべきこと

ここまでは自分の印象だからどうでもいいとして、これからクリエイティブ業界を受ける人にはこれを知っていてほしい。カヤックさんに限らず。

Done is better than perfect

今の会社で、たまに面接官の立場になることがありそのなかで話を聞くと、「作ることが好きです」という人がいます。「では今までどんなものを作りましたか?」と聞くと「完成させられたものはない」という人も結構います。作ることが好きなのに作っていない人が意外に多いことがわかります。そういう完成させる力がない人は優秀な作業員なのかもしれませんが、クリエイティブ業界では完成させないと仕事にならないのではないでしょうか。「Done is better than perfect - 完璧を目指すよりまず終わらせろ」が重要。0から0.5を作る人は多い。1から99を作る人も多い。クリエイティブ業界で優秀な人は0から1を作る人と99から100を作る人なのかなと思う。

とくにカヤックさんでは作ったものがなければ面接もできない気が…

資料とかつくる

デザイナーはポートフォリとか持っていると思いますが、プログラマなどは職務経歴書だけだったりします。実物を見せる機会があればいいのですがそれがない場合もあるのでプログラマでも作ったものがわかる資料を作るといいと思います。仕事以外の部分も見せられるので。特に外観にこだわらなければA4で(もちろんデザインして)統一して履歴書と一緒に送って面接に持ってきてもらうのを期待するとか。

なぜ就職するのか

就職するのは何のためか。お金?一人ではできないことをやるため?成長のため?…たぶん全部ですよね。で、作ることが好きと答えたときに「起業じゃないのはなぜ?」「フリーランスじゃないのはなぜ?」と問われたときに「そこまでの実力はないから」とか「お金がないから」とか「年齢が」とかネガティブな答えじゃなく自主的に就職する意味を考えるのもいいかもしれないです。深層を探ってみると会社におんぶに抱っこを求めているなーと感じる人は多いですし。

素直にしゃべっていいかも

人材の流動も多い業界なので、「将来会社作ります」とか答えるのもありだと思います。もちろん会社によりますが。でもある種会社に嘘をつくよりもその前提で就職できた方がお互い気持ちいい気がします。むしろクリエイターってそういう人が多い気が…

受からない人の特徴

  • 受かればどこでもいいとかいっちゃう
  • 「作ることが好き」といって完成させたものがゼロ
  • 就職する目的が会社におんぶに抱っこ

最後に

なんかカヤックさんに応募したことで学んだことをもとにクリエイティブ業界に入りたい人のためのことを書こうと思ったけどたいした内容もかけなかった…。思い出したら修正するかもしれないですねー。カヤックさんに友人がいるので今度一緒に仕事できたらいいなーと思ってます。

Androidアプリのリリースとその後にやること

はじめに

パズルの国のアリスリリースから約20日、おかげさまでダウンロード数は300件くらいになりました(ちまっ)。Androidアプリのライフサイクルを考えると、ただ作って公開するだけではダメなんだと感じます。そんなことを書いていきたいと思います。また、アップロードする前に気をつけることも書きます。

名前重要

プログラマが知るべき97のことの日本語版でRuby作者のまつもとゆきひろさんが「名前重要」というコラムを書いています。そのコラムには言葉の持つ力についてかかれていました。たしかにその通りだと感じるとともに、別の意味からも名前が重要だと思いました。

汎用的なワードか特殊なワードか

パズルの国のアリス「パズル」「アリス」のようによく知られたワードを使っています。これはある意味成功でもあり失敗でもありました。成功の理由としてはそのワードでけんっさくをする人が多いこと。検索されればそれだけアプリが発見される可能性はあります。逆に汎用的過ぎて検索結果が多く、検索結果表示が後のほうになってしまいます。そのあたりはバランスが大切ですね。

パッケージ名

Androidアプリにはそれぞれ固有のパッケージ名が必要ですが、これを後から変えることは難しいです。最初につけたパッケージ名を使い続けることになります。

日本だけでダウンロードされるわけではない

Androidマーケットに出せば、出した瞬間世界市場です。僕の作ったアプリで驚いたのはイラクサウジアラビアでダウンロードされていることです。できる限り日本語以外の説明を入れるべきですね、特にユーザーの多くは英語圏で、その中でもアメリカが圧倒的です。最低でも日本語と英語の説明は入れるべきです。

アイコン重要

ゲームなどのアプリは暇つぶしにダウンロードする部類のアプリだと思いますが、自分自身を振り返っても、タイトルよりもアイコンのかわいらしさやスタイリッシュさで選ぶことが多いです。そのアイコンがしっかりしているとまとまったプロジェクトできちんと作られたものだと感じます。

公開直後

まず公開直後にはきちんとアップロードされたことを確認したいですね。APKファイルを保存し、必要事項を入力して公開した後はだいたい30分くらい反映までに時間がかかるので、あせらずコーヒーでも飲みながら待とう。初めて自分のアプリがAndroidマーケットに表示されたときは最高の気持ちです。

ユーザーのコメントは最高のフィードバック

できる限り全てのコメントを読む

Androidマーケットに公開しているとたまにうれしいことがあります。ユーザーがコメントを残してくれることです。中には良い評価・悪い評価があるでしょうがどちらもアプリをよりよいものにするために貴重な意見です。

コメントに対しての対応

ユーザーの意見は制作者側が気づかないことを指摘してくれます。パズルの国のアリスにはBGMが無いこと、
ステージ数が少ないことなどを指摘していただきました。確かに開発時システムやキャラクタのことばかり意識していて、BGMの有無を気にとめてはいませんでした。現状ではすぐに対応できないため、できる限りFacebookページでコメントに対して答えるようにしています。

逆に内容のないもの、特に無礼なものに対しては躊躇無くスパムした方がよいかもしれません。初めてのAndroid 第3版でも書かれていますが、良い意見・悪い意見をフィードバックとして生かすためにはコメントランをきれいに保つことが大切です。

エラー報告

エラーが起こってユーザーに迷惑をかけてしまうのは本当に申し訳ないことですが、ありがたいことにこれについてもコメントをもらえることがあります。制作者側が予期しない操作やテストで再現し切れていない動作によって起こるエラーの報告をもらえるのでこまめにAndroidマーケットのデベロッパーページを確認し、すばやい対応が必要だと思います。

改良・改良・改良

やはり自分が作ったものをユーザーが楽しんでくれることはうれしいし、そのユーザーを失望させたくは無いと誰もが思うでしょう。小さなバグフィックスに始まり、文言や画像の改良、大型アップデートなど常によいものを出すという意識が必要です。それはお金にならないかもしれないし、早く新しいものをという気持ちもわかります。僕も新しいものは作りたい。でも既存のユーザーに失望させてしまっては制作者としての喜びは半減してしまいます。少なくとも制作を楽しむ人にはそうであってほしいし、自分もそうありたい。

まとめ

Androidアプリはアイディアを出して作るだけが全てではありません。それ自体を楽しむ人もいれば、それをお金に変えることを考える人もいます。しかしどの制作者にも共通して必要なのは、ユーザーに楽しんでもらうこと、ユーザーが便利だと思ってくれることです。それはeclipseの中だけでは完結しません。プログラムしかかけない人は制作者にはなれないと思っています。Androidの世界がユーザー・制作者・その他のステークホルダーにとって幸せになれる媒体であることを望みます。

アプリ作ったらFacebookページも作ろう

はじめに

自作のアプリを作ったらやはり多くの人に知ってもらいたいですよね、AndroidマーケットApp Storeは出した瞬間から世界市場になるとは言えど、名の知れたデベロッパーでもない限りいきなりランキングの上位に入ることはできないので、自分でPRをしなければなりません。

PRの方法はいろいろあると思います。YoutubeにPR動画を載せたり、レビューサイトに登録したり…その中でも手軽にできるのがFacebookページを作ることだと思います。今回パズルの国のアリスでもFacebookページを作ってみました。

作り方

作り方については僕よりも詳しい人がたくさんいると思いますのでここでは特に明記しません。というか僕もFacebookは日本で知られるようになる前から使っていましたが、Facebookページは初めて作りました。以下のサイト等を参考にすると簡単にできました。

パズルの国のアリスの事例

http://www.facebook.com/alice.puzzle
f:id:global-peace:20120122161045p:plain
現在パズルの国のアリスFacebookページではwelcome・基本データ・ウォール・写真の四つのタブがあります。

welcome

welcomeページはアプリケーションの概要を表示しています。「いいね!」を押していないと見ることができないような演出も可能ですが、「いいね」と思っていない人に「いいね!」を押させて拡散というのはネットワーク広告モデルというより小さなブロードキャスト広告モデルのような使い方なのであまり好きではなくて使ってません。(僕個人のよくわからない主義なのでまねしなくていいです)

基本データ

アプリケーションのAndroidマーケットでのURLや、制作者情報などを掲載しています。

ウォール

ゲームのヒントや更新情報を載せています。

写真

ゲームのヒントに使う画像などです。

Androidマーケットよりも情報の更新がしやすい

Androidマーケットではアプリケーションのアップデートの際に簡単な更新情報を表示したり説明の部分を変更したりというのはできますが、もっと手軽に詳しい情報を更新するにはFacebookページは最適です。また、既存のユーザーに対しても早く更新情報を知らせることができます。

自分のサイトとの共存

自作のアプリケーションのwebサイトを作るのも効果的だと思います。あるいはすでにサイトを持っていて、コンテンツの一部にPRページを作るのもいいと思います。もしそういうサイトを持っていたとしてもFacebookページは作るべきだと思います。その理由は次の通りです。

  • 作るのが楽
  • 検索に引っかかる
  • ユーザーの見慣れたFacebookインターフェースの規格上で情報を表示できる
  • 目に触れやすい

作るのが楽

Facebookページは作るのが楽なので、作ることにそれほどの労力を必要としません。

検索に引っかかる

Facebookは検索エンジンの検索結果でも上位に入ることは多いので、これを利用する価値はあります。

ユーザーの見慣れたインターフェース

何か情報を探しているときに検索エンジンを利用していると、サイトのレイアウトがバラバラでどこに情報があるのかわからないことがあります。FacebookページFacebookユーザーにとって見慣れたものであるため、統一された規格の中で情報が探しやすいはずです

目に触れやすい

誰かが「いいね!」を押したりするとその人のウォールや基本情報に掲載されるため人の目に触れやすいです。

まずはダウンロードしてくれた人に有益なことを書こう

Facebookページを作るとどうしても多くの人の目に触れてダウンロード数を増やすということを考えたくなりますが、やはり大切なのはダウンロードしてくれた人へのサポートや感謝の気持ちで更新していくことが大切だと思います。もしその中の人がファンになってくれたら「いいね!」を押してくれるだろうと思います。Twitterでよく見る【拡散希望】のようなやり方は信用度が低いので、そのようなことをするよりもファンを増やすことが重要だと思います。(そのためにクオリティを高める必要はありますが…)

まとめ

今のところパズルの国のアリスFacebookページは探り探りで、効果的であるのかなどはまだわかりません。でも作ることにデメリットは無いと思いますし、少なくとも作らないよりは効果を発揮していると思います。ここに書いたことよりもさらによい使い方もあると思います。SNSは双方向にやり取りができるのでいろんな人の反応を見つつ活用していくことが大切だと思います。

これからのAndroidアプリのビジネスモデルの話をしよう

はじめに

前回の記事JavaでAndroidアプリケーション作った② ~SurfaceView~でも書きましたが、先日パズルの国のアリスというアプリをリリースしました。このアプリは現在無料で、広告も一切ありません。また、受注などではなく自分で企画・制作したため収益はありません。つまり現在ビジネスとしては全く機能していないんです。でもAndroidの開発者と名乗るためには現在のビジネスモデル、今後のビジネスモデルを考えていく必要があると感じていますので、自分の展望をいくつか書いてみたいと思います。

現在のAndroidアプリの主なビジネスモデル

  • 有料アプリ
    最も直接的に収益を見込めるのが有料のアプリを作ることでしょう。
  • 一部課金
    Androidは(たしか)iPhoneのようにマーケットのシステムでの一部課金はできない(と思う)ので、会員登録などをして独自、またはサードパーティの課金システム利用します。
  • 広告
    一般的なWEBサービスのビジネスモデルと同じようにAndroidアプリも広告によるビジネスモデルは多いです。
  • プラットフォーム
    GREEやモバゲーなどデベロッパーの作ったアプリのプラットフォームになり、広告や課金など複合的に展開します。Androidマーケットを提供するGoogle自身もそうだといえます。
  • その他
    クーポン・月額課金など独自のビジネスモデルを利用するところもあります。

アプリ市場の拡大とその後の閉塞感

現在はAndroidアプリの市場も拡大傾向にあるのだと思います。有料アプリや広告で収益をあげることが可能で、しばらくはそれが続くと思います。しかし、市場が飽和状態になったときにはどうなるのでしょうか。まずユーザー自身がマーケットでアプリを探すという行為が少なくなってゆくと思います。僕の周りにいるiPhoneユーザーは最初こそ面白くてappストアをよく覗いていたようですが、使い慣れるにしたがって端末に入っているアプリはほとんど固定的なものになっていったそうです。「作れば売れる」というわけにはいきません。

ソーシャルゲームの方向性

おそらくソーシャルゲームが流行出したのはtwitterユーザーが主に利用していたブラウザベースの「Mob Strike」だと思います。その後mixiアプリGREE、モバゲーでも存在が目立つようになり、スマートフォンアプリでも数を増やしています。しかし、最近になってソーシャルゲームユーザーも飽きてきている感があります。GREEではカードゲームのフレームワークを構築し、同じようなシステムで多様的なゲームを作ろうとしているようですが、ユーザー的な視点でみると同じようなゲームをいくつもやってもそれほどの感動が得られるとは思いません。

かつて急激な上昇を見せたGREEやDeNAの株価もここにきて反動を見せている傾向があります。ではユーザーが飽きたときにとるべき道とは何でしょうか。それは次のようなことだと思います。

  • 飽和した日本市場からの脱出
  • 新たなビジネスモデルの構築

DeNAなどは最近海外企業と提携等をして海外へ日本で培ったビジネスモデルを輸出しようとしています。海外への展開は収益を見込めると踏んでいるのでしょう。海外へ目を向けないとすれば新たなビジネスモデルを構築するしかありませんが、それが簡単にできるわけもありません。

ゲームは飽きられることを前提に作るべき

スマートフォンゲームに限らず、ゲーム市場はかつても今も常に出しては飽きられています。どんな名作もそうでしょう。コンシューマーゲームの場合は飽きられるからこそ新たなソフトを開発し売ることができるともいえます。

しかし、課金や広告などのスマートフォンアプリは飽きられることを前提としていないビジネスモデルで、やがて終わりを見ます。それでもどんどんリリースしたり、有料のアプリケーションにしたりという方法もありますが、先述したとおり一人のユーザーがマーケットを覗く機会は少なくなって行きます。

飽きられることを前提とすれば新たな方向性が見えてくる。

僕自身がユーザーとしてゲームに飽きて新たなゲームをしなくなる理由は、飽きてしまったゲームにかけた時間や金は、それをやらなくなったときに無駄になってしまうという失望感があるからです。コンシューマーゲームのクオリティの高いゲームではたとえ少しの時間でも感動が得られるためそれほどの失望感は感じません。

また、人は何かを保存していたいと考える傾向があり、資格マニアが仕事に必要の無い資格を「所有」することにアイデンティティを持ったり、切手コレクターの持つ所有欲などはそれにあたります。昔やったゲームのセーブデータをいまだに保存していたりするのはその「保存していたい」気持ちからで、自分の行った労力やゲーム内で所有しているものを無駄にしたくない気持ちからだといえるでしょう。

労力を保存する仕組み

携帯の端末には容量制限があり、使わないアプリはアンインストールしたいものです。でも先述したようにデータは保存しておきたい。そんなときに僕が感じるのはデータをアプリケーション自体に保存するのではなくそのための仕組みがあればいいのにということです。

GREEでは以前(今も?)フィーチャーフォン向けの簡単なフラッシュゲームで一定のスコアを達成するとアバターに表示できるバッジがもらえました。条件に応じてブロンズ・シルバー・ゴールドなどの種類をもらうことができ、アバターに表示して人に自慢することもできます。非常に良い仕組みだと思いました。

GREEのこの仕組みのように、データそのものではなくそれに見合った代替のものでかまわないと思います。たとえば自社のアプリをクリアした人には会員登録してもらい、一定のポイントを与えたり、ゲーム内で売ったアイテムをポイントに換えたりします。そのポイントは自社のほかのアプリでも登録・利用が可能という仕組みを作れば、ユーザーに失望感を与えずに囲い込むことができるかもしれません。

そのポイントを提携する企業のクーポンとして利用できたりするとモチベーションもあがるでしょう。さらに会員の数が増えたらそのポイント登録を自社のアプリだけでなく他のデベロッパーのアプリからも利用できるようにオープンにすればその幅も広がります。現在特定のプラットフォームを利用して得点などを保存する仕組みはありますが、アプリを横断的に保存できる仕組みはあまり聞きません。グリーやモバゲーでゲームで使えるポイントがあったりしますが、それはユーザーによる課金を仕組み化するものです。

Androidはリアル世界とデータとの架け橋

Androidオープンソースです。現在は主にスマートフォンに搭載されていますが、最近ではタブレット・パソコン・テレビ等にも搭載され、その領域はどんどん広がっていくと思われます。このあたりはiPhoneとの違いが明確になっていくところだと思います。「労力を保存する仕組み」でも書いたようなポイント機能をNFCで街で利用できたりもするかも知れません。Androidアプリ制作者はモバイルに限らず一大プラットフォームとしての利用を考えて行くことになるでしょう。

ライフログ

現在も自分の行ったことのある場所や過去の写真等をSNSで共有して自分のライフログとして利用する人はたくさんいます。Androidの機能で現在考えられている以上のデータがより簡単にライフログとして残すことができるようになるでしょう。SNSによるソーシャルグラフライフログなど、リアル世界とデータの架け橋となるのはAndroidです。

ショッピングも意思表示も全て

街に行けば支払いはAndroidの機能から呼び出す電子マネー、電車に乗るときも同じ。テーブルにスマートフォンを置けばあらかじめ登録しておいたメニューがNFCによって伝えられ、すぐに運ばれてくる。出会いを求めるときはGPSとSNSで意思表示してすぐに出会う…そんな未来も想像しているよりも早く来てしまいそうです。

まとめ

「はじめに」でも書いたように「パズルの国のアリス」はビジネスではありません。ゲームは作るのは楽しいけど、ビジネスのことを考えると、はじめはゲームを作ってもあまり意味は無いのかなと思っていました。でも最近はユーザーを集め、飽きられてしまうことを考慮に入れた上でそれをサステナブルに回転させていけるような仕組みがあればゲームも悪くないのかなと思い始めました。そしてAndroidは小さな画面にとどまりません。今後は全く違った概念のアプリケーションを考える必要があるかもしれませんね。

JavaでAndroidアプリケーション作った② ~SurfaceView~

はじめに

※この記事には開発に関する方法は書かれていません。それらをお探しの場合は検索元か別の記事へ。

前回JavaでAndroidアプリケーション作った① ~XMLによるView~ではXMLでビューを作りましたが、今度は独自にViewを作ります。そして高速に描画をしたいのでSurfaceViewを使うことにしました。また、開発に注力するため今回はデザインを人にお願いしました。

参考ベース

今回参考にしたのはこれです

多くのAndroid入門書ではXMLによるViewの作成などが多いですが、この本はゲーム向けのサンプルなども載っていたので参考になりました。

ネタ

完全オリジナルを作ります。ゲームを作ってみたいと思います。不思議の国のアリスをコンセプトにしたパズルゲームです。SurfaceViewをはじめて使うのにはちょうど良かったと思います。

開発

今までプログラムを書いてきましたが、ゲームを作った経験はほとんどなく、戸惑うことも多かったです。また、今回はデザインをアウトソースしたため自分の開発の他、そういった管理も大変でした。開発自体よりもそっちのほうが大変だったかも。

設計をもっと工夫する必要があった

設計の悪さが出てしまったと思います。ゲームは業務システムとかの感覚で作るのとは違うなと感じました。フィールド変数が多くなってしまったりDRYじゃなかったり…。内部クラスとか作って工夫する必要があるんだろうな…。

スレッドは必須

SurfaceViewはスレッドを主に使います。もう少し細かいところも理解しておく必要があったと思います。ちゃんと使いこなさないと…。

外部リソース

僕の友達には電通の社員がいたり、元電通の先輩がいたり、来年から電通に行く人がいたり…電通関連の人がいて、社員手帳を見せてもらったのですが、あの有名な「鬼十則」が書かれています。その中に「周囲を引きずり回せ~」というのがあるのですが今回は先述したとおりデザインを人にお願いしました。自分の企画に付き合ってくれた彼らには感謝しても仕切れません。

詳しくは「アプリのデザインを依頼するときに重要なこと

完成系

パズルの国のアリス
f:id:global-peace:20120117172908j:plain

評価

今回は完全自分で作ったので評価はAndroidマーケットのユーザーに任せます。どうなりますかね…

まとめ

ゲームを作った経験、自分の企画・開発、管理する立場の経験、SurfaceView…など今まであまりしたことのない経験ができました。開発者としても管理者としても非常にいい経験ができたと思います。

Team & Resource

Team(協力者)

  • 甲斐 文子(フィールド・メニュー画面デザイン)
  • 大内 仁美(キャラクターデザイン・システムパーツデザイン)
  • 若澤 亮(ドット絵キャラクターデザイン・アニメーション)

ほか

Resource

  • 音源:魔王魂

アプリのデザインを依頼するときに重要なこと

はじめに

本日(2012年1月16日)、個人で企画・開発したアプリをリリースしました。(アプリ開発自体の記事はまた別に書きます。)

パズルの国のアリス

デザインに関しては僕はあまりできないので周りのデザインのできる人にお願いしたのですが、自分の開発や外部委託を含めてAndroid開発で感じたこと、大切だと思われることを書いていきたいと思います。

勢い重要

以前読んだ「小飼弾のアルファギークに逢ってきた」という本の中で出てきた「勢い重要」という言葉が印象に残っています。思いついたらその日のうちにプロトタイプを作るくらいの勢いが重要だというような文脈で使われていたと思います。他にも「70%のものを早く作ることが重要」という人もいます。今回この言葉の重要性を体感しました。

最初自分ひとりで企画し開発を進めていましたが、どうにもクオリティの高いグラフィックを描くことができない。思えばシステムとして形にはなっているものの見栄えが悪く世に出せなかったものも過去にいくつかあったように思います。それを理解していたので今回はデザインを誰かにお願いする前提にして、自分はシステム部分に注力することで比較的早い段階で基本的な動きはできました。

とりあえず見せられるものを作ったことで、デザインのイメージを伝えて依頼することができ、デザインとシステムの完成度を高める作業は並行して行うことができました。時間をかけて完璧なものを作ってからと考えていたならもっとリリースは遅れたと思います。

ダメ出しはしよう

使い物にならないものにダメ出ししたり、ダメ出しする必要もなく完璧なものを使ったりというのは良いとして、問題なのは「NO BAD」のとき。使えなくはないが納得できないというときは早い段階でダメ出しした方が最終的に良いものができると思いました。納得できないものを使ってもクオリティは低いし、後から悩むくらいなら早いうちにダメ出ししたほうがいいです。

チームで意思疎通しよう

会社とかだとプロジェクトの開始時には、チームを編成した後スタート会議などをすると思いますが、今回は最初僕が一人でプロジェクトを開始し、周りの人をどんどん巻き込みながら最終的に関わったのが4人になりました。当然プロジェクトに対する理解度やモチベーションは各々違い、全員が全てを把握できるわけではありません。

それが顕著に現れたのが表紙のグラフィックとゲーム中のグラフィックの色の違い。はじめ表紙のキャラクターデザインをラフスケッチで出してもらい、それを元に別の人にゲームグラフィックを依頼しました。そしてあがって来た表紙デザインとラフのデザインの色が違っていたため結果的にゲームグラフィックと表紙グラフィックの色が違ってしまいました。これはデザインを一任し、僕自身が管理を怠っていたことに原因があります。結局ゲームグラフィックの色を変更してもらいました。

明日までとはいつまでか

「何日まで」と指定して依頼するならば必ず「何日の何時まで」と依頼する必要があると思います。たとえば明日までとは今日の23:59までなのか、18:00までなのか、明日の9:00までなのか…を指定していなければお互いの時間を無駄にしてしまいます。

「何日まで」と指定した日にデザインがあがってこなかったので、深夜確認のために起きていたほうがいいのか、それとも向こうが9:00までにあげる予定だから寝てもいいのかなどがわからず、結局その日はほぼ徹夜になってしまいました。「何日の何時まで」と必ず指定しましょう。

不可能な場合は「不可能」と言わせる

クオリティは下げられない。かといって完成を遅くすることもできない。こういうとき「アジャイルサムライ−達人開発者への道−」ではスコープを狭くするといっていますが、今回は使えるリソース的にもその必要もないと思っていました。ただ人に依頼する場合、どこまでお願いしていいのかがわからない。その人で不可能なら別の人に早めにお願いしたい。おそらく依頼される側も自分がどこまでできるのかわからないと思います。はじめできると思ってもやっているうちに不可能となる場合もあるかもしれません。そうした場合に相手としては言い出しにくいと思うので、こちらから本当に可能であるか、現状どうなっているのかということは手遅れになる前に途中の段階で聞く必要があると思います。

納期は近くても遠くても、納品はぎりぎりになるもの

今回依頼したときも、また自分を省みたときもそうですが、納期には常にぎりぎりに納品されます。それぞれ個人にはやることがあり、期日や重要度で優先順位をつけます。当然遠い納期のものは優先度が低く、近くなってようやくあがってくるので常に納品はぎりぎりになります。こちらとしてはそれは当然のことと理解し、自分の作業を早めに終わらせておく必要があります。

状況確認はこまめに

納期直前になってあがってきたものが自分の考えているものと違っていてはプロジェクトが崩壊しかねません。だから途中段階でも、どういう考えでつくっているのかなど状況をこまめに確認することが必要だと思います。

マネージャーを馬鹿にしてはいけない

自分の関わっていない仕事に関して人は簡単な仕事だと考えてしまいます。生粋のギークであればJavapythonもC++も知らないマネージャーに対して馬鹿にした気持ちを持つかもしれませんが、実際管理側にたつと大変さはわかります。作っているだけならば納期のぎりぎりに物をあげればいいと思ってしまいますが、管理する側となれば物が出来上がってこないときのフラストレーションはなかなか大変なものです。経営者は無駄に高い給料をもらっているわけではありません。

アプリケーションの5割はグラフィック

いくらシステムがつくれても、グラフィックがしょぼいとなかなか魅力的なものは作れませんね。見栄えというのはやはり重要で、アプリケーションの5割くらいはグラフィックが握っているような気がします。15パズルのフレームワークとかがあればデザイナーだけで魅力的なアプリケーションがいくつも作れてしまいますからね。

巻き込め

有名な電通の鬼十則に「周囲を引きずり回せ、引きずるのと引きずられるのとでは、永い間に天地のひらきができる。」というのがありますが、何か作りたいと思ったらこのことは結構必要ですね。当然相手にもメリットがあるように。

まとめ

管理側にたつというのはあまり経験もない(部活動くらい?)ので今回はかなり勉強になりました。経験を続けていくとまた違った大変さも見えてくるんでしょうね。技術だけでなくこういう経験もどんどんしていきたいと思いました。

JavaでAndroidアプリケーション作った① ~XMLによるView~

はじめに

※この記事には開発に関する方法は書かれていません。それらをお探しの場合は検索元か別の記事へ。
※アプリケーション自体はこの記事よりもっと前に作ったものです。

やはりAndroidアプリケーション開発者と名乗るにはJavaで作れないと意味はないですね。Javaの経験はServletJSPでサーバーサイドのプログラム経験があるので特に問題はないはずです。また、MVCによる設計の経験は今回の制作でもかなり役に立ちました。

参考ベース

今回参考にしたのは以下の本です。

この本はJava(またはそれによく似たオブジェクト指向言語)やXMLなどの基本が理解できている人には個人的におすすめしたい本です。基本的には書籍に沿って自分で書きながら進めていく本でした。広く浅くという感じですが一通りの制作方法が理解できます。特にAndroid関連の用語やアクティビティのライフサイクルについての章は読んでおくべきだと思いました。

ネタ

PHP(cakePHP)によるアプリケーション開発などで当時コミットしていた就職活動生向けのサービスなどを運営する会社でAndroidアプリをリリースすることになり、その開発を任せてもらいました。TG-WEBという新卒就職試験に出されるWEB上の筆記問題の練習用アプリケーションです。

開発

Javaで開発する場合大きく分けて二種類のビューの作り方があります。

  • XMLを使う
  • ViewやSurfaceViewを継承したクラスを作る。

今回は独自のビューを改めて作る必要はないと判断したのでXMLを選択しました。以下は開発時に感じたことなど。

MVCの考え方が役に立つ

アクティビティでコントロールし、ビューの部分がXML、データベースを使うのはSqliteOpenHelperを継承したクラスに任せてモデルのクラスを作る…など

HTMLのようにうまくいかない

fill_parent?、wrap_content?、TableViewでボーダー引けないの?、スクロールはScrollViewを使うのか…などなど。なんかメモ帳でHTML書いてたときを思い出しました。(中学生くらい?)。当然最終的には理解しています。

XMLでView作ってるけどaddView()多くなってしまった

データベースからランダムに問題を取得して表示している都合上コードでデータ処理をしなければならないので、処理したデータをXMLベースのViewにaddView()してましたが、それならクラスで作ったほうがわかりやすかったのだろうか

評価

  • 株式会社JIZMO代表取締役社長 片山様、ならびに同社取締役IT事業部長 照井様
    特にコメントはいただきませんでしたが納品までを完遂し、見合った評価を受けたと自分では考えます。

まとめ

契約時、職務・制作物であることを公表可ということを確認したので記事として残しました。自分の名前ではないもののこれは世に出たAndroidアプリケーションです。やはり自己満足に終わるのではなく責任を持って世に出すことはスキルアップにもつながったと思います。今回はアイコンの作成や公開までのフローを経験することができたのもよかったです。

仕事を任せていただいた株式会社JIZMO様には感謝してもしきれません。