生き様028. システムとは何かを考える ~シリーズ:システム開発考(1)~
ある勉強会で受けた刺激
先日、『概念投影によるオブジェクト指向設計の考え方とその方法』というセッションを聴きました。
どんなセッションだったのかは、下記のスライドを見て頂ければ、と思います。
このセッションを聴いた後、僕の中には大きな衝撃がありました。
僕には日頃想い描いていながら、言葉に出来ていない「システム開発とはこうあるべきだ」という姿があります。
それが、ここに見事に言語化されていたからです。
そして、僕の思い描いていた姿は「当たり前」の筈なのに意識されていないこと、
さらに、とても価値の在る考え方だ、ということが理解できました。
であれば、上のスライドを作成した人とは違う言葉で語ることで、届く人も居るかも知れません。
ということで、4回に分けて『シリーズ:システム開発考』として、僕なりの言語化をしていきたいと思います。
- システムとは何か? ← 【今回】
- ITシステムを作るという事の意味
- システム開発とは?
- 業務システムとアミューズメント(ゲーム系)システム、開発の大きな違い
システム=仕組み、ITシステム=IT技術を駆使した仕組み
こういう文章のお約束、言葉の定義から始めましょう。
システム
仕組み。
世の中に色々ある、社会を動かすためのルール や 手順。
法律だったり、暗黙の了解だったり、一子相伝の秘伝だったり、形態は色々。
自動車や飛行機のように、目的に併せてパッケージングされた仕組みもある。
何かと何か、AとBが連結してたり関係してたりしたら、立派なシステム。
コンピューターシステム
コンピューターの上で動くシステム。
人や他のシステムが担ってきた仕事を、コンピューターの上で行えるようにしたもの。
必ずしも、コンピューター上で完結している必要はない。
ITシステム
ITシステム≒コンピューターシステム
[IT=InfomationTechnology] は、必ずしもコンピューターに限定されるものではない、と僕は考えている。
めんどくさいので、本コラムでは両者を同じものとして扱う。
およそ、ITシステム ⊃ コンピューターシステム なんじゃないかな?とも思っているが。
実際はこんな感じだろう。
技術者(=エンジニア)
技術を利用して、システムを造る人。
何をその手段とするかで、分類される。
例えば、ITをその手段とするなら、ITエンジニアになる。
例えば、音楽をその手段とするなら、音楽エンジニアとなる。
例えば、蒸気機関をその手段とするなら、蒸気エンジニアとなる。
技術
システムを実現する能力。
造る能力に限られない。実行する能力も含まれる。
体系化され、習得が可能なもの。
ただし、習得に際して特別な才能を有する必要がある場合もある。
魔法ではない。
だから、タネもシカケもある。
社会というシステムは悠久の歴史の成果
僕は、人が生まれた時、既にシステムはあった、と考えています。
少なくとも、生物はそれ自体が小さなシステムの集まりであり、それひとつの個体がシステムなのだ、と。
そして、群れとなればまたシステムであり、地球という場所もまた、大きく自然的なシステムのひとつである、と。
そして宇宙は、時空は、次元は…。
少し、話のスケールが大きくなりすぎました。
今回フォーカスしたい事とは、ちょっとズレるので、一旦忘れて下さい。
システムは、我々の生活の中で当たり前の様に、時にそれと意識せずに使われています。 例えば時計。例えば交通ルール。例えばスマホ。例えば…
それは、人類が長い時間を掛けて、【社会】という複合システムを築き上げてきました。
今日の我々の生活は、その上に成り立っています。
そして、その【社会】というシステムは、日々変化しています。
【社会】を構成する数多のシステムも、日々変化しています。
ある側面では進歩かもしれません。ある側面では衰退かもしれません。
どちらにせよ、1秒か1日か1年か。何かしらの単位で目に見えるようになるまでの間でも。
変化を続けている、という事です。
変化を続けてきた、という事です。
それは、常に、その時々で、最適の形であったはずです。
最高にはなりえず、至高には至らず、しかし最適であった。
悠久の歴史の中で、常に【最適】へ変化してきた【社会】というシステム。
その一部を、我々個人個人が担っている、というのは忘れたくないですね。
技術者としてシステムに向かい合う
我々エンジニアは、新しいシステムを造るために、必然と旧いシステムと向き合う事になります。
もちろん、これから造る新しいシステムにも、相当向き合う必要がある事は、言うまでもありません。
その為に行う行為が【設計】です。
しかし、今回は設計という行為そのものについては、扱いません。
設計という行為ついてはまた後でしっかりと扱います。
この設計で「旧いシステムと新しいシステムの双方に向き合う」という観点を忘れている人は多い感じがします。
「旧いシステム=悪いシステム」ではありません。
「新しいシステム=悪いシステム」になる可能性は、とても高いです。
しかし、そうさせてはいけません。
その為に何をすれば良いのか?
答えはシンプルです。
- 旧いシステムについてよく知る
- 旧いシステムの何を新しいシステムにするのか、よく考える
旧いシステムは「今までの変化を受け止めてきたシステム」です。
当然、その中にはユガミやヒズミもあるでしょう。
新しいシステムに、それをそのまま移すのも、立派な一つの方法です。
ですが、それを整えて作り直すのが、好ましいでしょう。
勘違いしてはいけないのは、何でも新しくすればいい、というわけではありません。
「今までの変化を受け止めてきたシステム」から「これからの変化を受け止められるシステム」へ
ある面では「継承させる」と表現できる、
ある意味では「転生させる」と言える事をする。
それが、システムを造る、という事であることを忘れてはいけません。
その思想を持って、エンジニアはシステムに向かい合うべきなのです。
今回のまとめ
どっぷりと哲学しました。
という程度しか、纏めることがありません。
必要なことは、全部本文に書いたし、
必要なことだけを、本文に書いた!
今日の戯れ言
誰も見たこと無いシステムなんて、創れねーよ!
既存のシステムを、視点を変えて組み合わせた結果こそが、
誰も見たことがなかった景色を映し出してるだけなんだよ。