Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

Swift+Core DataによるiOSアプリプログラミング

iOSエンジニアの西方です。 先月、正式にマネーフォワードにジョインしました。

私事ではありますが、先月、著書を発売させていただきました。 book Swift+Core DataによるiOSアプリプログラミング http://www.amazon.co.jp/gp/product/4839954887/

マネーフォワードにはどのようなエンジニアが所属しているかの紹介を兼ねまして、書籍の紹介をさせていただきます。  

どんな本か?

タイトル通り、本書はCore Dataの解説本です。

一通りアプリ開発を経験したことのある方が、ステップアップのための1冊になるように意識して書きました。

メインは4章から9章に渡り続くチュートリアルです。

どんなに高度な道具でも、その機能の素晴らしさを知っただけでは使えるようにはなりません。機能一覧だけでなく、使用方法も同時に知る必要があるのです。本書のチュートリアルを通して、「Core Dataを理解している開発者」ではなく「Core Dataを使える開発者」になっていただきたく、渾身のパワーを込めて用意しました。

しかし、チュートリアルだけで全てを理解するのは難しいので、基本事項の解説を3章に載せました。複雑に絡み合う(しかも名前が長くて覚えにくい)各モジュールの関係を、体系だって整理してあります。

そしてもうひとつ、チュートリアルに入る前に解説しておきたいことがありました。

アプリ作成にはUIの実装が不可欠です。しかし、チュートリアルの中でUI実装の詳細も解説してしまうと、本質がどこにあるか分からなくなり、読者の方々を迷宮に誘い込んでしまうかもしれません。

そこで、チュートリアルで使うUI実装の基本技術を、あらかじめまとめて解説することにしました。この解説が2章に位置しています。UI実装に自信があれば、この2章は読み飛ばしていただいて構いません。

また、チュートリアルのあとには、少し高度な内容を解説した章も設けてあります。  

目次紹介

目次と併せて、各章の概要を紹介します。 ※ 詳しい目次は出版社のサイトにあります。 https://book.mynavi.jp/ec/products/detail/id=50729

Chapter1 概論

導入のための章です。 この本を読む意義がどこにあるのかが分かるよう、Core Dataの魅力や機能概要をまとめてあります。

Chapter2 UI開発の基礎

基本中の基本であるビュー・ビューコントローラ・イベントハンドリングの三大要素に始まり、画面実装には欠かせないStoryboardやAuto Layoutの理論と実践へと進みます。

最後に、チュートリアルの中でも使っているテーブルビューの実装方法を解説します。

Chapter3 全体構造と関連モジュール

チュートリアルに入る前に、Core Dataの全体構造を解説します。

ここでの目的は登場人物をおおまかに把握することです。多少の疑問が残っていても先に進んでしまってかまいません。チュートリアルを進めながらも必要に応じて本章に戻り、モジュール構成の再確認などに活用してください。

Chapter4 データモデルの準備

ここからChapter 9まで、チュートリアル形式での解説が続きます。 チュートリアルでは、書籍の管理をするためのBookListアプリを作成します。

本章では、データモデルの基礎を構築します。

実際にアプリを開発するとき、いきなりデータモデルを完成形まで持っていく(持っていける)ことはほぼ皆無に近いでしょう。本チュートリアルも例外ではありません。最初は最低限の実装だけに留め、後々拡張していきます。

Chapter5 データの管理

UIの実装に入ります。テーブルビューを使って画面を用意していきますが、画面遷移はまだ行いません。シンプルなデータモデルを用いて、UIとCore Dataの連携における基本事項を解説します。

Chapter6 データモデルの拡張

Chapter 4ではデータモデルに最低限の実装しかしていません。本章では、このデータモデルを拡張しながら、モデル拡張の方法や注意点などを解説します。

Chapter7 データの編集

本章と次のChapter 8では、Core DataとUIをつなぐ上で非常に重要な内容になっています。

本章では、ひとつ画面を追加しデータの編集を可能とします。データ編集後に、保存もしくはキャンセル(変更を破棄)した内容と画面上の表示に不整合が起きないようにするために、何が必要なのかを解説します。

Chapter8 高度なデータ編集

本章では、さらに画面を追加し、より複雑なデータ編集に対応します。複雑なデータ編集に対応するために、複数の管理オブジェクトコンテキストを利用します。

Chapter9 Fetched Results Controller

チュートリアルの締めくくりはFetched Results Controllerです。

本章では、これまで一生懸命作り上げてきたビューコントローラの1つ(メインのビューコントローラ)を、大胆にもザクザク切り刻んでいきます。

Fetched Results Controllerを利用することで、どれだけコードがシンプルになるのかを、是非実感してみてください。

Chapter10 Core Dataの効率化

本章以降はチュートリアル形式ではなく、基礎を一歩超えた内容をテーマごとに解説しています。

Core Dataの効率化と題したChapter 10では、管理オブジェクトのライフサイクルとフェッチについて深掘りします。

Chapter11 Core Dataの応用

より高度な内容に進みます。並列処理やパフォーマンスへの言及、そしてテストとデバッグについても解説します。

また、Playgroundを使ってCore Dataで"遊ぶ"方法も解説しています。Core Dataは取っつきにくいと思っている方は、まずは少し遊んでみるのもいいかもしれません。

Chapter12 iCloud

最後はiCloudへの対応方法です。iCloudの利用においては、注意すべきこと(特に運用上の注意)も色々とありますが、ほんの少しのコード修正だけで対応できるのは魅力です。  

チュートリアル作成のススメ

本書の紹介とは少し離れますが、開発者としてのスキルアップのために、チュートリアルの作成にトライすることをお勧めします。

普段のアプリ開発では、機能を実装するためにコードを書いています。対するチュートリアル作成では、何かのテーマを決めて、その理論や実装方法を解説するためにコードを書くのです。

機能実装のゴールはその機能が動くことですが、チュートリアルのゴールは解説書として成立することです。解説対象としているテーマについて理解を深めないことには先に進めません。さらには、本質以外のコードを極力減らすために、実装手順の試行錯誤が必要になります。

結果的にこれは、普段の開発でも見通しのいい設計をする訓練につながると感じています。

チュートリアルの作成を通して、ぜひ普段とは違う脳みそを刺激してみてください。  

最後に

マネーフォワードは女性にもとても優しい職場です。育児をしながらでも、チームでの仕事を存分に楽しめます。

お母さんエンジニアの皆様も、そうでないエンジニアの皆様も、ご応募お待ちしております。

【採用サイト】 ■マネーフォワード採用サイトWantedly | マネーフォワード

【プロダクト一覧】 ■家計簿アプリ・クラウド家計簿ソフト『マネーフォワード』家計簿アプリ・クラウド家計簿ソフト『マネーフォワード』 iPhone,iPad家計簿アプリ・クラウド家計簿ソフト『マネーフォワード』 Androidクラウド型会計ソフト『MFクラウド会計』クラウド型請求書管理ソフト『MFクラウド請求書』クラウド型給与計算ソフト『MFクラウド給与』経費精算システム『MFクラウド経費』消込ソフト・システム『MFクラウド消込』マイナンバー対応『MFクラウドマイナンバー』創業支援トータルサービス『MFクラウド創業支援サービス』お金に関する正しい知識やお得な情報を発信するウェブメディア『マネトク!』