プログラミング

 個人的意見: 技能レベルは「使える→分かる→できる」と進むだろう。コンピュータができるとは、プログラミングができるレベルのことです。まれに、「できなくてもいいんだ。使えればいい。」という人もいる。しかし、せっかく大学に4年間いるのなら、ある程度できたほうがいい。「ある程度できる」とは、初級システムアドミニストレータ資格と基本情報処理資格をとることである。

(1)情報処理資格試験

 産業経済省では、第2種/第1種情報処理資格試験はなくなり、システムアドミニストレータや基本情報技術者に名称変更あり。平成13年度から、新しい体系で、試験が行なわれる。データベース技術者など、時代に合わせた体系となっている(と、いわれる)。

 情報処理技術者試験センター http://www.jitec.jipdec.or.jp/
 資格試験:模擬テスト http://www.licenseworld.co.jp/
 Microsoft資格試験:MOUS http://mous.odyssey-com.co.jp/mous/skill/
  注:MOUS(microsoft office user specialist)
 NTT資格試験:マスター http://biz.ocn.ne.jp/master/
 ネットエキスパート資格 http://www.last1m.com/

(2)プログラミングの道

 「わたしは、いつも同じ動作をしている。パソコンを起動したとき、このフォルダを開いて、このファイルをクリックしている。いつも同じだ。面倒だから、なんとかならないか」とか、「機械に使われているような気がする」と感じたら、プログラミングに走ってみよう。最初は、簡単なことからでいいのだ。

 たとえば、パソコンに電源を入れると、デスクトップ画面がでる。すると自動的にメールソフトが起動する。すぐに新しいメールが来ていないかどうかチェックできるので便利である。ブラウザを立ち上げたとき、必ずお気に入りのページを表示させるように設定変更する。OSの設定では、アイコンの色を変えたり、壁紙を変えることができる。そんなことから始めればいい。

 「プログラミングに王道はない」という。いろんな入門のしかたと到達点(目標)がある。だから、自分にとって役立つものを、簡単なものから始めて、複雑なものへ、作りたいものを作ってゆけ、としかアドバイスはできない。したがって、以下のことは、あくまでも参考提案ですが、「プログラミング言語について」を参照し、それを上から順にやってみてはいかがですか。

(3)さまざまな入り口

 まずは、すでにもっているソフトやOSを徹底的に使うことが第一歩である。あなたの OSには、「パソコン起動時に自動的に、何らかのソフトを実行する」機能が必ずある。そこにソフトを設定しておけば、パソコン起動時にそのソフトが動きだし、ひょっとしたらアプリケーションが起動するだけでなく、マクロのように何らかの処理もできるかもしれない。すると、パソコンの電源を入れるだけで、ソフトが起動し、マクロが動いてしまうところまでいってしまう。ダウンロードサイトにフリーの自動運転ソフトがある。Macなら、はじめからAppleScript編集ソフトもついてくる。

 次に、アプリケーションにマクロ機能があれば、それを使ってみよう。あなたがもっている表計算ソフトのExcelでも、マクロプログラミング(VBA)ができる。ボタンをつけて、それをクリックすると、なにかが動くようにプログラムできる。絵を動かしたり、ちょっとした「お遊び」のシミュレーションもできる。ゲームを作ることもできる。何も数字をいれて会計計算をさせることもない。他人に迷惑をかけないんだから、遊んでもいいんです。

 また、ホームページを作成し、基本を超えて技巧的なものにしよう。JavaScriptを使ってみよう。これなら、新たなソフトを購入するまでもなく、ブラウザだけで仕事ができる。CGIも作ってみよう。

 さらに、フリーソフトを配付しているサイトから、開発ソフト(言語、統合開発環境、データベースソフト)をダウンロードしてみよう。さまざまな開発ソフトがフリーなので、有り難い。それで、アプリケーションを自作してみよう。たとえば、携帯電話で動く小さなJavaプログラムを作ってみよう。統合開発環境Visual Basicやカード型データベースで住所録を自作してみよう。

(4)プログラミング手順

まず開発環境を整える:ソフトの入手、インストール、環境設定、、
手順: 設計→コーディング→(コンパイル)→実行→修正
  インタプリタ言語の場合は、コンパイルする必要はない。

勉強方法
 それらしいHow to書籍を買って読む。
 ユーザグループのWebサイトを見る。 参照:「メーカサイトやユーザグループ

(5)アプリケーション開発言語 参照「プログラミング言語


高級言語 (Fortran、Cobol) Perl C言語
オブジェクト指向言語 C++、Java、C#

統合開発環境(IDE: integrated development environment)
 User Interface (ウインドウ表示画面)が、手早くできる。プログラムを動かすとき、ふつうアイコンをダブルクリックする、そしてウインドウが表示される。そこには、ボタンや画像やテキストが表示されている。そこまでの開発が、マウスだけであっという間でできる。あとは、ボタンを押したらどう動くかだけをコーディングすればいい。
 ウインドウベーシック Visual Basic for win、Real Basic for mac
 中間言語を利用した多言語対応 Code Worrier
 Java開発 JBuilder
 Microsoft製品 Visual Studio.NET

バージョン管理(ツール:CVS、RCS)

 自作プログラムをインターネットで公開するときは、多数の改善要望が集まる(かもしれない)。改善を加えてゆくことをバージョンアップという。古い版と区別するために、バージョン番号をつけておこう。

フリーコンポーネントを利用する

 ちょっと大きなプログラムになると、自分で全部作成するのは大変だ。それよりも、他人が作った信頼できる部分品を組み合わせることで、よりよいものができるだろう。OSが提供する機能(API : application programing interface)そのものを使ったり、著作権フリーの部品(コンポーネント)を使う。他人のものを使用したときは、「使いました」「いいものをありがとう」など、ひとこと挨拶するのが礼儀だ。 参考:impress検索「IEコンポーネント」
 CGIコンポーネントでは、Perl言語で書かれた日本語コード変換jcode.plがある。
 同じ言語でコーディングするなら、自作プログラムのなかに呼び込めば(include, link, import)すればいいので結構簡単に楽しめる。

 しかし、WindowsのActive-XやIEコンポーネントの利用では、次に説明するアプリケーション連携の知識が必要となる。
 参考:タブ切り替えブラウザー、スクリーンセイバー。
 雑誌連載:日曜プログラミング

(6)オブジェクト指向のアプリケーション開発

 現在のOSは、どれもオブジェクト指向 (Object Oriented) のソフトウエア開発方法を採用している。

 オブジェクトは機能の単位で、まとまりのある認識対象をあらわす。プログラムなら部分品(モジュール)に相当する。すべてのオブジェクトは名前をもち、それは、属性(大きさ、色、形など)の設定値をあらわすプロパティー(property)をもっていたり、他のオブジェクトからの要請に答えて仕事をすることができる。できる仕事をメソッド(method)という。オブジェクト同士は、メッセージを交換しながら仕事を行なう。そういう考え方(思考枠組み、思考の構え)のことをオブジェクト指向という。

 WindowsやMacintoshというOSもオブジェクト指向で組み立てられている。プロパティーという言葉がよく出てくる。プログラミング言語のC++ やJAVAはオブジェクト指向のプログラムを作ることができる。クラス/インスタンスがオブジェクトである。

 プログラミング言語の場合には、継承機能がない場合には、正式にはオブジェクト指向言語とは呼ばないらしい。言語というプログラミング環境では、継承がないと、プログラミング自体がやりにくい。しかし、継承機能のない言語(Visual Basic、RealBasic、JavaScript)で作成したプログラムであっても、コンパイルして完成したプログラムを動作させると、その動き方そのものは、複数のオブジェクトがメッセージ交換しながら全体として意図した仕事をこなすように見える。ボタンをクリックして仕事をするので、イベント駆動システムというが、あえてオブジェクト指向システムと呼びたい。参照「JavaScript」「Excelマクロ」。

 オブジェクト指向プログラミング(継承によるクラス定義と実体化)を行って、オブジェクト指向システム(イベント駆動システム)を作ることを、オブジェクト指向開発(Object Oriented Development)と呼びたい。
  参照「Javaプログラミング「超」入門

(7)アプリケーション連携

パソコン内部の連携
 Microsoft社では、1997年にWindows DNAアーキテクチャを発表した。これにより、DLL (Dynamic Linking Library)からCOM (Component Object Modeling?)へ?。

 Apple社では、AppleScript (Apple Eventによる連携)を実現している。各ソフトは、内部で発生するAppeEventによって制御されている。したがってAppleEventを発生するプログラムを自作すれば、プログラムの自動運転ができる。

分散システムの連携
 Microsoft社では、DCOM (Distributed COM)+RPC (Remote Procedure Call)であった。しかし、さらに.NET戦略:XML / SOAP (Simple Object Access Protocol) へと変化しようとしている。  Java言語では、もともとRMI (remote method invocation) であったが、さらにXML / SOAP (Simple Object Access Protocol) も取り込もうとしている。

(8)ネットワークアプリケーションの開発

既存のプロトコルを利用する。
 テーマ例:携帯電話でJavaアプリケーション+RMIを動かす。
 テーマ例:SOAPでXML対応アウトラインプロセッサ。
 参考文献:日経ソフトウエア「XMLを極める」2000年?月

新しいプロトコルの開発
 参考文献:『インターネットを256倍楽しむ本』

(9)大規模システム開発

システム開発の依頼

 大規模な企業であっても、アプリケーション開発の技術や組織としての開発部隊をもたないとき、外部の開発会社に依頼して作成してもらうしかない。組織に情報技術を導入するとき、仕事のやり方を変化させることもあり、人間にも影響を与えることを忘れてはならない。

 まず、お金の面倒をみる情報技術担当の役員(取締役)が必要だ。つぎに、情報技術に詳しい上位レベルメンバーからなるサブ組織(調整会議体:情報化推進委員会など)がいる。さらに、具体的な作業をして検討する検討委員会(あるいは情報システム部門)。検討委員会は、開発企業と顔を合わせたりしながら、具体的なプラン(最初は青写真レベル)を策定する。上部組織と往復運動を繰り返しながら、話がまとまってゆく。話がつけば、開発企業に依頼することになる。

 このやり方では、時間がかかるので、できあがったものは、すでに陳腐化しているだろう。各部門の現場レベルで、できる対応はやってしまいたい。これがEUC (End User Computing) である。ちょっとした変更やプログラムの修正ができる人材を、各部門で育成してゆくことになる。

 しかし、とにかくエンドユーザは、大規模なアプリケーションを作っている暇はない。そこで、やっぱり開発企業に依頼することになる。

 参考文献:島田、高原『経営情報システム』日科技連の第8章?。

依頼された開発企業では

 その昔、大規模アプリケーションの開発は、要求定義、概要設計、詳細設計、コーディング、テスト、実施運用という手順で行なわれていた。これをウオーターフォール型開発法という。これは、各段階ごとに関所をもうけ、なるべく後戻りしないようにするものである。現在でも、このやり方で開発している例も多い。

 しかし、最終段階でユーザーが触ってみて、変更してほしいところが続出するのが困る。そこで、最初に画面設計をしたりして、とにかくユーザーに見せて、触らせてから、本格的に全体を開発する方式もでてきた。これを、RAD (Rapid Application Development)開発法という。

 その他、さまざまな開発方法とこまかな技法体系がある。データの設計には、ERモデル(Entity-Relationship-Model)。詳細設計では、DFD (Data Flaw Diagram)やフローチャートなど。

 参考文献:島田、高原『経営情報システム』日科技連の第8章?。

 また、開発の自動化にも工夫がなされてきている。各種のツール群がある。CASE (Computer Aided System Engineering) 。また、開発方法論にも発展があり、機能中心設計法、データ中心設計法が提唱された。しかし、最終的には、目的に応じて使い分けるのが実際的である。経営情報システム論の一領域をなす。

 (ネット対応ではないが)参考文献:『システム設計の理論と実際』