プログラミング初心者がSwiftに出会ってからアプリをリリースするまで

Pocket

この記事は CAMPHOR- Advent Calendar 2016 の15日目の記事です。

 

プロローグ

大学入学祝いのパソコンは12-inchのMacBookを選んだ。
USB Type-Cのこととかスペックが低いこととか気になったけど、もう見た目がかっこいいからこれに決めた!ってなった。振り返ってみれば、この時に自分が好きでいられるパソコンを買ったことはとてもいい選択だったように思う。
パソコンを買ったら、もう可愛い可愛いMacBookが使いたくて自然にプログラミングを始めようと思い立った。よし、Pythonやろう。そう思っていた。
Pythonの本を買って進めていたのだけど、古い本を買ってしまったので設定などが本通りにうまくいかず、結局やめてしまった。それでも心の何処かにプログラミングしたいなという思いがあり、数ヶ月後にとうとうSwiftの勉強を始めたのだった。

 

なぜSwift?

僕がSwiftを触り始めた理由は「自分のiPhoneで動くアプリが作りたかったから」である。
iOSアプリを作る時の言語は大抵の場合はSwiftとObjective-Cの二択だったが、Swiftの方が未来ありそう!と思ってSwiftを勉強することに決めた。

 

Swiftはどんな言語?

Swiftという言語は2014年に発表された言語で、iOSやOS X上で動くアプリケーションを作成できる。Swiftは「モダン、安全、高速、インタラクティブ」らしくて、安全性とか高速かどうかとかはわからないが、少なくとも初心者の僕にとっては始めやすかった。それはMacBookではXcodeという統合開発環境が簡単にインストールできたからだと思う。それに、文法も慣れれば分かりやすいと感じられた。

 

どのように勉強したか

本を読んだ

まずはこの本を読んだ。(リンクは改訂版のもの。)

名前の通り、僕は挫折することなくこの本を読み終えることができた。書いてあることはとても基本的なことなのだが、説明がわかりやすくてプログラミング未経験者でもスイスイと読み進めることができた。

しかし、この本を読み終えたところで自作アプリを量産しまくれるわけではなかったので、次はもう少しレベルが高い本を読もうと思った。もうコードを書きまくってしまえばいいんだと思って、サンプルコードが豊富な本を買った。(リンクは改訂版のもの)


サンプルコードを書き写して、わからないところを調べて、という作業を繰り返すうちに理解が深まっていった。

そうこうしているうちに自分が作りたいアプリを作る力はついたので、試しに自分用のアプリを作ろうと思った。

実際に自分用のアプリを作った

占いアプリ

とりあえず何か動くものを作ろうと思って、占いアプリを作った。

 

ちなみにSwiftのコードはこんな感じ(抜粋)

@IBOutlet weak var uranaishower: UILabel!
@IBAction func uranaibutton(_ sender: UIButton) {
 let num = arc4random_uniform(501)
 if num == 0 {
  uranaishower.text = "大吉やで"
 }
 else if num % 50 == 1 {
  uranaishower.text = "吉やで"
 }
 else {
  uranaishower.text = "大凶やで"
 }
}

こんなコードなら、ほんのちょっと勉強したら書けそうだろう!

これで501分の1の確率で大吉、501分の10の確率で吉、501分の490の確率で大凶が出るという鬼のような占いアプリが完成した。

大吉が出たら「よっしゃ!」とか言ってしまう。

平方数計算

次に、(少なくとも僕にとって)実用的なアプリを作った。
平方数を計算したり、

逆に平方数が与えられて何の平方数かを答えたり、

という、平方数が大好きな人が楽しめるアプリを作った。
10問正解すると、記録を教えてくれる。

自分用なのでUIがショボすぎるのは目をつぶってほしい。

このアプリはもっと色んな機能を追加すればリリースできるレベルまでいけそうだが、最近は全く触っていない。

アイディアメーカー

アイディアを生み出すためのアプリを考えた。謂わばアプリを作るためのアプリである。
ボタンを押すとランダムな単語を二つ返してくれる。これはまだまだ改良していけそう。そしていい感じに改良できたら自分のために使ったり、リリースしたりできそうだ。

ここで出てくるランダムな単語は、全て手書きで配列を作った。改良する時にはもっと自動化して大量の単語をデータに加えたい。

Touch the Numbers(拡張版)

Touch the Numbersというゲームを拡張して、本家では5×5マスだったものを3×3から10×10まで遊べるようにした。

3×3はやる気が起きるが、

10×10は全然やる気が起きない。
さらに、

鬼モードというのがあり、

正解しても、数字が消えない。これは全くやる気が起きない。
ちなみに成績(何秒でクリアできたか)をそれぞれのモードで1位から7位まで記録できる。

このアプリの作り方だが、マスを全てボタンにしてそれぞれのボタンにタグを割り当て、順番通りにボタンを押した時だけそのボタンが消えるように実装している。
僕は基本的に、タッチした場所を検知するというやり方じゃなくて、全部ボタンにしてしまうという作戦を使ってアプリを開発している。

リリースするアプリを作った。

アプリは今までに二つリリースした。
手作りRPG」と「1to10」である。
手作りRPG」に関してはゲームバランスの調整や、初めてのリリースに戸惑ったのでリリースするまでに1ヶ月くらいかかったが、「1to10」は制作開始から1週間くらいでリリースまでできた。

 

アプリをリリースする方法

Apple Developer Programへの登録

一年間に100ドルぐらいかかる。実は日本の場合は20歳以上しか登録できなくて、登録当時僕は19歳だったので親のApple IDで登録した。
認証作業の煩雑さはあったが、無事登録できた。この登録さえできれば、誰でもApp Storeでアプリをリリースすることができる。

アプリをリリースする

Appleの審査は厳しいと聞いていたが、難なく通過できた。
RPGの方はアプリの説明欄のところに、「最近のRPGは確かに綺麗なグラフィックがあって複雑なシナリオがあって十分楽しいのかもしれない。ただ、最近のRPGはありふれた内容で、本当に必要な要素がどんなものかというのは見えづらい。このゲームはシンプルで革新的でそれでいて内容にこだわりを持っている素晴らしいものだ。」みたいなことを自信満々に書いたことがうまくいった要因かもしれない。

 

エピローグ

アプリをリリースすることで目的を達成した感があって、プログラミングから遠のいた時期もあったが、なんだかんだでまた他のアプリを作ろうというモチベーションが湧いてきている。そもそも僕が今まで作ってきたゲームは全てサーバーとの通信を行なっていないので、サーバーの知識など全くなくてもゲームを作ることが出来たのだが、せっかくなのでサーバーと通信をするアプリを作ろうと今は考えている。

Pocket