(前回)
【市販のソフトウェアでは個別ニーズに対応できない】
プログラムなど自分で組むことができなくとも市販のソフトがあるという人がいる。確かにほとんどの仕事はマイクロソフトのワードやエクセルで済ますことができる。つまり、市販のソフトというのは、そのソフトが対象としている作業に対しては非常に使いやすくできている。一面、便利が良すぎて、つまりメニューが多すぎて、逆に使い方に迷っているのが現状であろう。とりわけ最近のソフトは、製造サイドから販売を増やすためには、数多くの不要な機能を追加している。一見、ユーザ―のニーズを取り入れると称しているが、実は全く無用である。私はWindowsを使っているが、マイクロソフトのワードやエクセル、パワーポイントなどの最近の機能など全くと言っていいほど使わない。ただ、最近パワーポイント(2010バージョン)のスライドショーで、それまでは最初からしか表示できなかったのが、『現在のスライドから』という機能は便利で良く使う。
不要な機能を追加したため、ソフトは、必然的に複雑になるし、いろいろな機種(OS、ハードウェア)に対応しなければいけなくなる。その結果、市販のソフトは大体の機能は大枠のところ完成していて、使用するには全く支障がないにも拘らず、完全な製品に仕上げるためのバグつぶしに膨大な時間をかける必要が発生する。マイクロソフトはご丁寧にも、アルファーバージョンや何回ものベータ―バージョンで、何千人(あるいは何万人)ものユーザーを動員して、機能的な不具合や使いづらさを徹底的に洗い出だしてバグつぶしと同時に使いやすくしている。この努力に対しては全く頭が下がる。アメリカ人の律儀さがにじみ出ている。もしマイクロソフトが韓国や中国の会社であれば、ここまでするかどうか。。。
しかし、このような念入りの検証ために、必ずコスト高になる。つまり汎用性の高いソフトというのは、一部のユーザーが満足したのではダメで、100人が100人とも満足しないといけない。つまり、多くのニーズを満遍なく満たしていることが求められているのだ。しかし、その反面(あるいは普遍性を追求するために)個別のニーズには対応してくれない。個別のニーズの存在は知っていても、それを全て盛り込んでしまうと、それこそ不要な機能のオンパレードになってしまうからだ。すなわち、汎用のソフトは個人個人からみれば、だいたいのところは OKではあるものの、どうももう一つ、しっくりこないソフトであるのだ。
それなら、汎用ソフトでは不十分な点は自分の知り合いにソフトを作ってもらえばいいと言うかもしれない。しかし、人に作ってもらうには、口頭でこれこれのソフトが欲しいといっても、まず作ってもらえない。作る方としては、まずどのような機能が欲しいというプログラム仕様書を作ってもらわないと、どのようなソフトが求められているかが分からないのだ。頼む側からすれば、口ではこれこれとは言えるものの、いざ文章として機能を書き起こすとなると困ってしまう。そして、そのような書類作成の時間や、作ってもらっている時間などを考えると、すぐにでも欲しいと思うソフトの目先の要求には応えてもらえないことが分かる。つまり、ソフトが組めない人というのは、自分の要求をまともに文章化できないので、他人に自分の欲しいソフトを作ってもらえないのが、残念ながら冷酷な現実である。
【出典】He always liked to open the Annual Programmer's Conference with a joke in binary.
ところが、自分でプログラムを書くことができれば、多少のバグ(不具合)があっても構わないので、手っ取りばやく目前の要求に応えることができる。その上、市販のソフトと異なり、自分の個別の要望に完全にフィットしたものを作ることができる。
【プログラムが書ける人生】
現在のソフトウェアはほとんど例外なしにGUI(Graphical User Interface)インターフェースをもっている。つまり、マウスや指で、特定のアイコンを探し出してクリックし、そこに必要な情報を入れる。これは一見、非常にユーザーフレンドリーなようだが、仕事の生産性を低下させる根本原因となっている。例えば一番よく使われるマイクロソフトのワードを例に取って、文字列の置換を考えてみよう。次のようなステップになるだろう。
1.対象のファイルをワードで開く。
2.置換の元の文字と置換後の文字をそれぞれのボックスに入力し、【置換】のボタンをクリックする。
3.次のファイルを探して1.に戻る。
複数の対象ファイル全てに対して、このプロセスをいちいち実行しないといけない。概念的には、プロセスは非常に簡単であるが、実際に実行するとなると時間がかかる。
これをプログラムで一括処理するには、 GUI(Graphical User Interface)ではなくCUI(Character User Interface)の環境に移らないといけない。CUIの環境では、コマンドラインと呼ばれる画面があり、コンピュータに何をさせるかという指示を書くことができる。論理的には次のようなプログラムを書くことになる。(もっともプログラムと言っても、単なるテキストファイルなので、Notepad でも書ける。)
{
for( file_name in folder_X) {
replace(置換前文字列、置換後文字列, file_ name);}
}
これは
1.現在のフォルダーの特定の(あるいは全ての)ファイルを見つける。
2.そのファイルの中の文字列を変更する。という指示である。
一度、こういうプログラムを書くと、置換の文字列が変わっても、このプログラムの一部を変更するだけでよい。つまり、作業をする主体があなたからコンピュータに変わった訳だ。私が勧めるプログラムとは、これらのことをあなた自身がプログラムを書くことで自分の生産性のみならず、あなたの周りの人々の生産性まで向上させる枠組みを提供することである。その為には、普段仕事に使っているワードやエクセルの環境、つまり GUI環境と自動化処理をするためのCUI環境の両方を自由に行き来できなければならない。喩えていえば、今まで陸でしか生きられなかった動物から、水陸(GUIとCUI)どちらでも自由に生きることのできる両生動物になる必要がある。
(続く。。。)
【市販のソフトウェアでは個別ニーズに対応できない】
プログラムなど自分で組むことができなくとも市販のソフトがあるという人がいる。確かにほとんどの仕事はマイクロソフトのワードやエクセルで済ますことができる。つまり、市販のソフトというのは、そのソフトが対象としている作業に対しては非常に使いやすくできている。一面、便利が良すぎて、つまりメニューが多すぎて、逆に使い方に迷っているのが現状であろう。とりわけ最近のソフトは、製造サイドから販売を増やすためには、数多くの不要な機能を追加している。一見、ユーザ―のニーズを取り入れると称しているが、実は全く無用である。私はWindowsを使っているが、マイクロソフトのワードやエクセル、パワーポイントなどの最近の機能など全くと言っていいほど使わない。ただ、最近パワーポイント(2010バージョン)のスライドショーで、それまでは最初からしか表示できなかったのが、『現在のスライドから』という機能は便利で良く使う。
不要な機能を追加したため、ソフトは、必然的に複雑になるし、いろいろな機種(OS、ハードウェア)に対応しなければいけなくなる。その結果、市販のソフトは大体の機能は大枠のところ完成していて、使用するには全く支障がないにも拘らず、完全な製品に仕上げるためのバグつぶしに膨大な時間をかける必要が発生する。マイクロソフトはご丁寧にも、アルファーバージョンや何回ものベータ―バージョンで、何千人(あるいは何万人)ものユーザーを動員して、機能的な不具合や使いづらさを徹底的に洗い出だしてバグつぶしと同時に使いやすくしている。この努力に対しては全く頭が下がる。アメリカ人の律儀さがにじみ出ている。もしマイクロソフトが韓国や中国の会社であれば、ここまでするかどうか。。。
しかし、このような念入りの検証ために、必ずコスト高になる。つまり汎用性の高いソフトというのは、一部のユーザーが満足したのではダメで、100人が100人とも満足しないといけない。つまり、多くのニーズを満遍なく満たしていることが求められているのだ。しかし、その反面(あるいは普遍性を追求するために)個別のニーズには対応してくれない。個別のニーズの存在は知っていても、それを全て盛り込んでしまうと、それこそ不要な機能のオンパレードになってしまうからだ。すなわち、汎用のソフトは個人個人からみれば、だいたいのところは OKではあるものの、どうももう一つ、しっくりこないソフトであるのだ。
それなら、汎用ソフトでは不十分な点は自分の知り合いにソフトを作ってもらえばいいと言うかもしれない。しかし、人に作ってもらうには、口頭でこれこれのソフトが欲しいといっても、まず作ってもらえない。作る方としては、まずどのような機能が欲しいというプログラム仕様書を作ってもらわないと、どのようなソフトが求められているかが分からないのだ。頼む側からすれば、口ではこれこれとは言えるものの、いざ文章として機能を書き起こすとなると困ってしまう。そして、そのような書類作成の時間や、作ってもらっている時間などを考えると、すぐにでも欲しいと思うソフトの目先の要求には応えてもらえないことが分かる。つまり、ソフトが組めない人というのは、自分の要求をまともに文章化できないので、他人に自分の欲しいソフトを作ってもらえないのが、残念ながら冷酷な現実である。
【出典】He always liked to open the Annual Programmer's Conference with a joke in binary.
ところが、自分でプログラムを書くことができれば、多少のバグ(不具合)があっても構わないので、手っ取りばやく目前の要求に応えることができる。その上、市販のソフトと異なり、自分の個別の要望に完全にフィットしたものを作ることができる。
【プログラムが書ける人生】
現在のソフトウェアはほとんど例外なしにGUI(Graphical User Interface)インターフェースをもっている。つまり、マウスや指で、特定のアイコンを探し出してクリックし、そこに必要な情報を入れる。これは一見、非常にユーザーフレンドリーなようだが、仕事の生産性を低下させる根本原因となっている。例えば一番よく使われるマイクロソフトのワードを例に取って、文字列の置換を考えてみよう。次のようなステップになるだろう。
1.対象のファイルをワードで開く。
2.置換の元の文字と置換後の文字をそれぞれのボックスに入力し、【置換】のボタンをクリックする。
3.次のファイルを探して1.に戻る。
複数の対象ファイル全てに対して、このプロセスをいちいち実行しないといけない。概念的には、プロセスは非常に簡単であるが、実際に実行するとなると時間がかかる。
これをプログラムで一括処理するには、 GUI(Graphical User Interface)ではなくCUI(Character User Interface)の環境に移らないといけない。CUIの環境では、コマンドラインと呼ばれる画面があり、コンピュータに何をさせるかという指示を書くことができる。論理的には次のようなプログラムを書くことになる。(もっともプログラムと言っても、単なるテキストファイルなので、Notepad でも書ける。)
{
for( file_name in folder_X) {
replace(置換前文字列、置換後文字列, file_ name);}
}
これは
1.現在のフォルダーの特定の(あるいは全ての)ファイルを見つける。
2.そのファイルの中の文字列を変更する。という指示である。
一度、こういうプログラムを書くと、置換の文字列が変わっても、このプログラムの一部を変更するだけでよい。つまり、作業をする主体があなたからコンピュータに変わった訳だ。私が勧めるプログラムとは、これらのことをあなた自身がプログラムを書くことで自分の生産性のみならず、あなたの周りの人々の生産性まで向上させる枠組みを提供することである。その為には、普段仕事に使っているワードやエクセルの環境、つまり GUI環境と自動化処理をするためのCUI環境の両方を自由に行き来できなければならない。喩えていえば、今まで陸でしか生きられなかった動物から、水陸(GUIとCUI)どちらでも自由に生きることのできる両生動物になる必要がある。
(続く。。。)