iOSアプリをリリースしました
2018/11/28にようやく初アプリをリリースすることができました。
最初にこのアプリを作り始めてから2年5ヵ月かかりましたが、プログラミングを生業としていなくても作れるぞというモデルケースの一つになればと思いこの記事を書きます。
あと褒めて欲しかったからですね(正直)
応援歌を暗記するアプリ
日ハム応援歌暗記アプリ(非公式)
Yutaka Shimada無料posted withアプリーチ
日本のプロ野球ではお馴染みの応援歌を覚える為のアプリです。
こんな感じで動きます。
一番最初にプロジェクトを作り始めたのが2016/07/08です。Swiftは(Xcodeは?)ファイル作成するとコメントに日付が入るのですが、その最も古い日付がこれです。
そこから実際にリリースするまで約2年5か月かかったこと、それでもなんとか完成させたことなんかをお話したいと思います。
簡単な経歴
高専(機械科)→大学(情報科だけどプログラミング苦手勢)→SEとかSIerとかの会社で5年程長時間労働してうつ病で休職→退職→アプリ開発会社でObjective-Cでアプリ開発→半年で退職→非IT企業でサポセン(Now)
ほぼプログラムは書かない人生でした。大企業特有のパッケージソフトの保守をやっていたお陰で全くコード書く機会はなかったですね。そして睡眠不足とストレスで無事死亡。
詳しくは下の記事とか当ブログの他の記事を読んでいただければわかるかと。
何故iOSアプリを作ろうと思ったか
休職して1年くらい経って、少しは落ち着いてきたしせっかくだからプログラミング勉強しようかな、iPhone持ってるしどうせだからiPhoneアプリ作ってみたいなと思い、MacBookAir(当時8万円くらい?)を買ってSwiftの入門書を何冊か買ったのが始まりです。ナウなヤングにバカウケな言語だって聞いて・・・。
アプリの内容をこの題材にした理由としては、私は日ハムファン(セはヤクルト)なのですが、球場にはあまり行けずテレビ観戦が多いせいか応援歌を覚える機会があまりなく、ファン歴は長いのですが西川遥輝と中田翔とレアードくらいしか応援歌を覚えられていません。レアード・・・(´;ω;`)ブワッ
球場に行くと応援歌が書かれているプリントを貰えるのですが、載っている順番が背番号順でもなく、もちろん打順に並んでいるわけでもないので、なかなか球場でスムーズに歌うことができません(個人の感想です)
そこで、普段テレビ観戦してる際に打順通りに並んだカンペを持ちつつ歌うことで、暗記することができるのではないかと考えアプリの制作に取り掛かかりました。球場でスマホ見たら危ないのでダメです。
あとiPhone使い始めたのもあってMacが欲しかったのです(小並感)
開発環境
Mac Book Air (11inch,Early 2015)
- 1.6Ghz Intel Core i5
- メモリ4GB
- SSD 128GB
- USキーボード
Xcode
あとはモニタとHDMIケーブルと変換コネクタですね。
USキーボードを選択するあたりにプログラミングへの熱意が感じられる(?)。ちなみにUSキーボードだとニコニコ動画のコメント欄が正常に動作しなかったり、ブログとかで日本語の長文打つのには向いていません。大人しく日本語キーボードにしてどうしてもというなら別にUSキーボード買ったら良いと思うの。
まずやったこと
ひたすら本を読んでいました。
いわゆるSwiftの入門書を何冊か買って、計算機アプリみたいなのを作ってみるということをしていました。
2015年あたりだったらもう動画とかあったでしょうけど、当時はプログラミングを勉強する方法について知識も感度も無く、昔ながらの勉強法でした。プロデューサーさん、写経ですよ!写経!
プログラムは高専生の時にBASICやったり大学の授業や新人研修でJavaやったり、卒業研究で少しだけPHP使ってたりしていましたが、この時はまだよくわかってなかったですね。40人くらい同期がいたのですがもしかしたら文系出身の人より理解してなかったかもしれません。
そもそもどうやってプログラムって動いているんだろうみたいな方が気になってしまって、全然ピンとこなかったんですね。変数とかifとかforとかはわかるのですが、別のファイルの処理にデータってどうやって渡ってるんだろうとか保持するとか返ってくるとかピンときてなかったですね。今は完璧に理解した。
写経を一通りやって、作れるとこ作ってあとはググるという感じですね。
その時初めてQiitaの存在を知りました。大手IT企業のイントラからだとブロックされているんですよね。そういうところやぞ。
なんでそんなに(開発期間が)増えたんだよー!?
前半はうつとの戦い
コード量とか難易度とかそんなに高くないのになんで2年5ヶ月もの月日がかかったかというと、一つはうつ(抑鬱状態)の療養中だったからです。単純に気持ちが落ち込んで何もできない日があったというのもありますが、集中力と記憶力がものすごーく落ちてしまったことが原因です。
まず集中力がないので写経も捗らないし、そもそも30分くらいしかパソコンの前にいられないんですよね。2〜3ページやったらグッタリ休むを繰り返す感じです。のべ2時間/日やれたら良い方でしょうか。ここの処理どうやって書いたらええんや?って思ってググってると時間切れで、翌日また同じところググるなんてこともよくありました。
記憶力も相当落ちてしまっているので、昨日どこまで進めたかとか、昨日やろうと思ってたこととか、ググって試そうと思ってたこととかを忘れちゃってまた考えるとかで後戻りしちゃいます。昨日ならまだ良いけど、通院とか具合悪くてとかで1週間とか10日とか経過しちゃうと実質もう一度です。頭の中白紙の状態から自分のコード解析して次やりたいことを思い出す作業をします。調子悪いとそれだけでまたその日のスタミナは終了してしまい、1行も書いてないなんてことは日常茶飯事です。辛い。でもリリースまで持ってったから偉いと思う(自分で言っちゃうスタイル)
後半は凝りすぎた
半年くらいそんな感じで、ギリギリな状態ですが少しずつ形にはなってきたくらいの時期に、運よくスマホアプリ開発やってる会社に入ることができました。一応この時点で実機で動く程度にはなっていて、多少は良い印象を与えられたかもしれません。
この会社に入って、GitとかGitHubとかRedmineとかSlackとかbacklogとか随分今風なツールを体験することができました。一番大きいのはXcodeで色々小技的なことを知れたことでしょうか。実際に仕事で使ってた言語はObjective-Cでしたけど、StoryboardでViewをどうやって配置したらより良いかとか、ボタンとかもコードで作れるんだとか、データ保持の仕方とか、リリースまで体験できたことは今も生きています。残念ながら方向性の違いで半年で退職してしまいましたが、良い経験でした。
ただその経験を持ってしまったので、今まで作ったアプリをほぼ作り直してしまいました。元々電卓アプリの延長なので、選手のボタンは一個一個UIButtonを配置して一個一個に処理を書いていたりとか、応援歌を表示するページでは画面全体がスワイプしてしまう状態だったのを歌詞の部分だけスワイプされるようにしたりとか。
なんとか乗り越えてリリースまで漕ぎ着けました
他にも作っていて処理の方法が全然わからずに一月以上放置したり、仕事や子供が生まれて時間が取れなかったりしても、辞めなかったからここまで来れましたね。長く苦しい戦いだった・・・。
毎日草を生やせとか、寝る間も惜しんでとかもやり方の一つかもしれませんが、おじさんにはキツイやり方なのでオススメしません。おじさんにはおじさんなりのやり方として「気長にやる」「ちょっとずつやる」「完成まで続ける」あたりを提案します。
ただあまり気長にやり過ぎても終わりが見えなくてモチベーションが下がると思いますので、機能を縮小してリリースするのも一つの手ですね。このアプリ開発期間が長過ぎてSwift→Swift2→Swift3→Swift4と全て経験しました。その際にいちいちコンバートしたりして面倒だったりそのせいでまた余分に時間がかかったりしました。
ここ最近は「雑に出す」「とにかく出す」というのが主流と聞きますし、こだわるのは一回出してからと割り切る必要もあるかもしれませんね。ちょっとずつ機能を増築していくプランにするのはいかがでしょうか。
今後の展望
応援歌暗記アプリについて
そもそもシーズン完全に終わってからリリースしてしまったのでアレなのですが、まず使ってもらえるようにちゃんと紹介ページを作ろうと思います。使い方とかアプリの方には載せられてないのでひとまずWebページ作ろうかな。デザインも本当はちゃんとデザインできる人にお願いしたい・・・。
あとはAPI自作して、スタメン発表されていればボタン押さなくても自動的に選手がセットされるようにしたいとか、選手が移籍したりシーズン途中で応援歌ができた場合にJSONで配信してアプリ自体はアップデートしなくても良いようにしたりとか。Pythonは少し勉強しているのでHerokuとかLambdaとか使ったら良いっすかね?
新しいアプリ案
今考えているのはiOSアプリで2つ、Webサービスで2つ案があるので、なんとか一つ半年以内でリリースしたいですね。本当はアンドロイド版も作りたいけど、Java苦手感あるので・・・。
Pythonはちょこちょこと業務で(勝手に)使ったりとかしているので、VueかReactあたりを勉強してWebサービス作りたいなぁという野望があります。どっちを勉強していったら良いっすかねぇ?(戦争の火種)
みんなも作ってみようぜ
俺もやったんだからさ(同調圧力)
僕も最近知ったんですけど、Qiitaにクソアプリ Advent Calendar 2018って言うのを見つけて勇気付けられています。クソアプリを自称している割には技術力高え気もするけどな?「人の役に立つアプリ」とか考えると何もできないので、「自分が欲しいけど世の中にない」みたいなモノが良いと思います。あと、できる範囲で作る。これ大事。
おじさんでもやってやれないことはないと思いますので、誰かの励みになれば幸いです。おしまい。
何かの参考までに今回のアプリのGithubを載せておきます。