ホーム > 読んだ

萩本順三(監修)
新人技術者・研究者に捧ぐ

ガイド

書誌

author萩本順三(監修)
publisher共立出版
year『bit 1998.5』p.2-36

履歴

editor唯野
2001.3.9読了
2001.3.9公開
2001.4.30修正
2020.2.25文字化け修正

厳密な言葉の用い方まで問い出すときりがないのだが...まあ、要約してみた。私は別に学生時代から情報科学を専攻していた人間ではないので、ここに書かれていることがそのまま当てはまるとも思ってはいないが、それでも正面からこういう内容を扱った記事は貴重だと思う。やはり仕事においては、自分の中でのモチベーションの維持ということが最も重要だと考えるので、こういう記事より何かを啓発されることには意義がある。そういう意味では、むしろキャリアを重ねても、新人向けの読み物から何かを得るくらいでなければ駄目なのかもしれない。というより、そのくらい常に貪欲でなければならないということだ。

技術知識編

羽生田栄一「オブジェクト指向」

Object-Oriented(OO) : モノ中心・対象に則して。問題解決のための要素がオブジェクトとなる。オブジェクトを階層的に分類したものをクラスと呼び、オブジェクト間で作業の依頼することをメッセージ、同じ意味の作業に同じ依頼メッセージの使うことをポリモーフィズムと呼ぶ。このような対象の捉え方をオブジェクト指向モデリングといい、物事の相互作用における関係をソフトウェアに対して適用した世界観ということができる。

オブジェクト指向の基本は内部状態を持つオブジェクトの集まりがメッセージ(イベント)のやりとりによって各オブジェクトの内部状態を更新していき、その副作用としてアクションを起こすというところにある。メッセージに対してどんなアクションを実行するかという規則をメソッドという。(ソフトウェア工学的にいう)オブジェクトはメッセージによってしか内部状態を参照・更新できない情報隠蔽という特徴を持ち、メッセージのシグネチャの集合がそのインタフェースになる抽象データ型ということができる。

オブジェクトに対する共通性を抽出し概念化したものがクラスで、その実体をインスタンスと呼ぶ。クラスは共通の属性とメソッドをセットにした型ということができる。更にクラスの共通部分をスーパークラスとして抽出することを汎化といい、その差分がサブクラスとなる。この関係が継承で、このようなクラス分類によりオブジェクトの体系的な管理と再利用性が実現される。また、あるメッセージが受信側に応じた内容へ変化することをポリモーフィズムといい、これがインタフェースと内部実装に対して動的結合されることで、クライアント側への影響を抑えたプログラムの保守性・拡張性が得られることになる。このとき、オブジェクトの間に何らかの意味的な関係があれば関連を、オブジェクトの関係が密でまとめてみなすような場合には集約を使う。また、部分が全体に存在するかのような場合の集約のことをコンポジット集約という。

オブジェクトのモデル図としては静的なクラス図、動的な状態遷移図が基礎となる。その標準モデリング言語として UML があり、そこでは利用者のタイプをアクター、提供されるサービスをユースケースとして捉えていく。そしてユースケースは MVC (モデル-ビュー-コントローラ)を用いて管理される。OO 開発ではスパイラル型のアプローチを取って作り上げられることが多い。

そこでは従来の分析モデルの詳細化による設計モデルではなく、分析モデルを設計モデルでの問題ドメインに基づくアーキテクチャとして捉える見方が出始めている。(ほかにユースケースマップという技法も使われている。)また、オブジェクト設計を課題に対する解法のテンプレートから考えるデザインパターンもある。つまり、パターンを変更可能箇所(ホットスポット)というオブジェクトによってパラメタ化する。更に、オブジェクトより大きなアプリケーション単位での再利用性を足がかりにしたフレームワーク(抽象クラス化されたテンプレート集、特にビジネス分野でのフレームワーク部品のことをビジネスオブジェクトという)、既存部品(コンポーネント)の組み合わせ(ワイヤリング)によるオブジェクトの利用もある。

これらの動きから見て取れるのは、オブジェクト指向もオブジェクトの定義からオブジェクト間の協調動作の定型化へと中心のシフトしつつある点で、その結果、オブジェクトの実体よりもオブジェクトの役割(ロール)に注目したモデル化に注目が集まるようになってきている。

なお、エンジニア/研究者に関係なく好奇心と向上心と対人能力は重要。ソフトウェア工学は実学であり、そのためにもこれぞという人には何でも聞くこと。また、全ての仕事は OJT 的側面があると考え、職場環境にもそういう視点を持つのがよい。そうでない職場ならば転職も選択肢として含めるべきである。

青木保一「データベース」

技術者は技術を分かりやすいかたちで世の中に伝えられなくてはならない。

データベース管理システムとはアプリケーションから独立したかたちでデータを長期的に保持するしくみのことをいう。または、アプリケーションにおけるプロセスのメモリ空間を超えて、永続的にデータの格納するしくみともいうことができる。そして複数からのデータへの問い合わせ処理を表す概念がトランザクションとなる。つまり、トランザクションは永続的なデータに対する排他制御のためのロック機構とも見ることができる。

現時点でデータベースといえば RDBMS のことをいう。RDBMS はデータをテーブル形式で表現し、データを操作するための言語として SQL を用意している。RDBMS の利点はテーブルという分かりやすいデータモデルと標準化された利用手続きにあるといえる。もちろん、RDBMS でもきちんとしたテーブルの正規化、適切なテーブル(スキーマ)設計がなければ効果的なものとはならない。

テーブルをオブジェクト指向的に捉えると、列のフィールドが属性名、各行がインスタンス、フィールドの値が属性値として見ることができる。

システムの扱う情報がテーブルとしては表現しにくいマルチメディアデータであったりデータの対応関係が複雑な場合には、RDBMS ではなく ODBMS (オブジェクト指向データベース管理システム)が適している。(オブジェクト指向との親和性も高くなる。) ODBMS はプロセスの扱うオブジェクトやクラスの関係をそのまま永続化できるデータベース管理システムということができる。(RDBMS だと永続化に際してテーブルへの変換や再構築というオーバーヘッドがある。) ODBMS を用いるとデータを関連に基づいて検索したり、ネットワーク上でオブジェクトをキャッシュ/レプリケートするといった利用も可能になる。

また、RDBMS のリレーショナルモデルを拡張してオブジェクト指向性の部分的に取り入れたもののことを ORDBMS という。昨今のネットワークの広がりを考えると、分散オブジェクトの永続化という見地から見た ORDBMS への理解も必要といえる。

最後に、最初に選んだ技術を間違えないようにするということ。間違えた場合にはやり直す勇気を持つこと。

荻原正義「GUI」

最初の設計の良し悪しがプログラムの性能に大きく影響する。この重要性を知るには、経験を積み失敗することも必要。技術の進歩が常に付きまとう世界なので、知識が増えたとしても謙虚さを忘れてはならない。また、技術の推移を見守ることもできなければならない。

日本は他の製造業では優位を保ちながらもソフトウェアの分野では遅れをとっている。原因としてプログラム開発の現場から遠ざかるのが早い、ソフトウェアへの評価が曖昧、情報量の差などが挙げられる。何が本質の技術なのかを見極めるための好奇心と努力が必要である。

このときユーザインタフェースの進歩もユーザに対して幅広い貢献をする。情報の重要性が情報のあり方や表現方法へもフィードバックされるのだということ。