当ブログにおける今までの投稿をほとんど読んだ方なら、他のブログとは違った視点から書かれていることに、お気づきだと思います。今回は、その辺の話を少し書いてみます。
世の中には、ブログだけでなく雑誌も含め、プログラミングに関する多くの情報が出回っています。また、新しい情報が次々の加わってもいます。それらの情報をたくさん手に入れたら、アプリ開発が上手になるのでしょうか。
残念なことですが、非常に重要な要素が欠けています。アプリ開発において一番重要かもしれない、全体設計の話です。アプリの大まかな構造をどのようにして導きだすのか、どんな点に注意して設計すれば良いか、どのような視点でアプリを改良するべきか、といった話です。残念なことですが、そのような情報はほとんど(まったく?)出回っていません。
ちなみに、ブログや雑誌で扱っている主な情報を挙げると、次のようになります。
世の中に出回っている主な情報
・開発ツールの操作方法
・プログラミング言語の説明
・目的の機能を実現するためのソースコードと解説
・設計の小技(デザインパターンなど)
・オブジェクト指向などの基礎的な考え方
これらに該当する話は、検索すれば数多く見付けられます。また、どんどんと新しい内容に更新されてもいます。しかし、より上位の設計の話は、ほとんどないのが実状です。
ソフトウェア設計の技というと、最近ならデザインパターンを思い浮かべる人が多いと思います。デザインパターンを短い言葉で表現するなら、オブジェクト指向ならではのクラス構成術というのがピッタリでしょう。
デザインパターンも、ソフトウェア設計には含まれますが、アプリ全体の設計を考えるレベルの設計術ではありません。もっと細かな機能を、オブジェクト指向的に作るためのパターンです。あえて最良と書かずに、オブジェクト指向的と書いたのは、それが別な視点で見たとき、最良の設計とは限らないからです(この辺の話は、機会があれば詳しく書きます)。
けっして、デザインパターンが不要だと言っているのではありません。それよりも上位の設計術が大事で、その設計内容に従った形で、デザインパターンが使われるということです。投稿「雑誌などのソースコードは再構成して使う」で書いたように、私の分類では3番目に位置するのがデザインパターンです。
変更への柔軟性や、再利用を重視したソースコードを作る視点(再掲載)
1. 機能の切り分け(インターフェースの標準化も含む)
2. 間接参照を多用する
3. オブジェクト指向の利点を利用する(デザインパターンも含めて)
この3段階の視点は、アプリ設計における重要な順番で並べてあります。このうちの上位2つが、このブログで中心に置いている視点です。
ただし、この上位2つの視点も、当ブログが重視している視点の結果でしかありません。もっと基本的な視点により、アプリ開発の重要点をノウハウ化しようと努力しています。具体的な視点を挙げると、次のようになります。
ブログで取り上げている重要な点
・どのような視点で設計しているのか?
・どんな点に注意しながら設計すれば良いのか?
・設計の質を高めるには、どうすれば良いのか?
・トラブルを未然に防ぐためには、どんな点に注意すべきか?
・メンテしやすい設計とは?
・ユーザーが安心して使える設計とは?
思いつくまま挙げたので上手に整理されていませんが、言いたいことは伝わると思います。全体としては、アプリ開発における、より上位の視点を集めたものと言えるでしょう。
視点だけが良くても、書く内容の質は高められません。やはり、書き方も重要です。できるだけ役に立つ内容に仕上げようと、次のような点を心掛けています。
書くときに注意している点
・どんな点を考えて設計しているのかを、一番重視して書く
・細かな考慮点も、できるだけ取り上げる
・考えられる選択肢を列挙して、判断基準や選択結果を示す
・仕方なく選択した点なども、その理由とともに判断過程を説明する
・最終的には、ソースコードとして仕上げる
・示したソースコードに仕上げた理由も、できるだけ説明する
・開発資料(API資料やサンプルコードなど)の問題点やその対処方法も取り上げる
・調べれば簡単に分かる内容(APIの基礎的な使い方など)の説明はできるだけ省く
すべて出来ているとは言えませんが、私としては頑張って書いているつもりです。
以上のようなことを考えながら、このブログを書いています。時間の制約もありますし、伝えるのが難しい内容だけに、どれぐらい書けているか(読み手にも影響を受けますが、どれぐらい伝わっているか)は、少し不安を持っています。それでも、書ける範囲内で書き続けていたいと思います。同じ方向性のことを書いている人が、ほとんどいませんので。
アプリ開発で何が大事かは、作る人によって違うでしょう。もし当ブログで書いてある内容に共感できるなら、役立つ情報(しかも他では得られにくい情報)が数多くあると思います。どんどんと吸収し、自分なりのノウハウとして改良しながら、活用してください。
0 件のコメント:
コメントを投稿