Kotlinで自作androidアプリ~Part1 : 全体の紹介~

#はじめに
この記事は、[HUITアドベンドカレンダー2018](https://qiita.com/advent-calendar/2018/huit)の21日目の記事となります。
にも関わらずPart1となっているのは、~~期日までに書ききれなかったからではなく~~まだアプリ自体が完成していないのと、コードまで説明すると一つの記事では長すぎるからです。なので今回は**経過報告としての概要説明**といった内容ですのでコードの解説を見ようと思った方には申し訳ございません。今後の進行具合と私の余裕次第ではコードの解説もしていきたいと考えております。

＊注：アプリ制作については他のこともしながらの3ヵ月でしか学んでいないので、様々なところで至らない部分もあるかと思われます。気になる点等ございましたら遠慮なく指摘してくださると大変助かります。

#基本動作
まず、初回起動時には強制的に時間割を一つ生成し、タイトルを「no title」としたのち、ユーザーにタイトルの変更を要求します。
<img width="200" alt="0" src="https://qiita-image-store.s3.amazonaws.com/0/321393/ee1b997f-b128-8f33-f82b-f765ee8e6b5c.png"><img width="200" alt="1" src="https://qiita-image-store.s3.amazonaws.com/0/321393/6e8942ec-5a21-6de0-883f-013316b8d1c3.png"><img width="200" alt="2" src="https://qiita-image-store.s3.amazonaws.com/0/321393/c0fbfd67-e934-ee2a-2385-a7be7eb0968d.png">

メイン画面には、右上に２つのボタンが存在し、左が「編集」右が「設定」となっています。
「編集」をタップすると上の部分(ツールバー)の色が変わり、編集モードに変わります。基本的に編集モードの時のみ時間割の書き換えができるようになってます。
(これは間違って画面に触れてしまい、誤った入力が発生するのを防ぐためという微妙なこだわりです…)
また、「設定」をタップすると時間割表示についての設定画面に移ります。
現段階では表示する時限の設定しかありませんが、今後機能を追加した場合にはここで設定できるように考えてます。(アイデア募集中です…)
<img width="200" alt="3" src="https://qiita-image-store.s3.amazonaws.com/0/321393/a4a06d04-9b39-5334-ffd5-6707e5f494fa.png"><img width="200" alt="4" src="https://qiita-image-store.s3.amazonaws.com/0/321393/51da35a5-ee63-2050-fa2e-c5726b8264cf.png"><img width="200" alt="5" src="https://qiita-image-store.s3.amazonaws.com/0/321393/6df7db09-aedb-bd89-556b-29964e8bf356.png"><img width="200" alt="6" src="https://qiita-image-store.s3.amazonaws.com/0/321393/9aa374f0-24d9-6168-32f4-ea27da2103ef.png">

そして、前述のボタン操作により編集モードとした状態で任意のコマをタップすると、そのコマの授業情報の入力画面に移ります。
ここでは見ての通り、講義名・教員・教室・メモを入力することができ、色はスピナーによる選択ができるようになっています。(色合いが微妙なのはスルーしてください…)
そして「保存」をタップすると、メイン画面に戻り、講義名・教室・色が入力した内容に変化します。
この処理には、Realm(データベース)を用いておりますが今回は説明を省略します。
<img width="200" alt="7" src="https://qiita-image-store.s3.amazonaws.com/0/321393/18a538e5-0450-59b7-17b1-fe75a1b5629e.png"><img width="200" alt="8" src="https://qiita-image-store.s3.amazonaws.com/0/321393/c8b2fcc4-4d27-0ff3-58ed-cd168617bae6.png"><img width="200" alt="9" src="https://qiita-image-store.s3.amazonaws.com/0/321393/538ea3ea-11f6-69c8-a762-6881ed29ea63.png"><img width="200" alt="10" src="https://qiita-image-store.s3.amazonaws.com/0/321393/75a6184c-72d2-bb17-ed0f-41ffe263b08c.png"><img width="200" alt="11" src="https://qiita-image-store.s3.amazonaws.com/0/321393/f05dcc93-4fea-e7a0-4d59-81be29f1f513.png">

そして、情報が入力されたコマを再度タップすると、入力された内容が表示されるとともに、「削除」が追加されます。
また、先ほどは触れませんでしたが、一番上の「曜日・時限」の部分はスピナーとなっており、ここから情報の入力先を変更することもできます。これを利用すると、今はメイン画面からは行えない情報のコピーを実行できます。(間違った場所をタップして、ある程度入力してしまった際にも役立つ…かも？)
「削除」は文字通りそのコマの情報を削除できます。
<img width="200" alt="12" src="https://qiita-image-store.s3.amazonaws.com/0/321393/06edac1b-93a7-2204-1e84-da702f7cfc9e.png"><img width="200" alt="13" src="https://qiita-image-store.s3.amazonaws.com/0/321393/507bdd85-4e2d-18c2-182e-5225d1eddcb5.png"><img width="200" alt="14" src="https://qiita-image-store.s3.amazonaws.com/0/321393/f3777a1c-071d-aaf9-bad9-8e577c17cac7.png"><img width="200" alt="15" src="https://qiita-image-store.s3.amazonaws.com/0/321393/6435c515-f602-0e9f-2050-4ec527256569.png"><img width="200" alt="16" src="https://qiita-image-store.s3.amazonaws.com/0/321393/8f46d3e0-a18c-7e0f-42bf-c549d73703ee.png"><img width="200" alt="17" src="https://qiita-image-store.s3.amazonaws.com/0/321393/f05dcc93-4fea-e7a0-4d59-81be29f1f513.png">


#表示する時限の変更
さて、ここからはちょっと変則的な内容となります。まずはメイン画面の「設定」から行える表示する時限の変更について。試しに４限と５限のチェックを外すと、画像のように４限と５限のコマを存在ごと消すことができます。この原理等についても今回は割愛します…
<img width="200" alt="18" src="https://qiita-image-store.s3.amazonaws.com/0/321393/c8668ce3-e230-59ff-d53f-e0ba020ceb93.png"><img width="200" alt="19" src="https://qiita-image-store.s3.amazonaws.com/0/321393/ba927953-6e73-0041-687c-50b97a60437f.png"><img width="200" alt="20" src="https://qiita-image-store.s3.amazonaws.com/0/321393/14044b27-af97-a65e-f8cd-178574ca8fa8.png">


#時間割の追加/削除/タイトル編集
続いて時間割そのものの編集について。時間割の操作は全てドロワーにて行います。(ドロワーの中身を動的にセットできるようにするのに約一か月かかりましたが、ここでは割愛…いつか記事にします)
「編集」をタップすると、現在選択されている時間割のタイトルを変更することができます。
<img width="200" alt="21" src="https://qiita-image-store.s3.amazonaws.com/0/321393/c063e843-c7df-08ed-7de5-0849315fcded.png"><img width="200" alt="22" src="https://qiita-image-store.s3.amazonaws.com/0/321393/60dd71f4-8580-d554-0992-17e22979f98b.png"><img width="200" alt="23" src="https://qiita-image-store.s3.amazonaws.com/0/321393/c5d3fa61-964e-1f33-bba8-0f435ee67955.png">

また、「追加」をタップすると、新しい時間割のタイトルの入力を要求し、OKをタップすると新たに時間割が生成されます。生成後、表示されているタイトルをタップすると新しい時間割(白紙)が表示されます。
<img width="200" alt="24" src="https://qiita-image-store.s3.amazonaws.com/0/321393/90034b46-acec-9b3e-3f7e-19a1659debe3.png"><img width="200" alt="25" src="https://qiita-image-store.s3.amazonaws.com/0/321393/0cda4716-60bf-8357-df8e-44d0dab17575.png"><img width="200" alt="26" src="https://qiita-image-store.s3.amazonaws.com/0/321393/2a2d0de1-636e-ca37-45a0-f51cd0416395.png">

さらに、「削除」をタップすると、現在選択されている時間割を削除し、一個上の時間割を表示させます(一番上の場合は一個下の時間割)。画像では一個上にあった「時間割１変更」を強制的に選択・表示しています。
<img width="200" alt="27" src="https://qiita-image-store.s3.amazonaws.com/0/321393/66d41824-9fd2-f437-59a1-b710377d9bbd.png">

時間割が一個しかないときに削除を行うと、時間割が0個になってしまい、少々不都合が発生するので、このときのみ強制的にタイトルが「new timetable」の時間割を生成します。
<img width="200" alt="28" src="https://qiita-image-store.s3.amazonaws.com/0/321393/bd5d1eb7-b2ba-54c5-ad45-aac736434c88.png">


#そのほかの機能
2018/12/21現在では上述の機能が実装されており、今後は

- 一部の大学に限定されてしまうが、シラバスのデータとの連携
- 同じく一部の大学に限定されるが、休講情報の自動通知
- 作成した時間割の共有機能

などを考えています。追加され次第、随時更新していきたいと考えております。


#おわりに
このサイトで初めて記事を書きましたが、時間がなかったこともありかなり粗雑なものになってしまい、正直後悔しております。この記事は単なるアプリの動作説明となってしまったので、今回一切の説明を省いたコードの説明は今後行っていきたいです。今回の内容だけでも質問、意見のある方は遠慮なくコメントしていただけると幸いです。(記事の書き方等もアドバイスしていただけると大変喜びます)

ここまで読んでいただき、本当にありがとうございました

#関連記事
(コードの解説記事を書き次第リンクを貼っていきます)