Rではじめる機械学習 データサイズを抑えて軽量な環境で攻略法を探る

8月 25th, 2017 | Posted by admin in 長橋のつぶやき - (Rではじめる機械学習 データサイズを抑えて軽量な環境で攻略法を探る はコメントを受け付けていません。)

9月に新しい書籍を上梓させていただくことになりました。
3年近く前から、インプレスさんと一緒にデータサイエンス・Rのセミナーを開催させていただきました。
爾来、受講者の方からのフィードバックを重ね、ブラッシュアップし、書籍としてまとめました。
セミナーでニーズが高いところを重点的にカバーしています。
これからはじめてRを学習されたい方、機械学習を導入したい方ぜひご一読ください!

Rではじめる機械学習 データサイズを抑えて軽量な環境で攻略法を探る
Rではじめる機械学習 データサイズを抑えて軽量な環境で攻略法を探る 長橋 賢吾

インプレス 2017-09-08
売り上げランキング : 23229

Amazonで詳しく見る by G-Tools

「プログラミングなんて必修にしなくていい論」への反論

10月 20th, 2013 | Posted by admin in テクノロジー | プログラミングを考える | 経営 - (「プログラミングなんて必修にしなくていい論」への反論 はコメントを受け付けていません。)

直接のご面識はないのですが、クレイア・コンサルティングの調 祐介さんが、ブログ記事「プログラミングなんて必修にしなくていい論」に、かつてこのブログに投稿したプログラミング科目を必須にすべき3つの理由をご紹介いただきました。どうした形であっても、取り上げていただけることは歓迎すべきことですので、まずは、御礼申し上げます。

 とはいうものの、タイトルは、”プログラミングなんて必修にしなくていい論”、以前、投稿した内容は、プログラミング科目を必須にすべきという主張なので、こちらと真逆の主張です。ただ、重要なのは、弁証法的というか、お互いの主張をぶつけることで、さらに議論を深めていくのは重要と思うので、あえて、”反論”したいと思います。

「プログラミングなんて必修にしなくていい論」

調さんの記事は、No–You Don’t Need To Learn To Code を基にしていて、とてもよく日本語にまとまっています。

このオリジナルの主張をかいつまむと、

・プログラミングすることは楽しい、でも、一人前になるためには、10年くらいかかるし、常に勉強しなくてはいけない。

・プログラミングは問題解決の道具に過ぎない。そして、プログラミングをマスターしたからといって、世の中のすべての問題を解決できるわけではない。もっとも大きな問題は人間の内部に根差した予測できない問題であることが多く、これはプログラミングでは解決することはできない。

・それでも、プログラミングに興味があるのであれば、かわって、プログラマーを理解すべき。プログラマーは、ビジネスミーティングなど”邪魔”されるのが何より苦手。だから、彼らを理解する、あるいは、ビジネスの言葉を彼らにわかりやすく翻訳することは大切。

・むしろ、プログラミング時代を学ぶより、ソフトウェア、ネットワークがどのようにして動いているのかをしることが大事。車の設計を知らなくても運転はできるけど、車の構造を知るとより深く対応ができるのと同じ。パイソンのコードなんか書くよりは仕組みを知ることのほうが重要。

・人生は短い、モノづくりはたくさんある、プログラミングだけがモノづくりじゃない、文章を書いたり、音楽を演奏したり、などやることはいっぱいある。何をすべきか賢く選択すべき。




職業としてのプログラマ

 筆者の主張はだいたい共感できるし、なるほど、と思われるところもそれなりにある。

ただ、筆者のスタート地点と自分のスタート地点は違っていると思う。そして、彼女のスタート地点は、”職業としてのプログラマー”ということだと思う。

 世の中には、プログラムを書いて、収入を得る、職業としてのプログラマが多数存在する。結局のところ、システムを作るうえで、プログラマは必須であり、インド・中国にアウトソーシングしているところもあるけど、日本国内においてもプログラマとして生活をしている人はたくさんいる。そして、自分の知ってるプログラマも、彼女が指摘するように、邪魔されるのを何よりも嫌うし、視野が狭いといわれたら、そうかもしれない。

プログラマというキャリア

結局のところ、これはプログラマとしてのキャリアはどうあるべきか、という話なのかもしれない。よく言われるのは、プログラマ35歳定年説。システム会社に新卒で入って10年くらいはプログラマをやるけど、10年くらい経過して、1.管理職へのシフト、2.新しい技術のキャッチアップの限界、3.体力的な限界、などで35歳がプログラマーの限界といわれている(ただ、これは前から言われていて、かつ、最近では、管理職はともかくとして、技術、体力はあまり関係ないようにも思われる)。

  35歳限界説はともかく、一生の仕事として、職業プログラマーができるか?という話だと思う。

自分の理解では、プログラマーとして生涯のキャリアを過ごせるかといえば、できるけど、すごく大変。たとえば、社会保険のシステムを作ったり、銀行のシステムを作ったり、大規模なシステムを作るにはプログラミングが当然必要。ただ、これは一人ではできない、だから、ゼネコンのように大きな会社が元請をして、2次、3次、場合によっては、4次くらいまで下請け(外注)を導入して、その下請けがプロジェクトの一部分だけのプログラミングを請け負う。こうしたスキームの場合、人月単価などから、生涯現役モデルは妥当ではないと思う。

 むしろ、生涯現役プログラマーモデルは、誰も正解がわからないものにチャレンジすることに価値があるように思う。かつて、自分が学生のころ、学術目的でIPv6のアドレス配布をやっていたことがあった。そのときに、いとぢゅんさんというIPv6を開発している天才プログラマーがいました。今でこそ、IPv6はそれなりに使われつつあるものの、当時(1998~2000年くらい)は、まだ実装も、ラフに決めた仕様書(RFC)があったくらい。そうした”未知”がたくさんあるなかで、彼は自分で一番シンプルな解法を探して、それを実装して、国際コミュニティに提案して、IPv6開発をリードしてきました。

 たしかに、マネジメントとかCEOとか関係ないし、プログラムですべてを解決することはできない、でも、未知のものをプログラムで形にしていく、そういう職業プログラマーはやっぱり必要だと思う。

プログラミングは必須にすべき?

 で、長くなったけど、本題。プログラミングは必須にすべきか?自分の意見は前と同じで必須にすべきだと思う。たしかに、職業プログラマーとしてやっていくのは、すごく大変。だけど、1.目に見えないシステムを理解すること、2.プログラミングのすそ野を広げること、そして、3.問題の切り分け能力を涵養すること、これはプログラミングから学ぶことも多いと思います。

という意味で、「プログラミングなんて必修にしなくてもいい論」の話に即すると、プログラミングを学習することで、システム、ネットワークといった仕組みを理解する手助けになると思う。そして、それがもとで未知の問題を切り開くプログラマーがでてくれば、日本にとってもとても良い話と思うのです。

プログラミング科目を必須にすべき3つの理由

4月 7th, 2013 | Posted by admin in テクノロジー | プログラミングを考える | 経営 - (プログラミング科目を必須にすべき3つの理由 はコメントを受け付けていません。)

プログラミングを高校・大学の必須科目にすべきという話があるけど、自分はこれにもろ手を挙げて賛成です。

もちろん、高校・大学でちょっとプログラミングを勉強したところで、すぐに企業に入って役に立つというわけでもないけど、次の3つの理由からとても大事と思います。

必須にすべき理由その1:目に見えないシステムを理解する

 システムを作る作業は基本的には建築現場の土木工事に似ている。まず、どんな建物ができるかきちんと設計し、予算を割り当てて、リソース(自社ですべてできる場合は少ないので、場合によっては外注)を確保して、スケジュール通りに仕上げる。ただし、土木工事と違う点は、土木工事は目の前の建物が建っているのはわかるのに対して、システムの場合は、目に見えないこと。そして、目に見えないから、”こんなシステムすぐできるだろう”のように無茶をいう経営者もそれなりにいる。もちろん、あえてシステムを知らないことで自由な発想を生み出すことができるのも事実だけど、目に見えないシステムをプログラミングを通じて理解するのはとても重要だと思う。

必須にすべき理由その2:プログラミングの裾野を広げる

 高校・大学でプログラミングをやったからといって、全員がシステム会社に就職するわけでない。たとえば、自分は大学時代、慶応湘南藤沢キャンパスで6年間過ごして、最初の1年は情報処理のクラスでプログラミング(C言語)が全員必須だった。そして、SFC生全員がシステム会社に入ったかというと、もちろん、そんなことなく、銀行にいったり、公務員になったり、商社にいったり、プログラミングと全く縁遠い業界に入った卒業生も無数にいる。でも、かつて、裾野の広さと500 startupsというエントリで書いたように、ニュージーランドのラグビーのようにプログラミングの裾野を広げることは、次の新しいベンチャー、産業を生みだす点で大切。

必須にすべき理由その3:問題切り分け力をつける

 当たり前だけど、コンピュータは人間が指示したことしか実行しない。そして、プログラミングは、やや抽象的な言い方だけど、”コンピュータに指示する手続き”ともいえる。そして、コンピュータにプログラミングによって”指示”しても、自分の思い通りに行かないことが多々ある、いわゆる、”バグ”だ。それで、どうやって、バグを見つけて、正しい動作にするか、それが”問題切り分け力”だと思う。不具合の原因をあらゆる可能性から検討して、問題解決のあたりをつけて、そして、修正する。自分も最近コンサル案件でプログラミングの手伝いをすることがあるけど、結局、プログラミングとは、問題切り分け作業の連続だと思う。そして、言うまでもなく、この問題切り分け力は、プログラミングだけではなくて、営業、製造、管理、経営などあらゆる場面に応用が効く力で、こうした力はプログラミングによって涵養される要素が大きいと思う。

最後に

 これまでシステムエンジニアの採用を経験したことがあって、そこからわかったこと。それはシステムエンジニアには2つのタイプがある。一つは、あるプログラミング言語に特化して、それを極めるタイプ、今だと、Javaのフレームワークなどそれなりに需要があるので、特化タイプもマーケットはある。一方で、プログラミング言は、言語体系は違えど、考え方(制御構造、データの持ち方、アルゴリズムなど)は同じなので、あるプログラミング言語をマスターして、それを別のプログラミング言語に応用できるタイプ。企業とくに小さい企業では、後者の方が柔軟性があるので、こっちの方がニーズがある。そして、プログラミング科目必須になって、後者のような柔軟に応用ができるタイプがたくさん育てば、これほど日本全体にとってプラスなことはないと思う。