ソースコードと一次情報

8月 5th, 2014 | Posted by admin in テクノロジー | プログラミングを考える | 長橋のつぶやき - (ソースコードと一次情報 はコメントを受け付けていません。)

このところサーバ・アプリ設定なんかをちょこちょこやる機会があり、いろいろと発見がありました。

かつては、エンジニアとして、実際のプログラミングとかインフラ構築なんかをやった経験はあるけど、最近は、プランニングなどの経営管理が中心なので、基本、素人レベルです。

で、素人なりに試行錯誤をすると、それなりに発見もある。

その昔、一晩かけてプログラムのソースをコンパイルし、コンパイルが通らなかったら、ソースを修正して、バイナリにして、プログラムを動かしたことがよくあった、よくあった、というより、それが普通だった。

最近になって、パッケージで楽にいけるかと思ったら、意外とてこずるケースが多い。ライブラリのバージョンが古いので、インストールしなおし、パスが通っていない、などなど。さすがにCPUが速くなったので、一晩かけてコンパイルするということはなくなったけど、やはり、同じことの繰り返し。

それで思うのは、ソースにあたること。ウェブでインストール方法とか書籍とかあって、”この通りにすればインストールできます”的なものはたくさんある。これはこれで、すごく有用で、助かるのだけど、この通りやればよいという話でもない。やっぱり、掲載当時は新しいものでもバージョンが上がって古くなったり、あるいは、機種の互換性があわなかったりなど。だから、上手くいかないときはマニュアルに頼るのではなくて、実際のソースコードを見て、どこがまずいのかを調べて、切り分けること、これが結構大事だと思う。

で、このソースにあたるということ、たぶん、エンジニアだけに求められるものではないと思う。

たとえば、アナリスト・コンサル・ジャーナリストといった第3者があるトピックに対して取り扱う場合、”ソースにあたる”1次情報と、マニュアル的な2次情報がある。後者でいえば、”新聞がこう言っていたから、この会社はダメだ”みたいな。たくさんの2次情報をパズルのように組み合わせて、一つの絵にすることは、価値はあるとは思うけど、やはり、価値という点では”1次情報”にはかなわない。

やっぱり、1次情報は、まさにソースにあたることと同じで、ソースをみることで、本当に何が起きているかを理解できるのだと思う。

1次情報が2次情報よりも大事だ、これは当たり前なんだけど、ソースを見ることから、1次情報の重要性を認識したのでした。

データサイエンス超入門 ビジネスで役立つ「統計学」の本当の活かし方

12月 15th, 2013 | Posted by admin in イノベーション | テクノロジー | プログラミングを考える | 経営 - (データサイエンス超入門 ビジネスで役立つ「統計学」の本当の活かし方 はコメントを受け付けていません。)

日経BP田島様よりご献本いただきました、ありがとうございました。

最近、いたるところで耳にする「データサイエンス」あるいは「データサイエンティスト」について解説した一冊。

もともと、統計自体は、何十年も前からビジネスに活用されてきており、今さら、統計という話ではない。では、なぜ、”今”なのか?

やはり、ソーシャル、M2M、ウェブなど、様々なデジタル情報が爆発的に増加、くわえて、本書では、データ処理基盤の進歩、使えるデータの整備、人材育成の動きにより、「データ活用のチャンスがより多くの企業に訪れる」(p26)だからこそ、確率論に基づいた統計のスキルが更に重要になると。

とはいうものの、単に、学校の授業の統計解析をマスターできれば良いという話ではない。むしろ、筆者が主張するのは、「膨大なデータを見極めて、目的を達成するための意思決定に役立つ気付きをえる「目利き力」」(p38)が重要と指摘する。そして、その目利き力は

1.データを活用したビジネスを活用する力
2.データサイエンスを支える統計知識
3.アナリティクスを実現するITスキル

の3つが必要と説く。

自分も統計を活用(本書でいえば、正規分布くらいまでは使うけど、機械学習まで及びません。。)することがあり、つくづく思うのは会社によってデータを活用しようという姿勢が全然違うこと。「分析力を武器とする企業」(トーマス・H・ダベンポート)では、企業の分析力にはステージに分かれていると説いているように、Excelの四則演算で十分な会社もあれば、SPSS等を利用して、高度な統計手法を駆使している会社もある。

そういう意味で、本書で指摘している「筆者は企業経営層の方々に「データサイエンティストとは何者か」と聞かれたら、まずは「データサイエンスという言葉の定義を合わせましょう」と回答するように心がけている。」(p242)という主張は尤もだと思う。

Excel、SPSS、いずれも共通しているのは、やはり、データ・数字をもとにビジネスを展開すること、そして、他社にまねできないビジネスを展開すること(イノベーション)。そして、イノベーションを生むには、本書では次の3つが必要と説く。(p228)

1.適当な解で満足してはいけない
2.普遍的だと思われている事象であっても漫然と処理してはいけない
3.妥協せずやり抜く

自分が思うに、データはモノごとの状態を客観的に提示してくれるものだと思う。たとえば、甘いだけだとわからないけど、糖度10%といえば、客観的に提示しているといった類だ。そして、 当たり前と思われていることをも漫然と処理せず、データに即して検証することでイノベーションは生まれるのかもしれない。そして、日本からもデータサイエンスを通じてたくさんのイノベーションが生まれたらこれほど素晴らしいことはないと思う。

本書は、データを活用したビジネス、統計の基礎、アナリティクスを実現するITスキルがコンパクトにまとめられており、そして、それを使ってどうイノベーションを誘発するか、を考えさせられるよいヒントになりました。

データサイエンス超入門 ビジネスで役立つ「統計学」の本当の活かし方 データサイエンス超入門 ビジネスで役立つ「統計学」の本当の活かし方
(2013/11/07)
工藤卓哉、保科学世 他

商品詳細を見る

分析力を武器とする企業 分析力を武器とする企業
(2008/07/24)
トーマス・H・ダベンポート、ジェーン・G・ハリス 他

商品詳細を見る

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

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のフレームワークなどそれなりに需要があるので、特化タイプもマーケットはある。一方で、プログラミング言は、言語体系は違えど、考え方(制御構造、データの持ち方、アルゴリズムなど)は同じなので、あるプログラミング言語をマスターして、それを別のプログラミング言語に応用できるタイプ。企業とくに小さい企業では、後者の方が柔軟性があるので、こっちの方がニーズがある。そして、プログラミング科目必須になって、後者のような柔軟に応用ができるタイプがたくさん育てば、これほど日本全体にとってプラスなことはないと思う。