iOSアプリ開発 UI実装であると嬉しいレシピブックシリーズに関するアップデート情報

Fumiya Sakai
11 min readDec 23, 2020

--

2020年は同人誌だけですが、まかない編&おもしろ編といった番外編も執筆しました✨

(Swift/Kotlin愛好会AdventCalendarの23日目の記事になります)

はじめに

2018年9月に「iOSアプリ開発 UI実装であると嬉しいレシピブック」シリーズのVol.1を初めて同人誌として頒布するところからスタートして2年以上が経過し、ありがたいことに、これまでに執筆した同人誌4冊のうち2冊が商業誌となったことは本当に嬉しくもあり、今後とも引き続き既刊の運用&新刊の執筆は継続していければと思います。

現在頒布している同人誌のラインナップ

現在販売している商業誌のラインナップ

※ UI実装であると嬉しいレシピブックVol.1・Vol.2については紹介しているコードベースは同じものになっています。

以前に同人誌・商業誌にてUI実装であると嬉しいレシピブックシリーズを購入して頂きました方やこれからご購入を検討している方が、今後とも本書を末長くご利用できるように、この度下記の環境に合わせて掲載しているサンプルコードをアップデートしています。

  • macOS Big Sur 11.1
  • Xcode 12.3
  • Swift 5.3
  • CocoaPods 1.10.0

現在Boothに公開している電子版の書籍についても、現在アップデートした内容を反映する作業を進めていますので、完了次第Twitter等でご報告できればと思います。

書籍に掲載しているサンプルコード

書籍に掲載しているサンプルコード自体についてはすでに前述した通りアップデートが完了しております。画面構造やサンプルの仕様については大きく変更を加えていませんが、紹介しているライブラリが古くなってしまっているものもある点があります(こちらも次のアップデートあたりで調整できればと考えています)。

※ サンプルの不備や不具合等を見つけた際におけるGithub等でIssueやPullRequestを受け付けております。また、紙版及び電子版をご購入頂きました方の感想や書評等につきましてもお待ちしております。

本書掲載サンプルにおけるXcode12 & Swift5.3への対応事項紹介

ここからは書籍掲載しているサンプルコードにおいて、iOS14への対応を実施した箇所や利用ライブラリのアップデートに伴う変更点等を簡単ではありますがご紹介できればと思います。紹介しているUI実装サンプルの大部分はUIKitを利用して実装しているものになりますが、意外とライブラリの仕様変更があったものもあり、その点に関する修正内容が多めです。

※ 昨年に対応した書籍掲載サンプルコードにおけるiOS13対応の内容につきましては、【実装MEMO】「iOSアプリ開発 UI実装であると嬉しいレシピブック アップデートのしおり🔖」と技書博の思い出 をご覧頂けますと幸いです。

iOS14に合わせた変更&追記対応

iOS14から追加されたUIKitに関する新機能や仕様変更のうち今回は、

  1. UINavigationController左上にある戻るボタンをロングタップした際に一気に最初の画面に戻る機能への対応
  2. URLを外部ブラウザで開く処理においてSafari以外をデフォルトブラウザに設定している場合にcanOpenURLがfalseとなる点への対応

の2点に関して対応しております。

UICollectionViewに関するレイアウト表現及び実装に関するアップデートやUIImagePickerControllerにとって変わるPHPickerViewControllerといった新しいAPIの登場による大きなアップデートだけではなく、前述したコードの様な細かな点に関するアップデートもありますので、下記の資料等を参考にしながら変更点の概要と対処方法を知っておくとより理解が深まるかと思います。

UI実装であると嬉しいレシピブックにおける変更点等

基本的に変更した部分としては、前述したiOS14への対応箇所のみとなっています。

既存実装に対しての細かな対応としましては、第2章で紹介しているサンプルコードの中で「カスタムトランジションを実施している部分に関する調整対応」を加えた部分がありますので、こちらはリンク先の変更差分を参照して頂けますと幸いです。

利用ライブラリに関する補足事項としましては、第4章で利用しているプログレスバーの様な振る舞いをするライブラリ「KYNavigationProgress」のバージョンが古いこともあり、Podfileにバージョンを固定するための記載をしています。

このライブラリを利用せずに類似したUIを実装したい場合には、UIProgressView等の利用を検討してUIPageViewControllerでの処理と連動させる形でアニメーション処理を実行するような方針をとってみるのも良さそうに思います。

UI実装であると嬉しいレシピブックVol.2における変更点等

こちらはOSSで公開されているライブラリを活用したサンプルとなっていることもあり、前述したiOS14への対応に加えてライブラリの仕様変更に伴う変更点の修正を実施しています。

特にAPI通信をする「Alamofire」のメジャーバージョンが上がったことによる対応や比較的簡単にセミモーダル表示をする「FloatingPanel」のアップデート部分が大きな変更点になっています。

記載方法が大きく変化している点もありますので、よく活用するライブラリにつきましてはライブラリのREADMEや掲載サンプル等に関してもXcodeやSwiftのバージョンアップ対応をする際にチェックする様に心掛けておくようにしましょう。(とは言っても結構忘れがち…)

既存実装に対しての細かな対応としましては、第2章で紹介しているサンプルコードの中で「ViewModel側の実装を一部調整」を加えた部分がありますので、こちらはリンク先の変更差分を参照して頂けますと幸いです。

利用ライブラリに関する補足事項としましては、第1章で利用しているタブ切り替え時アニメーションを実施するライブラリ「TransitionableTab」と第3章で利用しているUIPageViewControllerの動きと連動する上タブ表示を実施するライブラリ「PinterestSegment」のバージョンが古いこともあり、Podfileにバージョンを固定するための記載をしています。

TransitionableTab及びPinterestSegmentを利用して実装しているアニメーション表現につきましては、以前に書いた僕の記事(【実装MEMO】UITabBarControllerでAnimationを実装するためのヒント)や(メディア系アプリでよくあるUIを実現した簡易サンプル)でも触れている方法を応用することで近しい動きは実現できるのではないかと思います。

UI実装であると嬉しいレシピブックまかない編における変更点等

iOS14への対応及び第2章で利用しているライブラリの1つに仕様変更に伴う変更点の修正、それに加えて第3章でご紹介しているiOS13から利用可能なCombine Frameworkを利用したMVVMパターンでのデータ取得部分に関するテストコードを新たに追加した形となっています。

既存実装に対しての細かな対応としましては、第1章で紹介しているサンプルコードの中で「AutoLayoutの制約に関する調整」を加えた部分があります(こちらはAutoLayoutの制約で警告が発生した部分の修正になりますがGUI上での調整です)。

UI実装であると嬉しいレシピブックおもしろ編における変更点等

基本的に変更した部分としては、前述したiOS14への対応箇所のみとなっています。

おわりに

今年はiOSアプリ開発に加えてAndroidアプリ開発の方にも携わるチャンスにも恵まれて結構自分の中では大きな変化があった中身がとても濃密な1年となった様に思います。初めてKotlin愛好会の方で簡単なLTをしたりその他の登壇イベントでもiOSのUI実装に関するトピックに加えて、Androidアプリ関連のトピックについても登壇したりとなかなか充実した時間をプライベートでも過ごすことができていた様に思います。

まだまだ挑戦してみたい新しい技術(現在取り組もうと思っているのはFlutterとGoを考えていたり…)もありますし、引き続きiOSのUI実装関連の深堀りやAndroidアプリ開発にも注力していければと感じている次第です。

--

--

Fumiya Sakai
Fumiya Sakai

Written by Fumiya Sakai

iOSアプリのUI実装が好きな元デザイナーからジョブチェンジをしたエンジニア。QiitaやGithubなどでもUI実装に関するサンプルや解説記事を投稿したり、たまに登壇しています。こちらでは実装の過程で出てきたメモとかを展開します。

No responses yet