2013/09/29

小林雅一著 「クラウドからAIへ 〜アップル、グーグル、フェイスブックの次なる主戦場〜」

クラウドからAIへ アップル、グーグル、フェイスブックの次なる主戦場 (朝日新書) 」はGoogle、Apple、Facebookといったシリコンバレーの有名IT企業によるAI(人工知能」の研究成果、および製品開発の動向を一般向けに解説した書籍です。

Google、Apple。彼らは最近ウェアラブルコンピューティングの開発競争を加速化しているのは報道の通りです。その意図は「ユーザのネットアクセスの大本を牛耳る」ことだそうです。大本を牛耳ることができれば、そこからユーザ操作に関する膨大なデータを収集し、ユーザの意図を解釈し、自社のサービスへの誘導したり、適切な広告を配信することで莫大な利益を上げることができます。

その次なる主戦場で重要だと考えられているのが人間の意図を解釈できることだそうです。スマートフォンを開き、スクリーンを覗き込みながら、煩雑なボタンを操作するのではなく、人間の視線、人間の発話、ジェスチャーからその人の意図を解釈し、適切なフィードバックを返すことに力を注いでいます。

その人の意図を解釈する際に活躍するのがタイトルにもある、AI(いわゆる人工知能)の技術です。AIは今から40年以上も前に登場し、知識表現、数理論理の面で研究成果は挙がりましたが、当初期待されていた「人と同じように考えるコンピュータ」の実現は至難の業であるとされてきました。古典的な方法(ルールを記述することで人と同じような解釈ができる)では思い描いた成果が得られなかったのです。

そこでGoogleのサイエンティストが着目したのが統計・確率的な手法で、人工知能を実現することでした。人間の作成したデータを統計解析することで、意味解釈はせずに人の意図を解釈することが部分的に可能になってきました。(例えば、I love youという文章についてI の後にloveが続くと、90%の確率でyouが続くといった風に)古典的な研究者からはそこには知性のかけらもないし、展望もないと批判されているそうですが、古典的な研究では得られなかった実用的な成果を挙げているのは確かです。

さらに今流行りが古典的なニューラルネットワークを進化させたディープラーニングという手法が取り入れられ始めているそうです。(説明が難しいので割愛しますが、人間の脳の知覚メカニズムを模倣したモデルです)近年の成果だと自動車の自動制御などにも応用されているそうで、自動車の運転などは10年以内に商業ベースに乗るとの観測もあります。事故が起きた場合の責務は誰にあるのかといった法的な課題はあるそうですが、期待される技術ではあります。

わーすごいと読み進めていくと、最後の最後で、これらの人工知能の技術がもたらす未来はどうなるかに視点が移ります。今まで機械ではできず、人間でないとできなかったことが次から次へと機械に置き換わっていく可能性があるのです。

製造機械など単純な手順の繰り返し作業は昔から自動化されていますが、今後は人でしかできなかった知的な判断を伴う作業が機械に置き換わる可能性があります。機械に置き換わると当然、失業が発生します。失業が増えると情勢不安につながります。産業革命が起きたイギリスでは仕事が機械に置き換わるとして、機械を打ち壊す大規模な運動が起きました。その現代版がそのうち起きるのでは?

人工知能の発達で恩恵を受けることは非常に多いことは確かですが(例えば、自動運転で交通事故は減らせるなど)、一方で急速に人工知能が発達する中であなたの仕事が果たして機械に奪われない保証はあるでしょうか?産業の発展と共により高度な仕事に移行する準備はしていますか?考えさせられる本です。

 

マーク・ピーターセン著 「実践 日本人の英語」

実践 日本人の英語 (岩波新書)」は、英語学習者の間では有名な「日本人の英語 (岩波新書) 」(1988年出版)の続編です。著者マーク・ピーターセン氏は明治大学の教授で、専門分野の講義の他、英語の講義も担当されているようです。この日本人の英語シリーズは、著者が日本人学生の英作文を添削する過程で気づいた日本人が間違いやすい英語のパターンが分かりやすく整理されています。

おそらく本書は中級者レベル向けだと思います。初級者の場合、この本に書かれているようなニュアンスの違いを気にする前にまずは英語の運用能力を鍛えるべきです。そして、ある程度、英語で意思疎通できるようになってから、上級を目指す前に自分の足元を見直す上で役立つ内容になっています。(確か私も「日本人の英語 (岩波新書) 」を学生の時に読んだ記憶がありますが、その時は英語レベルがいまいちだったので難しく感じた印象がります。)

肝心の内容はというと、著者曰く日本人の英語学習初学者が英文を作成する時は、日本語の文法に引きづられたままで、原文の日本語を英語に直訳する傾向にあるそうです。日本語と英語は文法がかなり違うので、日本語に引きづられてそのまま直訳するとおかしな英語になったり、意味不明になったり、最悪の場合、誤解を与えるケースがあると指摘しています。

もし誤解を与える表現になっている場合、読み手が英語の文法間違いに気づかないと、誤解を与えることに書き手が気づかずにコミュニケーションを継続してしまうケースもあります。これは友達通しの雑談であれば、後で誤解が分かっても笑ってすみますが、ビジネスや研究発表の場合、実害が発生したりするので、注意する必要があります。

例えば、p36の冠詞の例を紹介します。以下の2つの文の意味の違いは分かりますか?

  1. The government plans to phase out nuclear power plants in Japan.
  2. The government plans to phase out the nuclear power plants in Japan.

 the がついているかいないかの違いです。著者によると1の冠詞がない複数形の場合、「some nuclear power plants」と同じ意味になるそうです。一方、theがつくとすべての原子力発電所が対象になってしまいます。日本語に訳すと以下になります。

  • 政府は日本にある2つ以上の原子力発電所の廃止を予定している。
  • 政府は日本にあるすべての原子力発電所の廃止を予定している。

ただ、the がつくかどうかで全く意味が異なっています。前述したように友達通しで雑談する分には全く問題ありませんが、政府の官僚だったり、ニュース記者がこの文法間違いに気づかずに報道すると世界中に誤解を与えてしまいます。これと同じ問題が自分のビジネスにおいても起こる可能性はあるのです。

このような細かいニュアンスは文法学習だけて身につくとは思えないので、お金を払って英文添削のトレニーニングを継続的に受けないといけないんでしょうね。

 

2013/09/07

Mac OS Xでテキストファイルの改行コード・文字コード一括置換は「MultiTextConverter 」が便利

http://www.rk-k.com/software/mtc

パパっと検索して出てきたのがこれです。
インタフェースもシンプルだし、なかなか便利そうです。

Mac OS XにHomebrewでApache Antをインストールする

How do I install ant on OS X Mavericks?
http://superuser.com/questions/610157/how-do-i-install-ant-on-os-x-mavericks

上記の質問サイトでやり方を見つけました。

http://superuser.com/a/611510
It looks like the alternate repository was migrated. You can either enable the homebrew alternate repository or install directly: 
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/ant.rb

実際にやってみるとうまくいきました。
$brew install https://raw.github.com/Homebrew/homebrew-dupes/master/ant.rb
#################################################################100.0%
==> Downloading http://www.apache.org/dyn/closer.cgi?path=ant/binaries/apache-an
==> Best Mirror http://ftp.kddilabs.jp/infosystems/apache/ant/binaries/apache-an
#################################################################100.0%
/usr/local/Cellar/ant/1.9.2: 1590 files, 39M, built in 7 seconds

$ant -version
Apache Ant(TM) version 1.8.2 compiled on June 16 2012
ただし、2013年9月7日現在の最新版は1.9.2なので、若干古いバージョンが入っています。

2013/09/01

テスト駆動開発による組み込みプログラミングの集い@関西で講師をやりました #tdd4ec

(もう開催してから1ヶ月以上経っていますが、ブログにも記録しておきますね^^;)

7/20 (土)に関西で「テスト駆動開発による組み込みプログラミングの集い@関西」という組み込みソフトウェア開発者向けTDDのワークショップをやりました。





開催のきっかけ

そもそものきっかけは、東京で原著の読書会をやってる時に、Twitter経由で本イベントの主催者である@HappyLuckyAkiraさんから「関西でも開催しませんか?」と声かけいただいたことです。「実家が徳島なので、帰省ついでに開催できるなら!」と返事して、いろいろな方のサポートをいただいて無事開催できました。


まずは一歩踏み出す、他者とつながる

私が東京で原著の読書会を開催してから、Twitterを使ってたおかげで色んな人が我々のことを見つけてくれて、色々な人と協力しながら、翻訳レビュー、Agile Japan 2013でのワークショップ通訳、トレーニング開催、東京や関西でのワークショップイベントへ繋がったのはとても刺激的で素晴らしい体験でした。その辺の経緯はLTでお話しました。

まずは一足を踏み出すこと。他者とつながる場所で活動することは大事ですな。

LTをやりました

怒涛の勢いでここまできたので、整理の意味あいで。あと、活動をしてもらう目的でコレまでの経緯を紹介しました。



ワークショップをやりました

そして本題のワークショップでは、以下の資料を使いました。


テスト駆動開発による組み込みプログラミングの集い@DevLOVE関西 from Yohei Onishi


ワークショップの流れ

流れは以下のとおり。
あとで書籍見た時にすんなり理解できるように動機づけ、重要なテクニックなどは紹介しました。
ただし、口で説明しても伝わりづらいかと思い、ワークショップをやりながら詰まったところを助言したり、途中でTIPSを紹介したりしました。

  1. 概要説明
    • TDDとは何か?
    • なぜTDDをやるのか?
  2. ペアプロで演習
    • 書籍のサンプル「プロダクトコードをスパイする」をテスト駆動で実装
  3. 振り返り
    • ペアプロの組で振り返り
    • 全体の振り返り(ペアプロの組×2)

良かったこと

  • 途中、人が集まらなかったそうなので、ひとまずは開催できて安心しました。
  • 未体験の人がTDDに取り組無きっかけを与えることができてよかったと思います。
    • 最初の講師が私で良かったのかという疑問はありますが^^;
  • 他の関西コミュニティで活動されている方も参加されており、うちでもTDDのワークショップやりませんか?という意見が挙がってました。関西の交流の活発さが伺えました。

反省点 

  • Windowsでサンプルがコンパイルできなかった
    • Windowsでの動作確認をちゃんとできていなかったせいで、当日、Windows組がコンパイルできない騒動が発生^^; エンコーディングがUTF-8だとWindowsでうまく動かないようで^^; すんません。
  • サンプルの題材が参加者に上手く伝わっていなかった
    • 題材自体がよく理解できなかったという意見もありました。あまり分かりやすい説明ではなかったところ反省してます。ただ、Q&Aの時間を設けてもなかなか手があがらないのが難しいところです。

次の機会でトライ !

  • 昔、TDDBCに参加した時は、「簡単な問題を徐々に出してく」「本人にフルスクラッチで作ってもらう」というやり方をしていました。時間を1日とか半日とか取れるなら、そういうやり方の方が参加者にとって題材を理解する負荷、サンプルを理解する負荷は下がるのかなと思いました。
    • ただし、皆の設計・実装が異なるのでサポート陣が大変そうですね。
  • せっかく組み込みなので最後にarduinoで実機テスト出来る題材にするとか。すでに@haradakiroさんがやってましたが。。。

おまけ

このイベントの声かけいただいたのが5月上旬だったんで、5月末開催のAgile Japan 2013で原著者のJamesさんとお会いした時に、主催者の @HappyLuckyAkira さん向けのサイン本をもらっておきました。やはり頑張った人にはご褒美がないと。。

HomebrewでMac OS X Montain Lion (10.8.4) にMySQLをインストールする

自宅のMac OSにMySQLをインストールする機会があったので、ついでにその流れをメモしておきます。

以下のブログエントリを参考にしました。

HomebrewでMySQLをインストールする時に知っておきたいこと
http://tukaikta.blog135.fc2.com/blog-entry-197.html


1. MySQL をbrewでインストールする

brewコマンでインストールを実行します。
$ brew install mysql
私の環境では以下の実行結果が出ました。インストールに問題はないようです。
To connect:
    mysql -uroot
To have launchd start mysql at login:
    ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
    mysql.server start

なお、実行結果は以下のコマンドで後から確認できるそうです。

brew info mysql


2. MySQL を起動する

実行結果のログに出ていた以下のコマンドを入力すると無事に起動します。

mysql.server start

以下のコマンドで起動を確認します。なお、私の環境ではパスワードが設定されていないためpオプションは不要でした。

mysqladmin -u root ping

以下の出力であればOKです。

mysqld is alive

3. rootユーザにパスワードを設定する

こちらをやるかどうかは任意ですが、パスワードを設定しておくと良いでしょう。
mysqladmin -u root password 'new-password'

これで完了です。