ラベル コラム の投稿を表示しています。 すべての投稿を表示
ラベル コラム の投稿を表示しています。 すべての投稿を表示

2017年2月26日日曜日

【コラム】プログラミングと英語は選択制にした方が良いのではないか。

  • 公開日:2017年02月26日

プログラミングと英語は道具。選択制で十分だと思うのだが…

2020年度以降の学習指導要領で、小学校から英語が教科化し、プログラミングが必修になることが決まりました。

これは愚策だと思います。私は仕事柄プログラミングと英語を使いますが、結局、プログラミングも英語も道具でしかないと思っています。この2つの現代ツールは過大評価されすぎです。

プログラミングや英語は、国語や算数や理科とは根本的に違います。小学生のうちは、道具の使い方よりも基本的な学力を伸ばすのに時間を使った方が、将来の役にたつ能力が身につきます。
というのも、道具は使い手の力量次第で、ゴミにも世界を制する武器にもなるからです。例えば、プログラミングで画像処理をする場合、微分積分と線形代数の理解が必要です。今をときめくAI技術、機械学習ならプラスで確率と統計学です。ハード系に関わるなら解析学や物理学、化学や電気回路の学習が必要です。英語はドキュメントや動画を確認し、より多くの人とコミュニケーションを取るツールとして活躍します。

教育者達がこの提案をした気持ちはわかります。facebookのザッカバークは英語を駆使し、プログラミングで20億人が集まるバーチャルな帝国を創りました。彼はプログラマーとしてもTop Coderの上位に入る腕前です。しかし、ザッカバークはプログラミングができなくても成功したでしょう。彼はfacebookの前にも色々なプロダクトを生み出し、企業から多くのオファーをもらっています。世界最高の大学のハーバード大学にも楽々入学し、フェンシングの腕前も一流です。彼のインタビューを読むと、様々な方面の知識量に驚かされます。彼は元々飛びぬけて優秀な人間なのです。

プログラミングは確かに素晴らしいツールだと思います。しかし、全ての人に必要はありません。
もし、学校でどうしても教えるというのなら、興味がある人だけが受講する選択制にするのが一番良いでしょう。英語も同様です。

これは決して差別なんかではありません。区別です。小学生のうちからあまりにも負担をかけすぎではないでしょうか。教育という言葉で武装して、大人のエゴを子供達に押し付けるのは反対です。

授業風景を想像する

さて、プログラミングが必修になったとして、どのように小学生にプログラミングを教えるつもりなのでしょうか。
決めるのは文部科学省だから、実績と汎用性のあるJavaを選定すると仮定して、実際の授業を想定してみます。

授業の初日、先生がパソコンに最初のコードを記述します。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("小学生のプログラミング");
    }
}
      

手元のモバイルに映るこのコードを見て、小学生はどう行動を取るでしょうか。

「先生。読めません」

と多くの子供達が手を挙げるのではないでしょうか。

とはいえ、今の子供達は早期に英語教育を受け、簡単な英語くらい理解しています。なので、以下の質問が飛んでくるかもしれません。

「先生。argsってなんですか?」

当然の疑問です。しかし、この質問は文部科学省の想定通りです。先生は指導要綱の書き込まれた教科書のマニュアル通りに答えます。

「いい質問ですね、佐藤くん。argsはargumentsの略ですよ」

「そっか。argumentsを省略してargsなんだ」

「はい。佐藤くん正解です。皆さんもわかりましたね?」

子供達はそれを聞いて納得し、授業は進んでいく…

わけない!!

いや、今の子供は優秀で好奇心も旺盛です。ほとんどの子供はgoogleでargumentsの意味を検索するはずです。すると、モバイルの画面には答えが表示されます。

arguments 名詞:引数

さて、小学生達はこの漢字を何と読むでしょう。

いんすう?
ひきかず?

残念。
これはひきすうと読みます。
引数は変数を受けるパラメーターです。sがあるので複数のパラメーターを受けられるのだな、とここまで考えられれば満点です。

ここまで読んだ皆さんは、もう理解したと思います。

計画に無理がある

のです。

ちなみにほとんどの初心者用のプログラミング参考書では、public static void main(String[] args)を「おまじない」として認識させます。

十分な学習経験のある大人でさえ、最初はおまじないとして認識しながらゆっくりと学習していくのです。算数や国語で悪戦苦闘している子供達にこんなことをやらせて何の意味があるのでしょうか。優秀で意欲のある子供だけが学習すれば十分ではないでしょうか。

本当に大切なこと

子供達が未来を担う宝と考えるのなら、力を入れるべきはプログミングや英語ではありません。

数学、物理、化学

です。

現在の我々の生活を支え、豊かにしているのは科学です。そして、科学は高度な学力の上に成り立っています。
英語やプログラミングは、効率的に処理する道具でしかありません。

他の分野、例えば芸術分野だって同じです。

エレキギターがロックを生み、音声技術がボカロを生み、DTMがEDMを生みました。芸術だってイノベーションを起こすには、科学が必要になります。つまり、学力が全ての礎なのです。

つい先日、科学誌Newtonを発行するニュートンプレスが民事再生法の適用を申請しました。社会は科学に興味を失っています。世間で理系の人材は貴重だと言われていますが、言われているだけで実際の現場はどこもひどい人手不足で待遇も良くないです。労働基準法? なにそれ? という雰囲気です。トランプ大統領や安倍政権の行動、芸能人のゴシップではネットのコメント欄が賑わいますが、科学関連は閑古鳥がないています。

日本は岐路に立っていると思います。我々の子供たちは、先進国の人間として豊かな生活を送り続けることができるのでしょうか。今のままでは厳しいと思います。

だからこそ教育は何よりも大切です。教育は、多くの富を生み出し、生活を豊かにし、命を救います。

文部科学省や政治家には、なにが世の中を支えているのかを再考して欲しいと思います。お金が必要なのはわかりますが、あまりに金融政策に偏りすぎです。人類の生み出した英知が手に入るからこそ、お金に価値があるのです。

将来の日本は、少子高齢化が避けられません。だからこそ多くの可能性と時間を持つ子供達の教育は大切です。日本のためにも、良い教育が導入されることを願います。

PICK UP オススメ書籍

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年9月26日月曜日

【コラム】ビットコインの実装をして見えた仮想通貨の未来

テクノロジーは金融の世界も大きく変えようとしている

フィンテックという言葉が世の中を席巻しています。
フィンテックは造語で

FinTech = Finance(金融)× Technology(技術)

という意味です。
つまり、金融とITを掛けあわせた領域のことを指しています。

日本は、いまだに現金のやりとりがメインです。なので、フィンテックと言われても、あまりピンとこない人も多いかもしれません。
しかし、テクノロジーが金融やマネーの概念を大きく変えていくことは間違いありません。

実際、株式市場ではブロックチェーン関連企業が投資家の注目を集めています。
しかし、識者や経営者のフィンテックに関する未来予想は多いですが、エンジニア視点から語られたフィンテックの未来についてはほとんど見かけません。

これは、テクノロジーに長けた識者や経営者が少ないことにも原因がありそうです。また、実際にブロックチェーンをコードレベルで実装した人が少ないからでしょう。特に、仮想通貨に関しては、技術者でもわかりにくい内容なので、ブロックチェーンという単語が過大評価されているようにも思えます。

私は最近、ビットコインのヴォレット(財布)を実装する機会があったので、ビットコインをコードレベルで把握できました。
なので、この記事では、仮想通貨の可能性についてエンジニア視点で記述しようと思います。

ビットコインと仮想通貨

ビットコインの名称を聞いたことがある人は多いと思います。
いわゆる仮想通貨です。

日本が発行する通貨は「円」で、アメリカが発行する通貨は「ドル」なのは皆さんも知っての通りです。
これら「円」や「ドル」といった通貨は国家が発行し、国家の信頼度により通貨の国際価格が決定します。これが今までの「常識」でした。

一方、ビットコインは国家が発行する通貨ではありません。ビットコインは、世界中のユーザーによって管理されます。
景気が悪いからといって紙幣をじゃぶじゃぶに刷ったりして、通貨の価格をコントロールすることはできません。

ビットコインの通貨の発行は、マイニングと呼ばれる行為を通してしか行うことができません。これは非常に賢明な設計です。

仕様を策定したSatoshi Nakamoto氏がビットコインを作った理由は、「国家の発行する紙幣はインチキだ」という考えからです。
もちろんこの意見に異を唱える人もいるでしょう。現代の資本の仕組みについては色々な意見があると思います。
しかし、今の金融資本の状況を考えると、ビットコインは出現するべくして出現した技術といってよいでしょう。

ビットコインは、現在、日本で使用できる店舗はほとんどありません。しかし、今後は少しづつ広がっていくでしょう。先日、公共料金がビットコインで支払えるようになるというニュースがありましたが、とても良い傾向だと思います。

みなさんに知っておいてほしい大切なことは、国家が保証しない通貨で取り引きが可能になったことです。
これは画期的なことです。これまでは国家が資本を管理してきました。ニクソン・ショックのインチキっぷりからもわかるように、通貨とは取引の道具でしかありません。
取引を円滑に運ぶためのルールなのです。

国が発行量を決める通貨と異なり、ビットコインはオープンソースです。つまり、世界中のあらゆる人が通貨を作成し、取引所をも作成できるようになったのです。

ブロックチェーンの正体

ビットコインといえば、ブロックチェーンという単語がバズワードとなっています。
このブロックチェーンのアルゴリズムには、以下の様なアルゴリズムが利用されています。(プログラミングJavaサイトを運営しています。開発者の人は是非利用してみてください。)

これらのアルゴリズムは昔から存在するアルゴリズムです。つまり、ブロックチェーンは、既存のアルゴリズムを組み合わせて作り出したデータ構造であり、技術なのです。

ビットコインは安全なのか

結論から言うと、「ほぼ」安全です。

今後、ハッキングするスーパーハッカーが出てこないとも限りませんが、バグはすぐに修正されるはずです。
国家がガンガンと発行する紙切れより、はるかに信頼性は高いです。

たとえ不正できても、ハッキングが可能なのは、世界でもごく一部の天才プログラマーだけです。偽札を作るようなことは一般人には不可能です。

日本の通貨「円」のデジタル化

そんな遠くない未来に、日本の通貨である円もデジタル化が検討され、実施されるでしょう。
これは、円だけでなく、ドル、元、ユーロなどもデジタル化されるはずです。

理由は簡単です。それは、

不正がほぼ不可能な上、税収漏れがなくなる

からです。
国家にとってこんな素晴らしいことはありません。

税を納める国民側からは「ふざけるな」という意見も噴出するでしょう。

しかし、ビットコインも含めたデジタル化の利点として、全てのトランザクションを記録できるということがあります。
ブロックチェーンは、あらゆる取引の記録が残ります。それは、闇の世界の取引だろうと、地下ビジネスの取引でも同様です。つまり、個人も国家も脱税は不可能です。未来にはAIを使った不正監視の導入も可能になるでしょう。ビットコインを通した取引を自動仕訳をする仕組みなども実装されるかもしれません。

よくも悪くも、世界中の国民国家による完璧な監視が可能です。

日本の通貨「円」のデジタル化の方法

現状では、通貨の作成は、ビットコインをフォークして、仕様を固めていくのが一番確実です。通貨の流通量に関しては、ビットコインのようにマイニングで国家予算のコントロールをするのは現実的ではありません。もっと柔軟な仕組みにするべきです。

また、取引量も膨大なので、巨大なデータ量のテストが必要になります。試行錯誤が必要だと思います。

もし、案件として取り組む予定がある方は、僕も誘ってくださいw 面白そうなら時間を空けて参加したいので。

強くなる企業と個人

誰でも世界中で通貨が発行できるということは、それだけ企業や個人の力が強くなります。

信用力のある企業や個人は、自らが発行する通貨で取引を完結できるようになります。

一方で、これにより生じる格差については、議論が必要です。権力が収奪的になるとイノベーションが起きなくなり、国家が衰退します。そして、結局は信用力のある企業や個人も力を失います。
日本は社会主義的な側面が強いので、注意が必要だと思います。これらの考察について詳しく学びたい方は、「国家はなぜ衰退するのか」を読んでください。

この本は起業家や資本家を目指す人には必ず読んでもらいたい本です。

まとめ

仮想通貨は、今度どんどん広がっていくでしょう。金本位制からの移行のように、ある日突然置きかわる可能性もあります。

国民が認識しておくべきことは、実装で不正が行われないことに注視することです。例えば、ある条件を満たした取引だけトランザクションから見えないようにする実装ですね。これをやられたら監視できないので、合法的な税の抜け穴になってしまいます。

どんな技術でも扱うのは人です。移行するにしても、ニクソンショックの時のようにいきなりは避けて、徐々に全世界の国民に仕様(ドラフト)を公開して欲しいですね。

PICK UP オススメ書籍

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年3月18日金曜日

【コラム】Android案件を見積もる場合に考えておくことリストを読んで思ったこと

  • 公開日:2016年03月18日

記事概要

コラム記事。


アプリの見積もりは難しい

このサイトの意見に、ほぼ同意なので読んでみることをおススメします。
少しだけ追記事項をコラム風に記載しました。

外注するな

もし、あなたの会社がアプリの開発を外注で作成しようとしているなら、それは間違いなくリスクの高い仕事になる。
web開発とアプリ開発は違う。WEBと同じ感覚だと、まともなアプリは作れない。結局はWEBviewメインのアプリになるだろう。
もし、あなたが仕事を受注して開発する立場なら、かかった工数だけ請求できるように契約しておこう。基本は内製するべきということを認識しないといけない。

更新を続けろ

作成したアプリを2年も放置すれば、作成者か上級開発者以外は触れることができないアプリになるだろう。googleやappleのプラットフォームを利用するなら、彼らの開発の流れに乗らないといけない。彼らは国家からの命令をも拒否するくらい規約に忠実だ。君の意見など通らない。

純正のライブラリを使用しろ

アプリのライブラリはなるべく純正を利用しよう。Androidの進化はとてつもなく早い。素早くに対応していくためには、基本に忠実に作るのがベストプラックティスである。遠回りに見えるが、実は近道だ。

学習を続けろ

止まると死ぬ。

まとめ

つまり、アプリの受託開発はオススメしないってのが結論です。
周り全部が不幸になる可能性が高いです。内製しましょう。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年3月4日金曜日

【コラム】どのプログラム言語から学ぶべきか。

  • 公開日:2016年03月04日

記事概要

コラム記事。


facebookのCEOザッカーバークはphpでfacebookを開発した。

もうすぐ4月になる。
夢と希望を胸に抱いた(?)多くの若者達が、新社会人としてデビューする。

君がITエンジニアとして社会人デビューするのであれば、プログラミングを学ぶことになるはずだ。また、新入社員でなくても4月から心機一転、プログラミングを学ぼうと思っている考えている人も大勢いるだろう。

もしそうであれば、はじめてのプログラミングにどの言語を学習しようか迷っているかもしれない。
そもそも、今からはじめてのプログラミングを勉強する場合、どの言語を選択するのが良いのだろうか。

そんなわけで、今回は、はじめて学ぶプログラミング言語について言及しようと思う。

はじめて学ぶ言語とは

君がどんなプログラミング言語を勉強するかはわからない。しかし、確実なことが一つある。君がはじめて覚えた言語が、プログラミング的な思考をするベースとなる。

君ははじめて習得したプログラミング言語を用いて、プログラミングの文法を覚え、アルゴリズムを覚え、デザインパターンを覚え、さらにはテクノロジー全般の知識を広げていくことになる。そこで得ていく知識と技術は、君の生涯の宝となり、人生の進路をも形成していく。

このコラムを読んでいる君はおそらく日本人だろう。であれば、君の思考の基本となっているのは日本語だ。
はじめて習得したプログラミング言語は、ITの世界における君の日本語となる。

プログラミング言語の学習は、最初のプログラミング言語の学習がもっとも大変である。海外の言葉の学習と同じだ。そして、一度習得してしまえば、他の言語を学ぶのはそんなに難しくはない。
だからこそ、最初はひとつの言語に集中して深く学習するのをオススメする。逆に、全てのプログラミング言語を浅く学んでも、あまり役には立たない。

だから、君と最初のプログラミング言語は付き合いが長くなる。なので、あなたが一番好きな(興味のある)言語を選ぶべきだ。

もしかしたら、君が好きな言語は仕事として必要な言語とは別かもしれない。ならば、仕事の後に自宅に帰ってその言語を利用してプログラミングするべきだ。もしくはツールの作成に利用するべきだ。

「続けること」「好きになること」。

この2点こそが、君を素晴らしい技術者へと変化させるのである。

とはいえ、選択肢がないと迷ってしまうかもしれない。なので、ここでは個人的にお勧めの言語を3つ選んでみた。

Java

君がエンジニアとしてずっとやっていくつもりならjavaを選ぼう。この世界はCとJavaが発展させたと言っても過言ではない。CとJavaはプログラミングの基礎である。
とはいえ、WEB開発、スマホアプリ開発においては、C言語は触れる機会が少ないだろう。なので、今からならjavaを選択するのが良いだろう。

しかし、もしかしたら君のメンターはC言語を勉強することを激しく勧めてくるかもしれない。しかし、WEB開発やスマホアプリ開発が君の仕事なら、その提案は断ってよい。
C言語は必要になってから学習すればよい。長くIT業界でやっていれば、WEB開発エンジニアでもCに触れる機会が必ず出てくる。その時の君は、すでに大きな技術が備わっているはずだ。その時、必要な箇所のみを学習すればよい。

また、これからjavaを学習するならandroidの開発を中心に据えるとよいだろう。androidのフレームワークは特殊だが、javaを学習するには優れたフレームワークだ。android内のコードには、先人の様々な英知が詰まっている。コードを書いて書いて、書きまくると良い。

一方で、WEBアプリをjavaで作ろうとしているなら、やめるべきだ。WEBアプリを作るなら、RubyかPythonを選ぼう。
今の時代にjavaでWEBアプリを作るのは効率が悪い。大規模なWEBアプリでなければ、javaの力の恩恵を受けることは少ないだろう。

Ruby

君がWEBアプリを作って世界で勝負をしたいと考えているならRubyを選ぼう。RubyのデファクトフレームワークであるRuby on Railsは君をその舞台に連れて行ってくれる。
しかし、同時に、Ruby on Railsは君の心を何度も打ち砕こうとするだろう。なかなか思い描いたようにWEBアプリは作れないかもしれない。その時は、仕様がレールに沿っているかも考えよう。Ruby on Railsを使いこなすには、それなりの知識と技術を身に着ける必要がある。

また、WEBアプリを作り終えると、すぐにバージョンアップしたRuby on Railsが登場するかもしれない。君は更新作業を開始し、またエラーと格闘しないといけない。バージョンアップを放置すれば、そのWEBアプリは誰も触れることのできないパンドラの箱のようなWEBアプリになる。

だが、粘り強くバージョンアップを続けていけば、時代にマッチした素敵なWEBアプリを顧客に提供し続けることができる。
僕も今は、メインでRuby(Ruby on Rails)を使っている。

Python

最後の言語はpythonだ。もし君が機械学習や人工知能の仕事に就きたいのなら、pythonを選択することをおすすめする。pythonは素晴らしい言語だ。計算をするのに優れたライブラリが用意されている。

また、君がなにげなく利用しているyoutubeもpythonで作成されている。pinterestも同様だ。WEBアプリを作成するにも効率が良い言語である。まさに万能の言語だ。

一方で、pythonの欠点は日本での需要がほとんどないことだ。当然、日本語のドキュメントも限られている。pythonを使うのに英語ができないのは、竹槍でB29と対峙するのと同じだ。機械学習や人工知能の学習も英語での学習が基本となる。

まとめ

現状でのオススメ言語は、「Java」「Ruby」「Python」とした。
もちろん、これらの言語が嫌だという人もいるだろう。その場合は、自分の好きな言語を学習すると良い。ザッカーバークはphpで世界最大のSNSとなるfacebookを開発した。

大切なのは、プログラムで何をするかであり、プログラム言語そのものではない。プロジェクトに応じてプログラム言語を変えることは日常茶飯事だ。
英語圏なら英語を使い、中国なら北京語を使い、日本であれば日本語を使うのが当たり前だ。
日本(ruby)で英語(java)を使う必要はない。
システムでも同様で、そのときそのときに応じた言語を使えばよいと思う。

せっかくプログラム言語を学ぶのなら、長く続けて欲しい。
そして、君が世界の生活をより豊かにするようなシステムを作りだすことを期待している。
それが可能なのが、プログラム技術である。

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年2月26日金曜日

【コラム】アルゴリズムで動く市場は悪なのか

  • 公開日:2016年02月26日

記事概要

コラム記事


2016年になって日経平均は大暴落

2016年に入ってから株式市場が暴落しています。

去年21,000円近くまで上昇した日経平均は16,000円を切りました。

僕の保持している長期投資信託も、一時より結構目減りしています。

さて、今の投資の世界はアルゴリズムを利用してトレーディングが行われていることは多くの人の知るところだと思います。
このことは、アメリカでも問題として取り上げられています。
アルゴリズムを利用したトレードが世界中の市場で混乱が起きている原因だと指摘する批判は多いです。しかし、アルゴリズムで売り買いをコントロールするのはそんなに悪いことなのでしょうか。

アルゴリズムで動く世の中

現在の世の中にアルゴリズムは欠かせません。人々が普段の生活で日常的に利用しているサービスにもアルゴリズムは多く利用されています。

例えばみなさんが普段利用しているamazonや楽天です。物を買うときにログインすると、URLにhttpsという文字が付加されているのが確認できると思います。
これはhttpsプロトコルと呼ばれる技術で、HTTP通信において認証や暗号化を行うために利用されています。

httpsで利用されている詳細なアルゴリズムの説明を省きますが、この技術により私たちはインターネット上で安全に取引を行うことができます。

中には、インターネットを利用していない人もいるかもしれません。でも、銀行のATMは利用していると思います。このATMを使った銀行間の取引には、全銀プロトコルと呼ばれる取り決めが利用されています。
私達がATMを介して銀行間で取引できるのは、このプロトコルで利用されているアルゴリズムのおかげです。

銀行は、長期の祝日等に、システムのメンテナンスをするためにATMを停止するケースがあります。この時は、事前の告知にも関わらず、多くの人から苦情の電話があるそうです。
このように、私たちは便利な生活をアルゴリズムから享受しているのです。

トレードのオートメーション化

株式の世界では、トレードに勝つための技術やテクニックが存在します。
本屋にいくと、多くのテクニカル手法を説明した本が並んでいます。これらは投資家達の経験を体系化した技術です。
一般的に、市場はランダムウォーク(規則性のない動き)であると言われています。しかし一方で、市場で良いパフォーマンスをあげ続け、巨万の富を得ている人も、ごく少数ですが存在するのです。

彼らは、移動平均平均乖離率を利用した逆張りトレード等の手法を利用して株価を推測し、日々市場で取引しています。

今後は、こういった昔ながらの手法で市場に残る人はぐんと減少するでしょう。代わりに、個人でも機械学習とビックデータを用いて株価を推測するのが主流になるのではないでしょうか。
なぜなら、時代が進むにつれ、既存のテクニカル手法より、アルゴリズムや機械学習を利用したほうが予測精度が高くなることは間違いないからです。

また、このことから、アルゴリズムや機械学習の導入により、市場がランダムウォークから規則性を持つ動きになる可能性もあります。
今後はアルゴリズムや機械学習の動きを予測したアルゴリズムや機械学習のトレードも広がるはずです。

まとめ

株価は企業の状態となるべく一致するのが望ましいのは言うまでもないでしょう。投資家は企業から発表された情報で、企業に投資します。
そして、企業は市場から得た資金を元手にして、より高い利益をあげていきます。そして、稼いだ利益を投資家達に配分します。

一方で、トレードで利用されるアルゴリズムは、市場のゆがみや株価の動きから値動きを判断して売買を決めているアルゴリズムが多いようです。否定されるのは当然でしょう。

しかし、予測アルゴリズムを用いても、あくまで予測は予測でしかありません。どんなアルゴリズムを使い、どんなアルゴリズムで機械学習をさせるかは、開発者や使い手次第です。どんなにオートメーション化が進んでも、プログラムの実装方法の最終判断を下すのは人間しかいません。それは人工知能になっても同じことです。

結局のところ、技術というのは使い手次第です。アルゴリズムを用いたから利益があがるのではなく、優れたアルゴリズムを考案することで利益があがるのです。技術はブースター(増幅器)のようなものです。

アルゴリズムを作り上げたのが人間の思考なら、それは市場の動きとして認めて良いのではないでしょうか。
そう自分に言い聞かせて、この荒れた市場の動きを見守りたいと思います。

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年2月19日金曜日

【コラム】サイバーセキュリティの国家資格の創設検討に思ふこと

2017年にサイバーセキュリティの国家資格の創設が検討されている。
なんともお上らしい考えである。日本人は資格(肩書)が大好きだ。間違いなく人気の資格となるだろう。会社によっては報奨金も設定されるだろう。

こんな資格にほとんど意味が無いことは、作成者自身が一番理解しているはずなだ。なのに、どうしてこのような資格を創設するのだろうか。

セキュリティの資格

2016年現在、国が開催している情報系のセキュリティ系の資格は二種類ある。

  • 情報セキュリティマネジメント
  • 情報セキュリティスペシャリスト

である。

どちらも人気の資格で、かなりの人がセキュリティスペシャリスト、もしくはセキュリティマネジメントと認定されている。

どころが、セキュリティの事件は年々増加している。この資格が新設されても世間からセキュリティの事件は減少しないし、解決もしない。それは自信をもって断言できる。

知識を問うても意味がない

資格は実務経験がないと意味がない。

よく言われる言葉だ。

エンジニアにとって知識とは道具に過ぎない。道具は問題を解決するためにある。

例えば、セキュリティの基礎知識に公開鍵と秘密鍵というものがある。
これらはセキュリティの試験でない基本情報試験などの簡単な試験でも問われる知識だ。

しかし、実際にこの知識を用いてlinuxで公開鍵認証による SSH ログイン設定をしたことがある人は何人いるだろうか。

おそらくほとんどの人は設定をしたことはおろか、何をするかのイメージもわかないだろう。

ソフトウェアとは命令コードの集合体だ。知識や言葉だけでは解決できない。実際に手を動かしてみないと何もならないのである。

Don't think. Touch. (考えるな。触れ。)

本物のセキュリティ技術を身につけたいなら、WEBアプリを開発し、自分でサーバーの構築をしてWEBアプリを公開するのが最良の方法だ。
そしてWEBアプリとサーバーをメンテナンスし続けること。
その過程では、色々な問題が起きるはずだ。それを解決していくことで本物のセキュリティスペシャリストに近づくことができる。

誰だって最初からロジャー・フェデラーやリオネル・メッシになることはできない。多くの知識と練習と経験を経て、本物になることができる。

まとめ

僕は資格試験そのものを否定しているわけではない。
僕も新人の頃は基本情報、ソフトウェア開発者試験、oracle, LPIC等色々な試験を受けてきた。
TOIEC等の専門外の試験は未だに受験している。

ただ、サイバーセキュリティの国家資格の学習をするくらいなら、サーバーの設定をしてアプリを公開して欲しい。そのほうが評価できるし、技術もあがる。面接だって楽勝だし、職にも困らないだろう。

もちろん、この資格が国の大きな財源となり、セキュリティに長けたエンジニアを増やす資源をプールすることが目的なら大賛成である。

これ以上試験の創設前に意見を言っても意味がないので、話はここまでにしようと思う。

こんなことを語る僕も、資格大好きな日本人の一人なのだろう。

他のコラム

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年2月12日金曜日

【コラム】政治家でもわかるITエンジニアが危機的に不足している理由

記事概要

コラム記事。


オバマ大統領もプログラミングを学んでほしいと発言

最近、仕事関連の知り合いやプロマネ達に会うたびに「良いエンジニアはいないか」と尋ねられる。
そう言われても、今のITエンジニア不足は深刻だ。人がいないので金でも解決できない。どうしようもない。

しかし、こんな状況でも欲しがる人材のレベルは高望みだ。
コミュニケーションが取れて、プログラムが書けて、サーバの構築ができて、単価が安くて、意欲のある若い人材。
つまり、低賃金労働で口答えをしないスーパーマン。

当たり前だが、そんな都合のよい人材などいない。普通のエンジニアさえ見つけるのも困難なのである。そもそも今、ITエンジニアになりたい人自体が少ない。プログラマーにならないかと新卒を誘うと、露骨に顔をしかめる子も多い。

世界中の国や企業でプログラムができる人材を探している。そして、育てようとしている。だが、需要が供給を遥かに超えてしまっている。日本は深刻なレベルだ。

ではどうしてこんなにもITエンジニアが不足しているのだろうか。理由は色々とある。
僕は(今のところ)日本のITエンジニアだから、海外のことは詳しくわからない。でも、日本がひどいIT人材不足に陥ってしまった理由はわかっているつもりだ。
せっかくなので、自分の経験をまじえて説明していこうと思う。

35歳限界説

少し前まで「35歳限界説」という言葉が存在していた時代があった。
この言葉は、ITエンジニアは激務だから、それ以上の年齢だと仕事に体が耐えることができないという労働環境から生み出された言葉だ。

実際、20世紀のエンジニアの仕事は、今以上に激務だった。
徹夜は当たり前。多くの仕事と顧客の無理難題を押しつけられ、寝に帰るだけの毎日を過ごす。

一方で、仕事の内容はスカスカだ。朝からプロジェクトの会議に出席しっぱなし。ようやく自分の仕事が開始できるのは定時後である。
そんな昔のアホ自慢をしてくる管理職は未だに多かったりする。

僕が就職したのは21世紀だが、その時の某企業での新卒の面接時のやりとりはいまだに覚えている。

面接官:「通勤時間長いね(1時間半くらい)」
Masa:「体力には自信があるので問題ありません」
面接官「11時(23時)に仕事が終わって家に帰ったら午前様だよ?」
Masa「忙しい時期が多いのでしょうか」
面接官「いやいや。定時はあってないようなものだから」
Masa「...は?」
面接官「この業界で定時に帰る人なんていないよ。甘いよ。」

僕がこの企業の内定を蹴ったことは説明するまでもないだろう。ちなみにこの企業は倒産して、もう存在しない。

もちろん「35歳限界説」も完全な都市伝説である。

グローバルバカの出現

上述したように、昔のITエンジニアは今よりはるかに激務だった。当然のことながら、離職率も高かった。
一人前のITエンジニアになるまでには時間がかかる。そう簡単に力はつかない。
しかし、さらに追い打ちをかけるように世の中は動いていった。

グローバル化である。

パソコンの能力の向上とインターネットの急速な発展は、先進国の人から単純労働を奪い始めた。
発展途上国の人のほうがはるかに単価が安く、人件費を抑えられるからだ。

そして、この仕組みに気づいた意識高い系のビジネスマン達は、オフショアという仕組みを取り入れて大きな利益を出すようになった。
オフショアは人材派遣のグローバル版である。意識高い系人材派遣ともいう。
そしてついには、その意識高い系のビジネスマン達はIT業界にも口をだしはじめた。

「プログラムのような下等な仕事は単価の安い発展途上国の仕事になる。先進国の人材は上流の設計だけをやれば良い。」

なぜこういう意見が生まれたのか、僕にはわからない。推測だが、

発展途上国の人間でもできる → 単価の安い下等な仕事

という差別的な考えが彼らの頭の中にあったに違いない。だから、このような間違った判断を下したのではないか。
意識高い系のビジネスマンエリート様達には

発展途上国の人間がプログラミングをできるようになる → その国の技術、教育、賃金が上昇し国が発展する

という視点が完全に抜け落ちていたのだ。

だが、おそるべきことにこの意見は世間やIT業界で受け入れられた。プログラムは3年も書けば十分とされ、プログラマーとして働く人は、いずれSE(システムエンジニア)に昇格するのが当然とされるようになった。肩書が職能でなく、序列を生みだしてしまった。そして、これがとんでもない悲劇の引き金だった。

プログラムを書けないIT屋の増加

「プログラムのような下等な仕事は単価の安い発展途上国の仕事になる」

この考察は悪魔の理論だった。しかし、論理的思考法を得意とするエリートコンサルタント様達が賞賛したこの意見は、業界の常識として溶け込んでいった。
プログラマーの単価はあがらなくなった。単価をあげるには、SE(システムエンジニア)になり、PM(プロジェクトマネージャー)になり、最後はコンサルを目指すことが理想のキャリアパスとみなされるようになった。ここまでくると「つける薬はない」と今になっては思うが、当時は当たり前だった。

当然のことながら、会社は利益を追い求める。それが普通だし、そうしなければいけない。
そして、当然のようにプログラムを書かないエンジニアが生まれるようになった。そして、それが当たり前になるのに時間はかからなかった。

本来、エンジニアにとって大切な力は、システムの理解力である。
「仕様(要件)をコードでイメージし、システムを設計していく。」これがなにより大切なのだ。

英語や中国語等の日本語以外の言葉を話せる人ならわかるだろう。無意識に他言語での表現が頭や口に浮かぶあの状態である。ITエンジニアはプログラミング言語を介してその状態にならないといけないのだ。

しかし、この業界の常識、特に日本のslerは「仕様(要件)をもとにシステムを設計し、最後にコードに落とし込む」というやり方をしている(た)。
こうなると当然、コードで実装できない仕様が発生する。このシステム設計の誤りが手戻りを発生させ、度重なる会議と打ち合わせを必要とするようになり、実装工数が圧縮され、デスマーチとよばれる現場を生み出すのである。

しかし、Googleやfacebook等の一部の企業を除く多くの企業はこの基本を理解せず、システムの理解力に長けたプログラマーを求めなかった。彼らが求めたのは、単価の高いSE(システムエンジニア)だった。そして、彼らにコミュニケーション能力を求めた。さらには、右も左も分からぬ新人にSEという肩書を記載した名刺を渡した。そしてそれは多くの炎上プロジェクトを生み出す地獄の切符となった。

炎上したプロジェクトは悲惨だ。ひどい会社だとプロジェクトに関係ない多くのエンジニアまでが巻き込まれる。そして心身を削られ、業界から去っていく。才能があるのに、才能が開花する前に去ってしまう人を多く見てきた。 力がある人でも、多くの仕事を押し付けられて、壊れて去っていった人もいる。

また、ベトナムや中国等の国へのオフショアも実施されるようになった。ますますプログラムは軽視されるようになった。
だが、ほとんどのプロジェクトは思ったより安くはならなかった。それどころか、品質が悪く長期的にコストがかかるのが現実だった。

デフレ

ベトナムや中国等の国へのオフショアが実施されるようになったが、数年も経つと問題が浮上してきた。
発展途上国の人の賃金があがってきたのである。

一方で日本はデフレのままだった。日本人の1/5程度の給料で働いていた途上国の人達が、日本人の半分ほどの賃金がかかるようになったのである。日本以外の世界は成長を続け、インフレになっていた。つまり、採算がとれなくなってきてしまったのである。

なぜオフショアを推進していたか。それは安いからである。
しかも海外のITエンジニアは、日本のITエンジニアとは大きく労働感が異なる。日本人労働者のようにサービス残業などしない。
プロマネの中には、海外の奴らは残業をしないなどと怒る人もいる。これは当たり前だ。日本が異常なのである。

さらに、オフショアのシステムの品質は悪いことが多い。オフショアのプロジェクトでは、ブリッジSE(システムエンジニア)と呼ばれる異なる国の言語を話せるエンジニアが招集されるのが普通だ。しかし、うまくいっている事例は少ない。当たり前である。問題なのは言葉の違いでなく文化の違いにあるからだ。

スマホ襲来

(日本にとって)悪いことは続く。アップルがスマートフォンを発売したのである。
この製品はユーザーより、エンジニアにとって衝撃的だった。なぜなら、プログラミング力があれば、自分一人でも世界で勝負できるプラットフォームが用意されていたからだ。

さらに、スマホの進化はとんでもなく速かった。これまで以上の速度で技術が進化するようになった。

この頃になると、これまでオフショアでしかお金を稼げなかった途上国のエンジニア達もオリジナルのアプリ開発に参入するようになってきた。これまでの下請けのノウハウが蓄積されたのである。

IT市場には、先進国のITエンジニアだけでなく途上国のエンジニアも参入するようになり、さらに飛躍的に技術力が向上するようになった。今もなお、一年前の技術が時代遅れになるほどの速度で進化を続けている。トーマス・フリードマンの「フラット化する世界」が現実になりはじめたのだ。

しかし日本の意識高い系のビジネスマン様達は、グローバル化なので英語化が重要だと声を上げるようになっていた。相変わらず理解力がないままだった。

開発の世界では進化のスピードについていくためにオープンソースが一般的となり、世界中の頭脳の集合知がさらに優れたツールを生み出していった。優れた開発者なら一人でスマホ開発、web開発、サーバー構築まですることが可能になった。わずか数人しかいないのに、何百億という価値をもつ企業が現れはじめた。instagramやSnapchatが良い例だ。

だが、ほとんどの日本の企業は既存のやり方を変えなかった。変わらなくともなんとかなると思っているのか、それとも変化に気づいていないかのどちらかなのだろう。日本の技術者で現状を認識しているのは、未だにごく一部である。

日本語に翻訳されない

上記の要因により、加速度的に技術が向上し変化するようになった。しかし、日本のほとんどのITエンジニア達は、変化を嫌って追わなかった(追えなかった)。なにより企業が変化とリスクを嫌い、実績ある既存の技術を使い続けた。

このことは、最新の海外の技術書の翻訳を少なくさせた。売れないのだから当たり前だ。翻訳だってビジネスだ。海外で賞を取るような優れた技術書も現在はほとんど翻訳されなくなっている。また、翻訳されたころには仕様の変更された古いバージョンということも多い。

最新技術を知るには、英語力が必要になってしまった。今、日本の技術者達のレベルは、人によりかなり顕著に差がつき始めている。英語力と技術力につながりができてしまったのである。日本の意識高い系のビジネスマン様達の言葉は、悪い意味で的中してきている。

そして誰もいなくなった

長い労働時間、すぐに変化する技術、予測不可能な将来、安い給料。気がつけばITエンジニアを志す新卒の日本人は激減した。
ワークライフバランスが提唱される時代に、日本のITエンジニアの労働環境はそぐわない。時代と真逆だ。人が集まるわけがない。

シリコンバレー等の海外に行くエンジニアも増えた。当然だ。向こうのスターエンジニアは億を稼ぐ。労働環境も優れている。プロ野球選手と独立リーグぐらい待遇が違う。

未だに日本では、「ボランティアでセキュリティ対策をできるエンジニアが必要だ」などと発言しては炎上している経営者がいる。2030年には既存の半分の企業が人材不足で倒産すると予想されているが、IT業界はもっとひどいことになるはずだ。

まとめ

タイトルが「政治家でもわかるITエンジニアが危機的に不足している理由」なので、政治を叩くコラムだと思った人も多いかもしれない。だが、全然違う。このコラムの趣旨は、ITに縁の遠い政治家でも分かるように、IT人材が枯渇している理由を説明しようということにある。
そもそも日本のソフトウェア産業に競争力がないのは政治家のせいではない。多くの要因が重なって今の状況があるのだ。

最近ではバズワードとしてIoTが流行っている。ドイツでは『インダストリー4.0』としてドイツ政府が本腰を入れて取り組んでいる。だが、このままだとドイツの試みは失敗に終わるだろう。IoTは産業の核とはならない。日本でも、ものづくりの得意な日本の巻き返せるチャンスと思っている人がいるみたいだが、可能性はほとんどない。IoTの本質はものづくりでなく「情報産業」である。ろくに人材のいない日本にはチャンスは少ないと思う。

ITエンジニアの不足を解消するのは難しい。若い人材そのものが減っている。若い人のメンターになれるような人材も限られている。完全に負のスパイラルに入っている。

全てを解決できる銀の弾丸はない。地道に業界そのものを変えていくしかない。労働環境、給料の改善はもちろん、技術への取り組み方、肩書で決まる賃金、下請けへの丸投げも変えていく必要がある。

国境の壁の低い仕事なので、育った人材が海外に流出するリスクもある。だが、それでも力のある人材を育てないといけない。本格的にITエンジニアの力が求められるのはこれからの時代なのだ。

他のコラム

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年2月5日金曜日

【コラム】Ruby on Railsが向上させたのは生産性でなく技術力

Ruby on Railsの公式サイト画像。バージョン5のサンプル動画が公開されている。

Ruby on Railsのversion5の公開が迫っている。目玉の新機能としてチャットが簡単に制作できるAction Cable機能が実装された。Action Cable機能を使えば、RailsにWebSocketを組み込むことができる。
この機能を使えば、2,3人のスタートアップでも、Lineのようなリアルタイムのチャット機能を組み込める。今後は、チャット機能を備えたアプリが増えるのではないだろうか。

さて、高い生産を売りにしてきてここまで発展してきたRailsだが、実際は生産性はそこまで高くはない。 それよりもRailsの功績は、一人が個人で扱える技術を高めたことにある。

Rails初期

私がはじめてRailsに触れたのはversion0.3の時だったと記憶している。
5分だが10分でweb画面が作成できるという動画を発見し、すぐにRailsに手を出したのだ。

しかし、いじったのは2日程度であったと思う。期待はすぐに失望へと代わった。当時デファクトになっていたjavaのstrutsとの完成度の違いは明らかだった。

過大広告のゴミフレームワーク

私はそう結論を下すと、再びjavaのwebフレームワークでwebサイトを作成する日常へと戻っていったのだ。

Rails3の登場

私がRailsを本格的に使い始めたのは、Rails3になってからである。
それまでは利用しようと考えるほどの魅力を感じなかった。iphoneアプリやandroidアプリ開発という選択が生まれたことで、WEB開発自体に興味を無くしていたことも大きな理由である。

しかし、スマホアプリを開発していくうちにWEBAPIを高速に開発する必要性を感じるようになった。だが、当時のjavaのフレームワークの実装のコストは大きすぎた。そこでperlやphpを利用したが、いまいちしっくりこなかった。色々とやっているうちに、再びRailsが候補になった。

既にRailsはversion3になっていた。私はまず簡単なWEBアプリを作成し、Herokuにあげてリリース作業までを試してみた。

下した結論は合格。これはjavaやphpをすぐに超えるだろう。そう判断を下すには十分の完成度だった。
実際、Railsをversion3から使い始めた開発者は多いのではないだろうか。

意外な副作用

Railsを使ってアプリを作成するようになったが、多くの問題点に遭遇することになった。
思ったように素早く開発を進めることができないのである。

もちろん、ある程度の力量が身につくまでは、調べながらの開発になるのは当然だ。
だが、Railsのversionによって発生するエラーの解決はひどく骨の折れる作業だった。

さらに、利用したい機能のgem(パッケージ)を発見しても、インストールがうまくいかないことも多かった。慣れ親しんだjavaやphpを使うべきではないかと思うことも多々あった。そして、一つの結論に至った。

windowsやmacの環境に頼るのをやめて、Linuxを利用しよう。

Rails on Linux

windowsやmacを使わないでLinuxメインで開発を行う。これが私の出した結論だった。
Railsは確かに便利だ。
だが、問題が発生するとLinuxの知識が求められることが多い。リリースするときも、javaのようにwarを変更したり、phpのようにファイルを置き換えるだけでは不十分なのである。Railsを使うにはRailsのバージョンアップについていくだけの能力が必要だ。 そしてそれには、Linuxの知識が必要である。

また、ちょうどその頃、vagrantという仮想環境をwindowsやmacで利用できるツールが生み出された。僕はこのツールを利用し、Linuxを本格的に学習することにした。

この考えは大当たりだった。私はRubyとRailsの力だけでなく、Linuxの理解をさらに深めることができた。数をこなすうちにRailsでバグを見つけても、エラー内容から自分で解決できるようになった。

基礎が大事

建物を建てる時は基礎工事が大切だ。
作る建物の種類に応じて利用する基礎を適切に選択する必要がある。

WEBアプリも同じだ。Railsはあくまで建物である。基礎部分にあたるサーバーの構築が重要になる。
Railsを動かすのにwindowsサーバーを使うケースは少ないだろう。また、LAMPのみのシンプルな構成で終了するアプリも少ないだろう。

RailsアプリのサーバーにはNginxとunicornを使うはずだ。最近のアプリを構築するならElasticsearch, Redisも導入するかもしれない。(RedisはRails5の新機能Action Cableに必須である)。構成管理にはchefを用いるかもしれない。

Railsを使いこなすためには、学習するしかない。新しい知識も古い知識も両方必要である。そして、その過程で得た知識は、エンジニアとしての基礎能力を飛躍的に向上させてくれる。

そして、基礎能力の向上は、Railsの力を最大限に引き出し、生産性が大幅にアップするのである。

まとめ

Railsの魅力は生産性にあるという意見は未だに根強い。
実際、WEBのスタートアップではRailsを採用することが多い。もし、あなたが今CEOとしてスタートアップを考えているなら、ネットで生産性が高いと噂のRailsを使ってWEBサービスを立ち上げようと考えているかもしれない。

だが、それは間違っている。

Railsの生産が高いのではない。Railsを使ってWEBアプリを組み上げられるエンジニアの生産性が高いのである。

良くも悪くもRailsを使いこなすためには、かなりの時間をコーディングだけでなく、サーバー設定や環境の自動化等の学習に費やす必要がある。ドキュメントを読んですぐうまくいくことはない。膨大な知識と経験の積み重ねが必要になる。

Railsはドラゴンボールでいう超聖水のようなものだ。悟空がカリン様との超聖水争奪戦により自然に力が養われたように、Railsを使って環境と格闘しているうちに、現代のエンジニアに必要な力が養われていくのだ。

生産性10倍の言葉に飛びつき、Railsの学習を開始し、絶望してやめた人も多いと思う。
だが、そういう人にこそもう一度Railsに挑戦して欲しい。その過程で身につけていった力こそが、世界のスタートアップで戦うことのできる力なのである。

他のコラム

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月29日金曜日

【コラム】日本政府がサイバーセキュリティの普及に攻殻機動隊とコラボ に思ふこと

記事概要

コラム記事。
コラムはNoteでも公開しています。


内閣サイバーセキュリティセンターで公表されたポスター。
イラスト制作はProduction I.Gが担当。

内閣サイバーセキュリティセンター(NISC)は1月21日、サイバーセキュリティの普及・啓発のため、「攻殻機動隊 S.A.C.」とコラボレーションすると発表した。 攻殻機動隊を採用した理由は官民一体で国民に広くアピールすることを目指してタイアップしたとのこと。

国民へのアピール

サイバー犯罪の数は年々増加している。

なので、こういったキャンペーンを打つのは効果的だと思う。 しかし、サイバー犯罪は奥が深く、ユーザーがどれだけ気を配っても完全な防護策はない。 そこで、ユーザー側と開発者側の相互協力が必要不可欠となる。
しかし、これが難しい。

官の意識と現実の乖離

サイバーテロという言葉を聞く機会が飛躍的に増えてきた。米国や中国の動きを見て、日本政府も危機感を募らせて本腰を入れてきている。
だが、本当にサイバーセキュリティの対策に力を注ぎたいのなら、攻殻機動隊とコラボするより、

  • エンジニアの賃金をあげる
  • エンジニアの負荷を減らす
  • エンジニアの長時間労働を減らす

対策をしたほうが効果は高い。

内閣サイバーセキュリティセンターはきちんと考えたほうがよい。
なぜ多くの人がエンジニアという職業を避けるようになったのか。
貴重なエンジニアが育たないのか。

答えは明白である。

続きはNoteで購読することができます。

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加
Related Posts Plugin for WordPress, Blogger...