長い年月と情熱をかけてつくり込んだアプリを満を持してAppStoreにリリースしたものの全くDLされないという経験はありませんか?
多種多様なアプリが膨大に溢れている昨今、個人開発者のアプリが多くのユーザーのiPhoneにDLされるのは非常に難しいと感じています。
しかしながらあまり知られていないだけで「個人でできること」というのは意外とたくさんあります。
この原稿では私が個人開発したアプリの累計が200万DLされるまでに行った取り組みを中心にASO(App Store Optimization)に効果的と思われる手法やアイデアを共有いたします。あなたがつくった素晴らしいアプリをもっと多くの人に使ってもらいましょう!
・効果的なASO(App Store Optimization)
・改善し続ける仕組み
・AppStoreリリース時に意識すること
"Swift Atomics" は、Swiftでアトミック操作(不可分操作、英語ではAtomic Operation)を実現するためのライブラリです。アトミック操作とは、マルチスレッド環境下で値の変更時に別のスレッドから操作を割り込まれないようにするために利用されます(簡単に言えばスレッドセーフな変数を作りたい場合に利用されることが多いです)。
Javaなどの言語にはアトミック操作が可能な変数型が公式にサポートされていますが、Swiftにはまだなく、必要な場合は自前で実装するか"Swift Concurrency"といったサードパーティライブライブラリを利用するしかありませんでした。まだバージョン1.0に達してはいませんが、Appleが公式に開発を進めているだけあって、今からでも注目に値するのではないでしょうか。
本稿では、アトミック操作の概要からSwift Atomicsを使ったアトミック操作の実装、さらには(紙面に余裕があれば)ライブラリの内部実装についてご紹介します。
コンテンツ(予定):
Swiftでは、JSONのNullを許容するキーを、Optionalで表現すると思います。
また、現在はJSONのパースにおいて Codable を利用することが多いと思います。
標準のCodableでは Optional.none をエンコードすると、キーを失ってしまいます。
状況によってはキーを失わず、 JSONのnullを出力したいケースもあるのではないでしょうか。
必要な型ごとに encode メソッドを実装することで実現できますが少し面倒です。
再利用できる手段を取りたいですが、エンコード&デコードを可能にしようと思うと一工夫必要になります。
本稿では、 Property Wrapper と KeyedDecodingContainer を利用した再利用可能な方法をご紹介します。
AppleのCore Dataは古くからあるオブジェクト永続化フレームワークですが、細かな設定ができるために多様なコンポーネントが存在する複雑なフレームワークとなっています。さらにAPIドキュメントの説明は短く設定のバリエーションに対する公式サンプルも存在しないことで、使ってみなければ分からない部分も多く、難解なフレームワークだと敬遠する開発者ばかりでしょう。
本原稿ではCore Dataのセットアップに関するCore Data Stackの構成とデータ読み書きのためのContextの取得と作成について、iOS SDK 10.0から登場したNSPersistentContainerで多様なコンポーネントを知らなくても簡単に利用できることを説明し、それらがどのように構成されているかを図解します。
本原稿によって、iOSアプリ開発でデータを永続化する必要に迫られた際、安易にOSSを導入せず公式が提供する基礎を探るための原稿となれば幸いです。
楽天グループが運営するラクマでは、旧フリルから含めて今年の7月末で9周年を迎え、10年目に突入します。
振り返ってみると、さまざまな歴史があり、そして弊害もありました。
旧ラクマとのアプリ統合、大企業ならでは開発スピード、ビジネス側との折り合い など...
いろんな要因が重なり、アプリにはレガシーな部分がたくさん残っています。
そんな長寿のアプリですが、ここ半年程でソースコードのObjective-Cを25%駆逐し、Swiftの占める割合が90%近くになりました。また、最新のOSとその1つ前しかサポートをしない方針のため、Combine、SwiftUI、Compositional Layoutといった新しいAPIを導入を積極的に行ってきました。
そんなラクマのiOS開発における、リファクタリングと挑戦を紹介したいと思います。
iOSアプリ開発でよくあること(俗にいう「あるある」)を4コママンガでめちゃくちゃ面白く表現します。
昨年掲載された4コママンガはXcodeがアップデートできないだけで終わったので、今年は実際の開発のあるあるが言いたいです。