Help us understand the problem. What is going on with this article?

オブジェクト指向初心者が、Swiftでアプリを開発するまで

More than 3 years have passed since last update.

Swiftアドベントカレンダー18日目を書きます。

昨日のTaji-tajiさんのような高度な話ではありません。
本記事には、技術要素はあまりありません。ポエムです。ゼロではないけど...。

はじめに

おおぐちさとる(Twitter:o_chicchi Facebook:ohguchi.satoru)と申します。

Swift愛好会に参加するようになって、けっこうな時間が経ちますが、Qiitaに書いたことも無ければ、談義をしたこともないので、知らない人は多いのではないかと思います。なので、アドベントカレンダーの空きを利用して、自己紹介も兼ねて、最近のアプリ製作の紹介、合宿でやったことを書きます。

どんな奴

都内の中堅SI会社に勤務するSAPテクニカルコンサルタントという怪しい肩書きの持ち主です。
たまに開発もしますが、メインはインフラ寄りのエンジニアです。スキルの振れ幅大きいので、要は何でも屋とも言います。

経歴は、ハードウエアエンジニア、制御系SE、社内SE、ネットワークエンジニアを経て、現職です。その昔、NEC PC-8001 に出会い、PC-8801mk2SR に運命変えられました。今は、ハード製作といった下のレイヤーから、けっこう大きめなサーバの上に乗っかるアプリケーションまで、趣味や仕事で扱っています。

あと、資格コレクターなので、最近世間で有名な逃げ恥の平匡さんが持っているデータベーススペシャリストも保持してます。高度情報処理者資格もずいぶん集めました。

そのほか、昔、アマチュア無線でパケット通信やっていたり(MO-RBBSもやっていました)、パソコン通信(Nifty-Serve、PC-VAN)なんかもよくやっていました。なので、無線とか通信など、その辺も若干詳しいです。

経緯

Objective-C もやっていたんですが、なかなかリリースできるまでの経験まで至らず、Swift になっちゃったねということで、書籍を買い直しました。言わずもがな、世界一本ですね。諸般の事情で、2冊あります。

IMG_0009.jpg

この本が縁で、RainbowApps のプログラミングスクールにも行きまして、著者の高橋さんに教わり、そこで知りあった人たちの縁で、Swift愛好会といったコミュニティの勉強会に参加するようになりました。

スクール云々より、この出会いはとても大きかったです。

iPhoneアプリについて

その RainbowApp に行った中で、アプリを作りました。

[AppStore] Simoncats
https://itunes.apple.com/jp/app/simoncats/id1078064315?mt=8

IMG_0008.jpg

SimonCats と言います。サイモンゲームというのがあるのですが、その昔、PC-8001上の N-BASIC で作って楽しくてハマったので、なんとなく移植してみようと。

移植のサンプルプログラムを作る過程で、親友がイラストを描いてくれまして、それを組み込んで、少しルールを変えてリリースしました。ほとんど、この絵に支えられていると言ってもいいですね。友人に感謝です。

ちなみに、何度かバージョンアップしているので、リリースしたときとは、もう、ずいぶん違っています。

技術要素

このアプリのウリですが、

  • 可愛らしいイラスト
  • エクステンションを使って枠線付きボタンを StoryBoard で描く
  • 多言語対応(英語、日本語)
  • Admobの広告処理をSwiftで記述
  • サウンド処理

再活用できそうなTipsは、別記事にまとめました。
こちらを参照してください。

[iOS][Swift]iOSでボタンやラベルの枠線を Storyboard で簡単に描く方法
http://qiita.com/o_chicchi/items/c4469e956c2118226a2d

[iOS][Swift]Admobの広告をSwiftで表示する
http://qiita.com/o_chicchi/items/da8ebfd1d4536f29398b

合宿

アドベントカレンダーにもありますが、今年、プログラミング合宿に行きたい思っていたので、Swift愛好会の合宿に参加できて、しかも、土善旅館とかテンション上がりました。事務局をやってくれる方々に感謝です。

その中で作業していたのは、Swift3.0 への移行でした。

問題になっていたのは、Admob の広告のライブラリで、もともと、Pods を使わずにプロジェクトを作成していたので、Admob のライブラリを削除した上で、Pods 使用に切り替えて、最新版を再導入したんですが、Xcode のリンク時のエラーを解消できず、プロジェクトを作り直しました。StoryBoardが壊れたりしたのを直し、細かい辻褄があわないところを修正して、リンクが通ることを確認し、Swift3.0へのアップデートは完了しました。本来は、コードの置き換え中心になるはずなんですが、すごく苦労しました。

あと、AVPlayerLayer あたりが使い方が変わっていて、ゲームのチュートリアルの処理を大幅に修正しました。

いまさら参考: Swift3でAVplayerLayerをUIViewのレイヤーとする時
http://qiita.com/noppefoxwolf/items/8c503923b3da23484f30

リリースに向けて

仕事もそれなりに忙しく、いろいろな活動をしている影響で、進捗は芳しくないのですが、書きかけの GameCenter の処理を頑張って組み込んで、リリースに向けた準備をしていきたいと思います。
次期バージョンでは、イラストの追加も予定していまして、既に素材はあるので、加工して組み込みたいと思います。

課題

いくつか課題があります。

  • ゲームのメインの処理のプログラムコードの書き方が決していいとは言えないです。状態管理を変数で管理していますが、Swiftには、enum といういい命令があるのですが、活用できてないです。

  • 全体的なコード量が多くなっていて、冗長なところも目立つようになってきました。昔、記述したところを見直して、よりスマートにきれいにしたいです。

そもそもは、力業で、ごりごり書いて、リリース優先した遺産ですね。

まとめ

Swift愛好会は、普段の仕事の中でコードを書かない私にとって、自分のモチベーションを保つ上で非常に重要な会です。今後も続けて下さい。@es_kumagaiさんのSwiftチャチャチャのような高度な談義や、いろいろな人のコードの書き方を知って、頑張ってついてこう、頑張ろうと思っています。

そのほか、私自身は、iPhoneのアプリ開発はもちろんのこと、AWS、Bluemix、IoT周辺(RaspberryPi、Arudinoなど)でも遊んでいるので、興味ある方は是非一緒にやりましょう。

それと、初心者の皆さんへ、アプリのリリースはしてみるものです。世界が変わります。ホントに。

明日は、かの有名な dotstudioのびすけさんの投稿です。MashupAward2016IoTLT の優勝おめでとうございます。

最後まで読んでいただきありがとうございました。

以上

o_chicchi
AWS、Bluemix、Siwft(iOS)、SAPとか楽しんでる人です。 iPhone用ゲームアプリ公開中: https://itunes.apple.com/jp/app/simoncats/id1078064315?mt=8
http://blog.maripara.org/
iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away