IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

スーパーエンジニアの独り言

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第50回 ひとつになるとき 2015年9月

 朝、駅のホームに電車が来ません。

 毎日利用している私鉄の通勤電車が早朝に起きた人身事故のために大きく遅延していたのです。

 待ちぼうけかなと考え始めた矢先、最寄り駅に遅れて電車が到着しました。すでに混雑した車内に何とか乗車は出来たものの、今度は間に合うのかが心配になっていました。本日「Ruby入門」コースの登壇が控えているので、お客様がお待ちのため遅れる訳にもいかず少し焦っていたのです。かなり早めに家を出たのですが、既に定刻から三十分以上遅れています。

 私は不安を抱えつつもお構いなしに電車はゆっくりと走っていました。不安の一つには、いつもは途中駅で急行に乗り換えるのが常ですが、先の駅にて前の電車がつかえている状況ではどうすべきか判断を迫られていました。

 こんな時は先ず落ち着くことが肝要です。気持ちを落ち着かせるために、「エビスビーツ」"EVISBEATS"の音楽を聴くことにしました。楽曲は前回のコラム(「第49回 シャンティシャンティ」)で紹介した坊主(男の子)と鳥の牧歌的な様子を描いた物語を言葉で紡いだ「なんともまぁなんだかな」(歌詞は鴨田潤(イルリメ)作)です。但し、車内アナウンスから流れてくる最新情報を確認するためにイアフォンの片耳は外してあります。

 いつもの乗換駅に近づいてくると、車掌さんのアナウンスが聴こえてきました。

 「わたくしの見たところ、後から来ます急行電車は非常に混雑している模様です。次の駅にて下車されましても急行へのお乗り換えができない場合が御座いますので、この電車を引き続きご利用頂くのをお勧めします。終点の新宿までの到着時間はさほど変わりません。引き続きご乗車になられますようお勧めさせて頂きます。」

 車掌さんの主観を交えた的確な情報提供に感嘆しつつ、彼のお勧めに従うことにしました。車掌さんを信じて判断を委譲したのです。車掌さんのアナウンスは断続的に続きます。駅に到着すると、

 「今一歩、一歩だけで結構ですので送り合わせて少しでも詰めてお乗り合わせて頂けますようにお願いいたします。たくさんの乗れないお客様がいらっしゃいますので皆様にご協力をお願い申し上げます。」

 「一歩だけで結構ですので」という無理強いすることのない柔らかな乗客への好意による行為を引き出す協力依頼がはじめにあってから、その後に開閉するドアの引き込まれやホームと電車の隙間に注意喚起も忘れずにアナウンスがされました。何事も一歩一歩なのです。

 このスピーカー越しに聴こるアナウンスには的確な情報提供やお客様へ配慮した気遣いと注意喚起だけに留まらず、車掌さんの声のトーンに人格や真摯さを感じ取ることができました。これこそが人心を掌握するのに必要な要素なのだと感じました。

 やっと着いた乗り継ぎ駅でホームに下車しようとすると、溢れんばかりに電車を待つ乗客が犇(ひし)めいており下車するのも儘(まま)ならない状況でした。この無数の人達、群衆を制するのは至難の業ですが、この現況は狭いプラットフォームだけに留まらないその事以前に根本的な問題が露呈しているのを感じます。それにしても駅員さんは本当に大変です。いつも感謝しています。

 ここで更に遡ること数日前、ふとした拍子に相談を受けたのを思い出しました。どの「プログラミング言語」から勉強すれば良いかの選択について質問されたのです。

 質問してきたのは、以前のコラム(「第43回 ハチはなぜ大量死したのか」)で登場してきました若年の同僚の彼です。ネットワークが専門でインフラストラクチャー分野の講師として活躍している彼がお家でプログラムの勉強をはじめようと思っているのだそうでして、たくさんあるプログラミング言語の中からどれを選べば良いのか迷ってしまった様子に見受けられます。

 彼からの質問をもう一度反芻すると、「これからプログラミング言語をお家で勉強したいと思っていますが、どの言語が良いでしょうか?お薦めありますか?」というお話でした。

 前回の反省を踏まえて、初心に帰って考察し背筋を伸ばして息を整えて回答させて頂きたいと思います。

 最初のご示唆としては、「何(の道具)を選ぶのか?」ではなくて「(今現在)何をしたいのか?」で選択されるのが良いでしょう、という事です。

 最初から道具にこだわる必要はないのです。出来ることならば、まずは身近で便利になることを体感出来るようなもの、現在ある問題の解決に役立つようにその機能を発揮できるものを選ばれることをお勧めするものです。それが本当の目的なはずですから。

 まずは、何をしたいと考えているのかを再考して頂くのが肝要と考えます。

 ですから、やりたい事をなるべく簡易にしかも使い勝手が良く実現できるものが相応しいでしょう。

 勿論、最初から道具にこだわることもあるのでしょうが、それはある程度周囲が見えてきてから道具選びをする方が的確な選択をできるのではないかとも思います。後で道具(プログラミング言語)を変えても良いのです。将来、もっと卓越した技能者になれたなら何の道具でも見事に使い熟すことが出来るようになるでしょう。「弘法筆を選ばず」です。

 またプログラミング言語と一括りにしてしまうと見えなくなってしまいますが、何が得手で何が不得手なのかは言語によって大きく異なります。どういう記述が出来るのかだけでなく、どのような背景を持って登場したのか?或いは、どこで実行できるのか?といった歴史、形態や周囲の環境に左右されます。また「言語」毎に「文化」が産まれます。話し方で考え方が変化するのが一つの証拠となるでしょう。それら文化を受け入れられなければ、言語の習得は難しいです。「郷に入れば郷に従え」とできるような、なるべく自分にあった馴染み易く敷居の低いものを選ぶのが宜しいのかもしれません。

 しかしながら、見方を変えて本質的な部分に言及するのであれば「何でも良い」とも言えます。

 プログラミング言語という道具を使うのは、コンピュータに命令して自分の意のままに動かしたいというのは同じはずであるからです。どの言語を勉強してもやりたいことが普遍ならば、何からはじめたとしてもご自身の滋養と成るはずです。

 ですが「何でも良い」という結論では、更に迷ってしまうかもしれません。

 お節介ではありますが、これからはじめるのにお薦めのプログラミング言語を幾つかの列挙させて頂こうと思います。

 ここで候補として挙げさせて頂くのは、Ruby、Python、Java、C、の四つです。これは「汎用目的で使用可能な高級プログラミング言語」という縛りで勝手に絞り込ませて貰ったものです。それぞれの特徴を比較するために参考までに幾つかの項目での箇条書きを試みます。記載する項目は、1.(主な)設計者、作者、2.登場時期、3.実行形式(スクリプト/コンパイル)、4.(主な)プログラミングパラダイム(プログラムを書くときのスタイル、見方)、5.設計思想(背景もしくは歴史)、6.普及度合い(もしくはコミュニティ活発度)、7.オープンソースか否か、の七項目です。

Ruby

  1. まつもとゆきひろ(Yukihiro Matsumoto, Matz)
  2. 1995年
  3. スクリプト
  4. オブジェクト指向
  5. プログラミングを楽しむことを目的に開発
  6. 広く普及、活発なコミュニティ
  7. オープンソース

Python

  1. グイド・ヴァン・ロッサム(Guido van Rossum)
  2. 1991年
  3. スクリプト
  4. オブジェクト指向
  5. (ABCという)別の言語に例外処理やオブジェクト指向を対応させるために開発
  6. 広く普及、活発なコミュニティ
  7. オープンソース

Java

  1. ジェームズ・アーサー・ゴスリン(James Arthur Gosling)
  2. 1995年
  3. コンパイル(+仮想マシン)
  4. オブジェクト指向
  5. ネットワークを経由してプラットフォームに依存しないソフトウェアを夢見て開発
  6. 広く普及、深く浸透
  7. オープンソース(但し、事実上、旧サン・マイクロシステムズ、現オラクルが主実装を管理)

C

  1. デニス・リッチー (Dennis M. Ritchie)
  2. 1972年
  3. コンパイル
  4. 手続き型
  5. AT&Tベル研究所にてオペレーティングシステム"UNIX"を開発するためにB言語の改良として誕生
  6. 広く普及、深く浸透
  7. 商用ソフトウェア、オープンソースなど(多岐多種に及ぶ実装が複数存在)

 目的や用途があまり限定されていなく汎用的に使えるもの、現在時点主流であり将来的にも使えることが見込まれるものとして独断と偏見で四つだけに厳選させて頂きましたが、異論もあることでしょう。勿論、上記以外にも無数のプログラミング言語が現在では存在します。ですから人によってはお薦めするのも様々になるかと思います。

 実際、(筆者に"EVISBEATS"をオススメした)プログラムを担当している別の同僚は、GOをオススメしていました。2009年に登場したグーグル社(Google)によって開発されているプログラミング言語です。これ以外にもグーグルは幾つかの言語を開発して使用しています。新興の言語ということで未知数ではありますが期待度も高いかもしれません。但し、プログラミング言語が形になるまでに十年程度はかかるということを鑑みれば時期尚早なのかもとは思います。

 そしてもう一点、記載した項目に「はじめてのプログラミング」ということを考慮すれば一番の関心事であるはずの習得の難易度について触れていないのですが、これは何が難しくて何が易しいのかという感覚は個人差が激しいというのが実感としてあります。

 例えば、スクリプトつまりインタプリタで実行するRubyやPythonなどの言語は簡易に実行できるという手間の少なさという利点が敷居の低さとなりコンパイル型言語よりも初心者がプログラムを始めやすいとは思います。またC兄弟とも呼ばれるC系統の言語(C, C++, C#, Java)は構文が一緒ですので差異が少なく習得しやすいかもしれません。ですがこれらも一義的な事だけであり、実際にはプログラムの内容によってその後の難易度は大きく変化します。

 極端な例ですが、プラットフォームがC言語で書かれているためにハードウェアに近い部分のコード書けるという意味でCはとても難しいとも言えますが、(ある意味で)インタプリタ型言語には真似できない芸当です。反対に、インタプリタがあるだけ実行可能でしかもプログラムは単なるテキストファイルであるというスクリプト型言語は、マルチプラットフォームへの完全なポータビリティ確保できるという意味でコンパイラ型言語には到底真似できません。使う状況によって得手不得手が露呈してしまう場合もあります。

 ですから、先ずは気負わず使ってみて自分で試して欲しいというのがあります。勘違いや思い込みで良いのでまずは走り出して欲しいのです。

 バイブル(Bible)である「プログラミング言語C」"The C Programming Language" の冒頭に書かれている様にどのような言葉(言語)でも良いから「ハロー、ワールド」"hello, world" と計算機の世界に向けて挨拶(命令)して欲しいのです。その自らの脚でまずは一歩を踏み出して欲しいのです。そして何歩か進んだ後に間違ったと思ったら少しくらい戻っても構わないのです。三歩進んで二歩下がるくらいで良いのです。胸を張って歩きましょう。

 唐突ですが、当コラムは今月号にて、めでたく五十回を迎えることが出来ました。ありがとうございます。

 こんなに長く続くとは露程にも思っておりませんでしたが、細うで繁盛記の加代演じる新珠三千代さながらに細々と続けさせて頂きました。これも偏(ひとへ)に自由にコラムを書かせて頂いている編集の方々の寛容さと、読者皆様のご愛顧のお蔭であるものと常々感謝しております。

 そして塵も積もればとも喩えられますが、チータ(水前寺清子)の「三百六十五歩のマーチ」(教訓)通り一歩ずつ前進することの大切さと継続することこそが力であるとの感触を得ている次第です。

 蛇足ですが、筆者は今月九月に誕生日がありまして齢(よわい)五十をもうすぐ迎えます。期せずして連載回数と年齢が重なりシンクロしました。因みに「サンダバード」"Thunderbirds" も五十周年だそうでしてスーパーマリオネーション(Supermarionation)からコンピュータグラフィックス(Computer Graphics, CG)になった新しいシリーズも作られています。

 「五十知命」という言葉が重く響きます。四書の一つである「論語」では孔子曰く「五十にして天命を知る」とあるらしいのです。ですが五十歳となっても天命どころか未だ彷徨い続けるドリフターのままです。前述の声だけを聴いた車掌さんがお幾つなのかは知る由もないのですが、その領域までに達しているとは到底思えません。誰かのお役に立てる人間となる為にまだまだ自分を磨く修行は果て無く続きます。

 このコラムも同様に彼方此方(あちこち)気紛れに興味が湧いた方向へと彷徨い続けることになろうこととは思いますが、「新しい葡萄酒は、新しい皮袋に」の譬え(たとえ)にあるように良いものは良いと認識することで、サンダバードの如く普遍を追及する姿勢で新しいことにも目を逸らさず盛り込んでいきたいと考えていますので、気が向いた程度でお付き合い頂ければとお願い申し上げます。

 何はともあれ、気楽な話ですのでのんびりお読みいただければ本懐です。

 電車の中で気を落ち着かせるために聴いた「エビスビーツ」"EVISBEATS"の楽曲である「なんともまぁなんだかな」は、2nd アルバム「ひとつになるとき」に収録されています。「ひとつになるとき」を聴きながら、連載と年齢のみならず作者と読者、その先にある、理想と現実、悲哀と歓喜、高慢と偏見、切望と成就、混沌と静寂、未来と永劫、そして何よりも、慈愛と平和、それらあらゆるものがひとつになるときを、バースデーケーキの蝋燭(ろうそく)に火を灯すように心に灯したいと思います。

 次回もお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes