個人的に作り始めたKCSのiOSアプリについて

こんにちは。KCS所属の電気情報工学科3年のふみっちです。24日目のアドベントカレンダーを担当します。

昨日は竹内くんがYoutube班の活動について記事にしてくれていました。自分もYoutube班のメンバーとして動画を上げているのでこの場を借りて、来年中に1000人目指しているのでKCSのYoutubeチャンネルの登録ぜひお願いします。

https://www.youtube.com/user/kcs1959

 

個人的にKCSのiOSアプリを作り始めました

文字通りですが、個人的に(←ここ重要)KCSのiOSアプリを作り始めました。今日のアドベントカレンダーはこれについての話をさせていただきます。

アプリの用途としては「KCSに興味があるKCS生ではない人間」「KCSの所属している人間」の2属性のユーザーに使ってもらうことを想定していて、機能としては誰でも使える機能として「KCSの活動の紹介・新歓情報やイベントの共有フィード」があって、KCSに加入しているユーザーが使える機能としては「スケジュール管理・通知」あたりを考えています。

KCSはDiscordで基本的に活動しているのでそこら辺から良い感じにデータを取得してきて、まとまった情報をアプリで確認できると良いなと思っています。(下のツイートは進捗報告をした際の状況です)

 

そして、一昨日の12/22に作り始めたのでまだ全然進んでなかったり、完成する時期も未定です。一緒に手伝ってくれるよっていうKCSの人・Swift分かるっていう人いたら声かけてください!

 

このアプリについて

せっかくアドベントカレンダーなので技術的な話をするということで、このアプリで使っている技術を紹介します。

SwiftUI

SwiftUIという宣言的にUIをレイアウトできるフレームワークを使用しています。SwiftUIの他にStoryboardというInterface Builderがありますが、そちらよりも最近発表された新目の技術です。他のフロントエンドがわかる人はFlutterやJetpack Composeと近いものです。

 

SwiftUIのプログラム

Swift Package Manager

Swift Package ManagerというApple公式のパッケージ管理ツールを使っています。パッケージ管理ツールとして他にもCocoapodsやCarthageなどあると思いますが、公式という信頼感もありSwift Package Managerを個人的には最も高い優先度で使用しています。

また、モジュール管理もSwift Package Managerなら可能で、実際にこのアプリでも「Core」というUIに関連しないプログラムをまとめたモジュールと、「App」というUIに関するプログラムをまとめたモジュールを作成して、モジュールの分割を行なっています。

モジュールを分けるメリットとしては、コードが綺麗に書きやすくなったり、今回の場合だと、App→Domainの関係(DomainはAppに関しての知識を持たない)が自然と出来上がることが挙げられると思います。

あまり依存関係がピンとこない人向けに説明すると、例えばTODOアプリを想定した際に、TODOのデータ構造であったりTODOの永続化の方法などはどのようなUIを構築したとしても大差はないと思います。そのような場合にTODOのDomainモジュールさえ一度作っておけば、TODOのUIデザインが多少変わっても、同じDomainモジュールを使いまわせたり、UIの変更によってDomainモジュールの修正が生じないことが考えられ、これは大きなメリットであると考えられています。

Appでやること Domainでやること
UIの構築 データの永続化
Domainを利用 アプリ自体のロジック
DomainデータをUIデータに変換 外部サービスとの連携

(DomainはUI以外のロジックという観点で分離しています)

また、Package.swiftというファイルを用いてPackageの定義をします。興味がある方は下のURLを覗いてみてください。

https://github.com/fummicc1-sample/AdventCalendar-2021-App/blob/main/Package.swift

 

Swift Playgrounds 4

つい先日、iPadでアプリ開発が可能になりました。

現状Swift Playgrounds 4では、swiftpmというものでデータがバンドルされていてXcodeプロジェクトとの互換性はないので、XcodeでもSwift Playgroundsでも開発をしたいというケースには適しませんでした。

終わり

今回、KCSのiOSアプリを作ろうと思ったきっかけにエンジニアの先輩が大学生の頃に通っていた大学のアプリを個人開発で作ったという話を聞いて、自分もそういったアプリを作ってみようと思ったという話があります。アイデアを出すのが苦手なので、KCSの人たちはKCSのアプリでこんな機能があったら良いとかあれば教えてほしいです。身近な人のためにアプリを作ると自然とモチベーションが上がって良い気もするので、皆さんも試してみてください。最後まで読んでいただきありがとうございました。

Posted on: 2021年12月24日, by : 田中郁弥
Exit mobile version