AndroidアプリからiOSアプリに移る君たちへ
前座
とある担当アプリがバージョンアップすることになった。自分はAndroid専門なんだけど、上司がやってきて、
「Androidアプリの設計がわかるなら、iPhoneアプリもわかるよね^^ じゃあ、次から担当ね!」
なんていうふうに言われ、まんまとiOSの担当になってしまった。
そんな同じような境遇に置かれた悲しき君たちへ贈る。
前提
今回はスクラッチではなく、バージョンアップ。
なので、過去の遺産がある。あるんだけど、残念ながらObjective-c。慣れてくれば悪い言語じゃないが、今更モチベーションの上がらない言語ではある。
Object-c自体は学生時代に少しいじった記憶があるんだけど、もうさすがに忘却してしまっている。まあ、それでも、OS-Xもいじったことのない周りの方々よりも幾分かマシなスタートが切れそう、っていう目論見もあったんだろう。
AndroidからiOSへ
せっかくAndroidの心得があるんだから、ある程度はショートカットしたい..
さすがに今から「はじめてのiPhoneアプリ」みたいなのをやる気はない、というより、間に合わない。
写経
とはいえ、やはり感覚をつかむための「何か」がほしい。
この目的でApple公式資料を用いて写経した。ところが最近はSwiftに移行し、Appleのドキュメントもそちらよりになってしまっている。そのため、少し古めの資料を使うしかなかった。土日を使って写経したが、やはり資料が古いところもあり、結構時間がかかった。それゆえ、全て写経はできなかったが、それでもかなり役に立ったと思う。特にX-Codeの使い方とか。
http:// https://developer.apple.com/jp/documentation/SecondiOSAppTutorial.pdf
Java → Objective-c
JavaからObjective-cに入るQiitaが何件かあった。正確なところはわからんのだけど、ノリを理解するには十分。こういうのが欲しかったんですよ。
visible true: Java脳でもわかるObjective-C入門
qiita.com
Reactive Cocoa
こうして、X-codeとObjectve-Cのノリをなんとか掴んだのだが、なんと要所要所にReactiveCocoaが使われている。これがなかなか理解を妨げる。
確かに非同期通信するには相当便利なんだけど、Objective-cがままならない時期のReacitiveCocoaは相当きついものがあった。参考資料以外にも色々読んだが、かなり参照したのが以下に示したもの。
qiita.com
以下の記事は公式の翻訳。うまく翻訳されている。
qiita.com
以下が公式のドキュメント。もうObjective-cはLegacyフォルダに入ってしまっている。
github.com
X-code
あと、おまけでX-Codeのショートカット集。X-codeって通常備えておくべき機能が微妙に隠されてたりして、わかりにくいんよね..インデントとかさあ..そのあたりを解決した。
Xcodeでショートカット覚えてないと効率低すぎ | iii ThreeTreesLight
おわりに
で、このプロジェクトはなんとか終焉を迎えた。ReactiveCocoaがReactiveなプログラミングでほとんどはじめてだったので、いい経験だった。Javaだと、こうは書けないよねっていう。
AndroidでもRxJavaが使われていたんだけど、通信部分は違うライブラリが使われてたりして、あんまり運用されていない様子だった。ボタンも全部インタフェースだったし。一方でiOSはボタンのイベントや通信部分まで至るところにReactiveCocoaが使われていた。ふうむ、親和性が高いのかねえ。
今回は、Androidアプリの対応をし、iOSアプリの対応をこの順で行った。上司はAndroidユーザなので、iOSアプリには興味を示さなかったというオチ..