しばらく前、パーソナルタスクプランナーのアクティブユーザーとして、1つの重大な欠点を発見しました。数え切れないほどの数にもかかわらず、すべての点で満足できる「1つ」を見つけることは不可能です。
いいえ、プログラムは1人または数人の開発者によって開発されたので、それ自体はまったく正常です。 さらに、理論的には球形のユーザーが真空状態にしたいすべてを1つのプログラムに収めることは不可能です。 または多分?
1つのアプリケーションで2つの機能が1つのアプリケーションで1つの機能よりも優れている理由
すべての制限を少しの間解除して、理想的なスケジューラーが存在すると想像してみましょう。それはインターフェースの面であなたの期待を完全に満たし、必要なすべての機能を提供し、すべてのデバイスで動作します。 これにより何が得られますか? このようなアプリケーションの重要な機能は、同じデータを使用して、アプリケーションのすべての機能の動作を保証する機能です。
状況をシミュレートします-タスクのリストを作成してPomdoro機器を使用しないと生きていけない2人のユーザーがいます。 どちらにも同じニーズがあります-唯一の違いは、それらを満足させるために使用するアプリケーションです。
- ユーザー#1は、 Todoist (to-doリスト)とProductivity Challenge Timer (Pomodoro)の2つの人気アプリを使用しています
- ユーザー#2は仮想の「完璧な」アプリケーションを使用します
両方のケースでユーザーがプログラムとどのように対話するかについてのいくつかの言葉:
- ユーザー#1:Todoistでタスクリストを作成し、生産性チャレンジタイマーでプロジェクトのリストを作成する
- ユーザー#2:プログラム内のタスクのリストを埋める
上記の図に基づいて、ユーザー#2とは異なり、ユーザー#1が直面しなければならない不快な瞬間を特定できます。
- 両方のアプリケーションでプロジェクトのリストを手動で同期する必要性
- プロジェクトに含まれるサブタスクのPomodoroループを開始できない
- タスクのパフォーマンスに関する統合された統計の不足-さまざまなアプリケーションに保存されます
これが気にならず、いくつかのアプリケーションでうまくいくと思うなら、2つではなく10個の機能をユーザーに提供する必要がある場合はどうなるか想像してみてください。
問題解決
まあ、すべての必要な機能がある1つのアプリケーションは、複数のアプリケーションよりも優れています。 ただし、機能のすべての組み合わせに対して個別のプログラムを開発することはできません! これは、あなたがそれを使用しない場合、それが判明する方法です... そしてなぜ私がコメディを破るのか、それが書かれたタイトルで ...モジュール式アプローチ!
「理想的な」アプリケーションの主な秘密は、ユーザーが望むものを「予測」しようとする必要はないが、彼が自分の「個人的な」アプリケーションを作成できるようにすることです。 このようなアプリケーションをアセンブルするプロセスは、目的のアプリケーション機能と、対応するモジュールによって表されるユーザーインターフェイスの側面を選択することで構成されます。
さらに、このようなアプリケーションの開発プロセスを正しく編成すると、実装された機能がどこにも消えないため、全体的な複雑さが大幅に軽減されることは明らかです。他の開発者が使用するのに便利なモジュールに「パック」されるだけです。
これは単なる理論ではありません。
この記事が彼の理論に夢中な開発者のナンセンスのように見えないように、これが私のプロジェクトの例でどのように機能するかを示したいと思います。 今のところ、この記事のフレームワークでは説明しません。ここでは、アイデア自体のみを説明します。 一般に、特定のアプリケーションXがあります-現時点では、新しいモジュールをシステムに接続できます。各モジュールはインターフェイスを大幅に変更し、アプリケーションの使用可能な機能を拡張できます。
TomodリストモジュールがPomodoroモジュールによって展開されるときの上記の例のような状況は次のとおりです。
現在、アプリケーションは開発中であり、ユーザーにアクセスを提供する準備ができていません。 まだ実現すべきことがたくさんありますが、すでに何かが存在します。たとえば、ここにアプリケーションの動作機能のリストがあります。
- タスクリスト-タスクには次のプロパティがあります:名前、日付、ポモドーロによって完了、スケッチ
- Pomodoro Technique-タスクリストからタスクのPomodoroループを実行します
- カスタムスケッチ-別のギャラリーに保存したり、タスクリストからタスクにバインドしたりするためのスケッチを作成します
説明されている各機能はモジュールのグループで表され、各モジュールはシステム全体の操作性に影響を与えることなく削除できます。モジュールを削除すると、対応する機能のみがシステムから除外されます。
見込み
記事の終わりに、このプロジェクトのさらなる開発と使用に関する私の概念を共有したいと思います。
説明 :スマートフォンのアプリケーションには、「スマートホーム」の機能を改善するために使用できるデータがあります。つまり、その日のスケジュールを知って、特定の時間に照明を調整したり、音楽をオン/オフしたり、家電を起動したり(起きたとき、帰宅したとき)することができます。 同時に、ユーザーはこのシステムの動作を手動で構成する必要がありません。これは、システムが使用するのと同じデータを使用するためです(Pomodoroの例のように)。
すでに実装されているモジュール :タスクリスト、DBMSとの相互作用
モジュールを実装する必要があります :インターネットインタラクションまたはBluetooth、スマートホームシステムと通信するためのモジュール、スマートホームの1日のスケジュールを分析するためのロジックを備えたモジュール
説明 :アプリケーションを長時間使用すると、大量のデータが蓄積され、機械学習アルゴリズムの入力として使用できます。 したがって、ユーザーが人生のあらゆる領域に対する緊急度、重要性、または態度に応じて、いつタスクを実行するかをある程度の確率で予測することが可能になります。 予測を使用して、たとえば、一日の始めに、彼が今日どのように過ごすことができるかのオプションを生成することが可能になります。 この場合、現在のプロジェクトのすべての期限が考慮され、最適なスケジュールが予定どおりに配信されるように作成されます。
すでに実装されているモジュール :タスクリスト、DBMSとの相互作用
モジュールを実装する必要があります :シーケンスの機械学習モジュール、「予測」を生成するモジュール
説明 :ユーザーはスポーツに参加することを決定します(午前中に走り、運動をします)。 スマートフォンとPCで、ユーザーはアクセスを減らすアプリケーションとサイトを選択します。 スポーツ活動を実行できない場合、ユーザーはしばらくの間、選択したリソースへのアクセスが制限されます。 スポーツ活動の実施の管理は、ブレスレットから取得したデータに従って監視されます。
すでに実装されているモジュール :DBMSとの相互作用
モジュールを実装する必要があります :インターネットインタラクションまたはBluetooth、フィットネスブレスレットと対話するためのモジュール、リソースへのアクセスを制限するためのモジュール、習慣の実装を監視するためのモジュール
この記事では、テキストを詳細で過負荷にしないために、実装の機能を考慮しませんでした。 開発プロセス自体については間違いなく取り上げますが、次の記事では取り上げます。 興味のある方は、すでに実装されているモジュールに慣れることができます。
- MainMenuModel-現在接続されているプラグインへのリンクを保存します
- MainMenuView-メインメニューのUIを提供します
- TaskListModel-カスタムタスクへのアクセスを提供します
- TaskListView-カスタムタスクをツリービューで表示します
- PomodoroModel-実行されたPomodoroへのアクセスを提供します
- PomodoroView-Pomodoroループを実行して表示するためのUIを提供します
- TaskSketchModel-ユーザースケッチへのアクセスを提供します
- TaskSketchView-スケッチを作成するためのUIを提供します
- AndroidNotificationsModel-Androidプラットフォーム固有の機能へのアクセスを提供します
- ExtendableDataBaseManager-ソースに依存しない抽象データ構造へのアクセスを提供
- CipherDataBaseSource-SQLight DBMSの暗号化プラグインと対話するためのメソッドを提供します
ソースコードはこちらにあります 。
ご清聴ありがとうございました。