どうコードを記述するか?この問題に対するアプローチは様々だ。
書籍『Effective ○○』を参考にする。デザインパターンに乗っ取る。コーディング・ルールに従う。どれも有益だとは思うが、今回は、自分がアプリケーション・プログラマに転身した際に参考にした、『iOS開発に置けるパターンによるオートマティズム』を現在の環境で取り組んでみる事にした。
今回取り上げるのはアプリ設計のパターンだ。
機能設計
今回、この記事を執筆するにあたって過去の教科書的なプログラム開発技法の書籍を読み返してみて気がつくのは、機能設計に相当することがほとんど触れられていないことだ。どんなサービスを開発するのかはユーザの問題で、技術者はユーザからの要求をいかに文書化するかが需要。また、既存のユーザ作業を図にしていくか、制作するプログラムを処理の図にしていくことが主な関心となっていた。
そういう状況から、iPhoneアプリケーションの開発から始まった、幅広い意味のデザインがアプリケーションを製作するエンジニアに期待される状況に変わっていったのは、画期的なことだったのだろう。
そういう訳で機能設計についてはよく使われる図式のようなものなく、様々な図式の技法で育ってきたプログラマにとって不安に感じる部分なのだが、そんなものは不要ということなのだろう。
それではやってみよう。GTDのような個人のワークフローを管理するiOSアプリケーショの機能設計を行ってみる。まずは機能の列挙だ。
- 個人のワークフローを管理する。
- 仕事を入力する。
- 名称
- 期限
- 仕事のリストを並べ替える。
- 仕事をするタイミングを伝える。
- 通知を表示する。
- 完了した仕事を済みにする。
- 指定されて仕事をリストから削除する。
- 仕事を入力する。
このアプリではデータをバックアップするとか他機器と同期するとかを考えないと、通信の機能は使わないで実装できそう。通知はローカル通知でいけそうだ。
【関連情報】
iOS開発に置けるパターンによるオートマティズム
BUKURO.swift
Cocoa勉強会 関東
App Engineer Journal "猛者"
MOSA
Cocoa練習帳
Qiita