03 : コンピュータとシステム

043 近未来の身につけるコンピュータ

01:社長ブログ 03 : コンピュータとシステム

もはや未来の話でも何でもない話、既に実用化されていて一般家電量販店で売られている身につけるコンピュータ端末。ビジネス的にはウェアラブル端末と言われている。
 
まだ、広く浸透されている訳ではないが、既に使っている人は少なくない。
 
朝の通勤電車内の経済新聞、夕方の通勤電車内でスポーツ新聞を読んでいる人を本当に見かけなくなった。今じゃ、多くの人がスマホをいじっている。
 
iPhoneが発売された当初、電車内でiPhoneを操作している人は先進的な印象があって、目を引いたもんだ。今じゃ全然珍しくもない。
 
私が独断でチョイスしたこれから当たり前になるであろう身につけるコンピュータ端末群。
 
個人的に何度も触れているけど これらはIoTシステムと複雑に融合して、生活に溶け込んでいくはず。2020年の東京オリンピック時にはこの写真の製品はオモチャでしょうね。

身につけるコンピュータ端末群

 
1. スマートウオッチ:単なる時計じゃないぞ、手に巻くスマホだ。時計機能が備わっているだけだ。
 
2. アクションカメラ:コンピュータそのものじゃないけどPCと連携して使われる。次世代は静止写真でなく動画の方が一般的。既にYouTubeにバイクや自転車の前面にこれらをつけてスリル満点の動画を投稿しているあれだ。
 
3. アクティビティトラッカー:普段の生活を自動計測してスマホに転送する。ウォーキング、ランニング、上り階数、消費カロリー、心拍、血圧などあらゆる健康情報と連動されるはず。
 
4. スマートメガネ
まだ、これをかけて街中を歩くと浮くけど、普通のメガネと分からないモデルも登場するはず。
待中から自分に様々な情報が飛んでくる。ちょっと怖い。
 
これらが広く浸透し当たり前になって、情報がやりとりされると凄い時代に突入しそう。それも数年後・・・。凄!
  
アンテナを張っている若い人から言わせれば、「ちょっと遅れていますよ」と、これでも言われる気がする。

078 2045年は、人類の技術的特異点

03 : コンピュータとシステム ピックアップ

2045年が人類の技術的特異点だって?

昨年あたりからIoT(特に制御系システム)の案件が実に多い。
2020年の東京オリンピックに向けての東京の街を IoT で変えていこうとしていることが良く分かる。


正直、IoT の言葉はピンとこない。


数年前にネットワーク機器会社のシスコ社がしきりに使っていた IoE の方が分かり易い。Internet of Everything だからだ。

関連書籍を数冊読んだ。
一見、薔薇色ような内容だが読み進めていくと、行きつく未来にとても気になる点が記されている。
2045年には人類の開発した技術が限界に到達すると予測されているのだ。これを技術的特異点(Technological Singularity)と呼ぶらしい。
特異点なんて言うとビッグバンやブラックホールなどを思い出してしまう。


要は、コンピュータ技術の物凄い進歩で人間の開発した技術が限界に達し、人類を超える究極の人工知能が発達し、その人工知能は人間より優秀な人工知能を開発していく。
これって、ターミネーターのスカイネットが人類の終焉を提示していた映画と同じじゃないの?

凄いのは大真面目に既に多くの企業が研究開発しているってこと。
グーグルしかり、マイクロソフトしかりだ。
しかし、ビルゲイツらもこの進歩には脅威を抱いている一人らしい。

そんな未来を見るには、2045年まで生きなきゃいけない。あと30年近く先だ。ちょっとなあ~。

30年後は、どうも今の常識で考えられない世界になっているようだ。
ああ、実に末恐ろしい・・・。

とりあえず、2020年の東京オリンピック時に IoT システムがどこまでになっているかだ。

039 3G、LTE、4Gそして5G

01:社長ブログ 03 : コンピュータとシステム

携帯電話を使っていると 3G とか LTE とか名前だけ何となく知っている。これは移動通信技術の規格であり簡単に言えば速度の違いだ。
 
G とは Generation の意味だけど、元々ドコモが3Gから 将来登場する4Gの一歩手前の技術として LTE が登場した。しかし、LTE と 4G の差が無くなり、今はLTEも4G も同じ扱いになっている。
 


そして、近未来に5Gが登場する。最近のIT業界は IoT関連案件も多く、更にウェブ絡みのシステムやスマホアプリの案件がやたら目立つ。
 
IoTに関しては、東京オリンピックに向けてのサービス案件が目立つ。5Gも東京オリンピック前には一般的になるはずだ。
 
ようやく4Gが普及してそのスピードに安堵したばかりなのに数年後は5Gか~。
4Gから5Gになると、単純に今より同じ周波数帯域なら1000倍近いデータ量のやり取りが可能になるらしい。実際の速度は現行の数十倍~100倍程度になるだろう。それでも光ファイバーより早くなるってこと?
 
クラウド技術が浸透して、今より数十倍の速度になるなら、今の不可能が可能になる。
 
CPUの向上と合わせて、アプリは更にヘビーな要求に応えられるようになり仕様も変わるだろ。
今語られている夢のIoTサービスは、間違いなく実現するだろう。
 
技術の進歩は凄すぎる。未来が楽しみ。長生きしなくては・・・。

037 マルチタスクとマルチスレッド

01:社長ブログ 03 : コンピュータとシステム

この業界にいると、タスクとかスレッドって言葉が良く登場する。

この手の用語は掴みどころがないため、初心者に説明するにはチト難しい言葉だ。そもそもまだ初心者に説明する必要がないのかもしれない。

ちなみに、インターネットでタスクの意味を調べたら、『 OSから見た処理の実行単位。通常はスレッドが実行単位となるが、OSによってはプロセス(複数のスレッドを含むプログラム全体)を・・・』等の説明がされていた。

初心者には、まず理解不可能だろう。

この際、正しい解答ではないが、誤解を恐れず大胆に定義しよう。
この業界に直接関係ない人であれば、感覚的に知っておくと良いかもしれない。
但し、誰かに知ったかぶりして話すと、赤っ恥をかく恐れもあるので、決して引用しないように!


あなたと奥さんが子供と仲良く暮らしています。
あなたが「プレゼンソフト・パワポ君」、奥さんが「イラストソフト・イラレ子さん」、子供が「メールソフト・アウトルッ子ちゃん」であり、PC内で3人のソフトが動いています。

3人が部屋(パソコン内)にいます。パワポ君はソファで小説を読んで、イラレ子さんはテレビを見て、アウトルッ子ちゃんはおもちゃで遊んでいます。3人のソフトはバラバラに動作しています。それが、マルチタスク。

写真を借りれば、それぞれの手がタスク、各手の行動単位がスレッド(かなり強引な定義なので、決して引用しないように!)

今度は一人に注目します。イラレ子さんはテレビを見ていますが、おせんべいを食べながらお茶を飲んでいます。テレビを見て笑ったりうなずいたりしていますが、近くにいる子供の注意も怠りません。
このように、イラレ子さんの複数の行動がマルチスレッド。

即ちマルチスレッドは、ワープロソフト・ワードを例にすれば、キーボードから入力して、文字候補を画面に表示して、いろいろな文書レイアウトに整え、複数文書ファイルを同時に開き、裏画面で印刷処理を行う機能・・・と、なる。

同じプログラム上にあるスレッドはPC内のメモリを共有し、その複数のスレッドはCPUを順番に切り替えることによって、あたかも同時実行しているように見える。
あ~後半がちょっと難しくなってしまった。

077 オープンソースを使いこなせ2 #10

03 : コンピュータとシステム

オープンソースとは開発者の著作権を守りながらソースコードを改変することができる。そのためソースを公開し、再配布可能にする等のライセンス契約がある。

そのライセンス形態には、 GLP系、MPL系、BSD系などがある。
しかし、深く知る必要なんかない。有難く使わせて頂ければ良いのだ。(笑)

オープンソース

これこそがオープンソース。勿論、食べられる本物

MySQLは、現在オープンソース界で最も使われているデータベース。
もともと Perl言語を拡張したPHPと一緒に使用するケースが非常に多い。

少し前までは Java がウェブシステムの首席言語だった。今や小規模なシステムならPHPの方が多く使われている。

PHPは、HTMLの必要な箇所にプログラムを埋め込むことが出来る。何と言ってもウェブシステム構築のための関数が豊富だ。おまけにマルチバイトの扱いが容易。

最大の長所は、データベースへの接続(特にMySQL)が容易であること。関数を利用してデータの参照や更新(SQL文の発行)を簡単に行うことが出来る。

これらオープンソースを利用して、高機能な商用ウェブシステムを構築することが出来る。
この文章にピンと来ない人も多いかもしれない。

かっては開発言語(コンパイラ言語)を使用する場合もお金を出さなければいけなかった。データベースなんか非常に高価だった。
しかし、今や全てオープンソースで構築することさえ出来る。

定番のオープンソースは完成度が非常に高く、SEにとってオープンソースは必要不可欠なツールになったのだ。

076 オープンソースを使いこなせ #9

03 : コンピュータとシステム

人によってさまざまだと思うが、オープンソースと言うと何を思い浮かべるか?

マイクロソフト対抗の OpenOffice、ウェブ系なら WordPressXOOPS、Drupal などある。ネットShop構築だけ考えても EC-CUBE、osCommerce、Live-Commerce、CS-Cart …など思い当たる。

ウェブサーバーに必要な ApacheTomcat もオープンソースだよな。おっと、最大のオープンソースと言える Linux を忘れちゃいけない。
それに載せる MySQLPHP、開発ツール Eclipse だってタタで使える。MySQL と言えば PostgreSQL を記載しなければ片手落ちだ。

どれも非常に多くの人に利用されている。Apacheだけ記載しても、高い信頼性もあり実質業界標準になっている。

どれも下手な商用ソフトより遥かに性能が良い。まあ、世界中の頭脳人により改良に改良が加えられるのだから当然かな。
オープンソースと呼ばれるものは驚くほど沢山ある。使用にあたってライセンスが発生するものも出てくるが、どれも基本的にタダで使用できる。
そう言えば PerlRuby もプログラム開発にタダで使える。

Open SOURCE

オープンソースと呼べないが、ブラウザの Internet Explorer をはじめ Firefox、Chrome、Safari なども基本的に全て無料だ。Firefox と言えば、メールソフトの Thunderbird を忘れてはいけない。
グラフィックソフトなら GIMP も書かなきゃいけないし、最大のGoogleが提供する各種サービスも非常に高機能で多くの人に利用されている。

まあ、各種ブラウザやGoogle等に代表されるクラウドサービスは、オープンソースでなく、フリーソフト・無料ソフトと言うべきなんだろうが。

以前、クリス・アンダーソンの「フリー」が流行ったが、デジタルの世界に於いてタダでサービスを受けられることが実に多い。「フリー」の手法は、極端に言えば、タダでユーザーを集めて一部を有料化する方法。

オープンソースは無料で使えるが、ビジネスとしてそれを利用してシステム化したものは、大抵は有料となる。Linuxは無料だけど、それをそのまま使う人なんていない。Linuxのコアを入手してもそれを使える人なんか殆どいないからだ。

自分も Linux がもてはやされた頃 Red Hat Linux の箱に入れられたソフトを数千円のお金を出して買った。専門雑誌にタダでCD-ROMが付いているのに何故と思うかもしれない。
仕事や業務に使う場合、無料のオープンソースであってもサポートが必要な場合があるからだ。

既に主流は変わった感はあるが、ウェブシステムを開発する際にオープンソースソフトを組み合わせた LAMP なるものが流行った。
OSに Linux、Webサーバに Apache、データベースに MySQL、プログラム言語に PHP。各ジャンルで定番ソフトを合わせた安易的な発想だが、意外と利用される機会は多かった。(過去形で書いているのは、既に微妙な時期だからだ)

基本的に開発環境はタダで入手できる。その開発環境を利用してシステムを構築する訳だ。今は非常に有難い時代なのだ。

このオープンソースにはライセンスがつきまとう。
これからのSEはオープンソースをどうつきあうべきか?

075 知識を広げろ #8

03 : コンピュータとシステム

システム開発を行う場合、一番重要なのは業務をいかに理解しているかだ。次にシステム環境の理解が重要。つまりターゲットマシンやプログラム言語等を何にするかだ。勿論、予算あっての話だが、それは別の話。

繰り返すが、プログラミング言語は重要ではない。業務知識の方がずっと重要だ。システムは仕事に有効活用されて意味がある。使われないシステムなんぞ何の意味もない。
要は言語とはシステムを動作させる手段でしかないのだ。但し、これが非常に重要な位置を占めるんだけどね。

NEXT WORLD 私たちの未来

同じIT業界でも、旬の仕事をしていない人の方が多い、保守運用作業しか経験のない人も多い、更にシステム開発と無縁のITサポート業務の人はもっと多い。

よって、好きでその仕事をしている人なんて僅かだ。今現在、将来のスキルアップに役立ち、仕事が楽しい職場であれば、感謝しなければいけない。
多くは生活のために仕方なくやっている人の方が多いのだ。

仕事の愚痴を言っても仕方がない。現在の従事している作業を徹底的に理解しよう。業務を徹底的に理解し、システムの開発手法・プロジェクトの運営方法などを貪欲に学んでおく。即ち今ある環境を利用して知識を広げよう。

「でもさ、俺の仕事ってルーチンワークだから覚えることもさほどなく、無理なんだよなあ」と思う人がいても、意外と吸収すべき箇所は沢山残っている。どうしても無理と判断するなら上長に配置転換の希望を出すべきだ。まず、それを自分が堂々と言えるか自問して欲しい。

私は30代になった頃から上流行程ばかりをやってきた。今となっては色あせた業務知識もあるが、時が過ぎても多くの知識は役に立つものばかりだ。確かに無駄な経験もあったが、どれも肥やしになっている。業務SEってそんなもんだ。

技術者は目の前のプログラム技法にばかり目が行くものだが、プログラム言語は必ず移り変わる。
業務SEでない人でプログラム言語に拘るなら、徹底的にプログラミング開発のベテランになることだ。
言語の考え方は基本はどれも同じだから一流技術者と認められれば、開発環境が変わってもさほど恐れることはない。
どこで一流技術者と分かるか? スキルシートや職務経歴書で分かる。一流の人の職務経歴書ってとにかく凄い内容だ。

面接の段階で、圧倒的な知識で面接官に立ち振る舞い「明日からでもウチに来て下さい!」と言わせよう。どうせ生きるならそこまで目指そう。目指すだけなら誰でも目指せるからね・・・笑。


まず、自分の好きな分野で一流になろう。若ければ若いほど失敗しても挽回できる。若いうちに沢山失敗しましょう。

074 未来のコンピュータ #7

03 : コンピュータとシステム

ここまで数回に渡って記述した内容は、私の過去のコンピュータ経験によるものだ。
アセンブラの経験こそないが、汎用機のCOBOL、C言語、Java、更には VB や VBA 、HTMLは当然として各種スクリプト言語、ActionScriptまで好奇心で試した。

こうした言語はノイマン型コンピュータと呼ばれる現在世間一般にある殆ど全てのコンピュータの基本構造で成り立っている。即ち、CPU、メモリ、外部記憶装置が前提に考えられている。

昨今はクラウドコンピューティングがIT業界では重要キーワードになっているのはご承知の通り。これは、ネットの常時接続が前提として考えられている。今やネットワークありきでコンピュータは進化している。これがもっと進化すると、コンピュータの考え方は変わってくる。

NEXT WORLD 私たちの未来
NHKスペシャル「NEXT WORLD」より クリックするとジャンプします

今年1月のNHKスペシャル「NEXT WORLD 私たちの未来」の第1回目に未来のコンピュータが紹介された。
未来のコンピュータは、現在のノイマン型コンピュータでなく、非ノイマンコンピュータとなる。

IT用語辞典で調べると、「脳の神経細胞に基づくニューロコンピューターや量子力学の原理を応用する量子コンピューターなど」 と定義されている。
現在のコンピュータはデジタル信号「0」「1」の2進法で処理を行われているが、この概念が覆る。ここで、ニューロコンピュータ? 量子コンピュータ?って何なのか疑問が生じる。

ちょっとキーワード検索して調べてみたが、もう何を言いたいのかよく分からない。
実現には20年から50年後になるようなことが書いてあるが、早ければ 現在赤ちゃんが大人になった頃、非ノイマンコンピュータが登場している可能性はあるってことだ。

どんなコンピュータアーキテクチャになるのか非常に好奇心をくすぐられる。すごく長生きしないといけないけどね。

ひとつだけ言える。
コンピュータのアーキテクチャーが変わるってことは、プログラミングの概念が変わるから、現在の Java や C++ をはじめ 現在の全ての言語は間違いなく過去の言語になり、新しい概念のプログラム言語が生まれるだろう。

073 ソフトの基礎知識を学ぼう3 #6

03 : コンピュータとシステム

プログラムの基本は、上から下に流れる。勿論、サブルーチンの定義でプログラムの最初に戻ったり最後に行って、また元の場所に戻ったりするが、それは処理の定義の仕方であり、原則プログラムは上から下に流れる。

前回、Java、C♯、C++、objective-C は、C言語から派生している。C言語から派生したこれらはオブジェクト指向言語として登場し、クラスと継承を利用することで生産性が格段に向上する。と記した。

ここで「オブジェクト指向」は何ぞや?だが、クラスインスタンスと言う言葉が必ず登場する。
クラスとは、かって流行ったインベーダーゲーム。インベーダーを定義したものがクラス、そのクラスによって生成されたインスタンスがインベーダーたち。
たこ焼き屋なら、たこ焼きのプレートがクラス、出来たたこ焼きがインスタンス・・・よく「オブジェクト指向入門」で登場する説明文だ。

しかし、これから学ぼうと思う人にこんな例え話をしても、「だからどうなのさ?意味わかんない」となる。そりゃそうだ、現実の例をむりやりこじつけても理解に苦しむ。

om

アセンブラ言語の登場から、これまで幾つものコンパイラ言語は登場してきた。
コンパイラ言語はターゲットマシンに合わせて人間が組んだプログラムを機械語に変換してくれる。しかし、コンピュータが浸透しネットワークが普及すればするほど、ターゲットマシンは特定されなくなった。

パソコン一つとっても Windowsあり、Appleあり、UnixあるいはLinux かもしれない。そのOSだってOSのバージョンが変わるだけで仕組みが変わってくる。昨今はタブレットやスマホも登場している。

オブジェクト指向言語のJavaが普及した最大の要因は、Java VM(Virtual Machine)の概念を取り入れたことだ。

Javaで組んだプログラムをコンパイルすると、中間コード(Javaバイトコード)になる。ターゲットマシンはあらかじめこの中間コードを Java VM で機械語に変換する。

「何でそんな面倒なことをするの?」と思うかもしれないが、これには深い意味がある。

本来ならプログラムはターゲットマシンに合わせて機械語に変換される。CPUやメモリ空間、外部記憶装置とのやりとりなど機械語に変換されるのだが、この Java VM が各プラットフォームに用意することで、その中間コードをターゲットマシンに合わせた機械語に翻訳してくれる。
よって機種を意識しないでプログラムを作成することが出来る。

即ちコンピュータのハード上にあたかも仮想のコンピュータが出来て、コンピュータの機種やOSを超えて動作するのだ。だから Java VM(Virtual Machine)って言うんだけどね。

西暦2000年前後から Javaは急速に普及し、Java技術者は非常に優遇された。
もう、猫も杓子もJava Java と言い出し、Java技術者が不足した頃だ。

072 ソフトの基礎知識を学ぼう2 #5

03 : コンピュータとシステム

そこでアセンブラ言語を改善し、登場したのが COBOLやFORTRANであり、C言語だ。
これら言語はコンパイラ言語と呼ばれ、プログラムをそのコンピュータで動作する機械語に変換してくれる。

コンピューター初期の頃はメーカーによっては、アーキテクチャーは異なるので、そのハードウェア前提にプログラムを組まなければならなかった。それがアセンブラ言語だった。

まもなくコンパイラ言語が登場する。これは、人間が命令形式で作成したプログラムをコンパイラがそのハードウェアで動作する機械語に変換してくれる有り難い仕組みのことである。
これによりより生産性の高い、より複雑な処理を行えるプログラミングの考え方が重視されるようになった。

汎用機全盛の頃は、COBOL、FORTRAN、PL/Iなどの言語を使用することになる。事務処理のCOBOL、科学技術計算のFORTRAN、両方を兼ね備えたPL/Iが広く使用された。
その後、汎用機を背を向けて登場してくるC言語は、マイクロプロセッサの制御、その後のUNIX系、PC系で多く利用されるようになる。

om

上記に記載した COBOL、FORTRAN、PL/Iで、今も生き続けているいるのはCOBOLとC言語くらいだろうか。
COBOLは汎用機が超高価だった頃に登場した言語であり、あえてハードの制御が出来ないようになっている。
逆にC言語はハードの制御が可能だ、C言語で制御プログラムを組めるのはそこにある。C言語を学ぶと分かるが、Java、C♯、C++、objective-C に近いものがある。
それは当然だ。Java、C♯、C++、objective-C は、C言語から派生しているからだ。

C言語から派生したこれらはオブジェクト指向言語の特徴を持つ。オブジェクト指向言語の詳細は別に触れるが、言語の備えるクラスと継承を利用することで生産性が格段に向上する。

こうして一見遠回りで面倒に思えるかもしれないが、ハードとソフトの歴史を詳しく紐解いていると、コンピュータが非常に良く分かる。これから何の言語を勉強すべきかさえも見えてくる。
そして、本格的な言語を1つマスターしていると、いつのまにかコンピュータの仕組みさえも分かってくるから面白い。繰り返すが、本格的な言語を1つマスターすることだ。

この業界を志して、思うように言語開発が出来ずに挫折する人は沢山いる。
それは言語が分からないのでなく、アルゴリズムが分からないからだ。
言語の文法をしっかり覚えているのに、いざプログラムを組みだそうとすると、どう組んで良いのか分からないのだ。身に覚えのある人は沢山いるはずだ。

アルゴリズムを理解していないためプログラムを組む「こつ」が掴めないのだ。
一つ良いヒントを与えよう。マネから始めれば良いのだ。

1 2 3 4 5 6 7 8 >