Hatena::ブログ(Diary)

A.R.N [日記]

2015/08/30 (日)

ブログ移転のお知らせ

 ブログ移転のお知らせを含むブックマーク  ブログ移転のお知らせのブックマークコメント

サイト名を変えて、そのまま継続するつもりだったけれど、せっかくなので、はてなブログで続けることにしました(というわけでサイトのタイトルも元に戻した)。

新サイトは「hidekatsu-izuno 日々の記録」です。

はてなダイアリーからはてなブログへサイトごと移動すればという話もあるのですが、以前、移動させたところ、コメントや一部の書式がうまく移動できなかったため取りやめたという経緯があったりします。

書く内容自体はたいして変わらないとは思うので、今後ともよろしくお願いいたします。

2015/08/26 (水)

タイトルは変えたけれども

 タイトルは変えたけれどもを含むブックマーク  タイトルは変えたけれどものブックマークコメント

今更ではあるけれども、TwitterFacebook実名でやってるし、あえて匿名にする必要がなくなってしまったので、ブログタイトルも変えてみた。ARN(=以前のブログタイトル)という名前も元々、私の画号みたいなもので匿名にする意図はなく、絵を描くこともブログ更新もほとんどなくなってしまっている現在においては、使う機会も減ってしまった。

一時期流行っていた匿名・実名論争も、トンデモない人は匿名だろうが実名だろうがトンデモないこと言うし、まともな人は職務差し障りが無い分、よりまともなことを言うことが、誰の目にも明らかになった現代において、匿名であることのメリットは、職務上差し障りのあることでも書ける、とか、炎上した際に職場や自宅にクレームが来る可能性を下げることくらいしかないのではなかろうか。

ただ、この「職務上差し障りのあることが書けない」という問題は予想外に大きな障害である。仕事上の極秘事項とか客先の秘密を書けないというのは当たり前の話だし、私だってそんなこと書くつもりはない。それは契約以前に倫理マナーの問題である。

むしろ困るのは客先の販売している商品サービスの扱いである。私の仕事はいわゆるひとつのシステムエンジニアだ。そうすると様々な業種の客先から仕事を請け負うことになる。

もし、客先の商品に不満があったとしても、それを取り上げて批判することは当然慎まねばならない。まぁ、これは仕方ない。個人的にも許容できる。

一方、その会社の商品を大変気に入っている場合はどうだろうか。私自身の言説の信頼を損ねないためにもステマと見られる行為は慎まねばなるまい。というわけで、結果として客先の商品については書けなくなってしまう。

では、その客先のライバルの商品が自分お気に入り特に食い物とか)だった場合どうだろうか。

もし、うっかり客先担当者がライバル社の商品を絶賛する記事を見てしまったらどう思うだろうか。普通は気分を害すだろう。逆に不満を書くのも前述の通りステマと見られてしまいかねないので書くのがはばかられてしまう。結果、客先の商品分野と同じジャンルの商品については何も書けない。

さらに言うと、社内ではあちこちでいろんな人がいろんな企業から仕事を請け負っている。となると、うっかり特定の商品について何かを書いたことが原因で、同じ会社の会ったこともない誰かが不利益を被ることもありうる。ここまで考えると、ありとあらゆる商品について語るのが難しくなってしまう。

幸か不幸か、このブログは経済と開発系の話題しかないので、さほど問題になることはないとは思っていたのだが、ここ最近、困った事例に出くわしてしまった。

システムの問題に対する言及である。

例えば、高木浩光先生がシステムの脆弱性をいつものようにあげつらったとしよう。浩光先生の言うことであるから大抵正しい見解であるし、その大半は知識ある人なら「それはないわー」と思うものも多い。以前なら何も考えずリツィートしていただろう。しかしこれは罠である。

多くの Web システムではその開発会社は公開されていない。その問題を持つシステムはもしかしたら自社の別部署の仕事かもしれないではないか。非人情を自覚する私とて、同僚の批判をするのははばかられる。彼らは彼らなりに決められた予算の中で最大限の努力をしたのかもしれず、自分がそのシステムの担当者だった場合、同じ会社の人間からボロクソに言われていたのを知ったらどう思うだろうか。

というわけで、本日も某大手企業の通販サイト国内でさえシェア 35% もある chrome からログインできないなどという今どきありえない仕様になっていても、その不満はそっと胸にしまう(ことはしなかったが社名をぼかしてツィートした)のであった。

トラックバック - http://d.hatena.ne.jp/arn/20150826

2015/08/17 (月)

Work Rules! から何が学べるか

|  Work Rules! から何が学べるかを含むブックマーク  Work Rules! から何が学べるかのブックマークコメント

Googleが人事評価統計的に処理して人事制度刷新をはかっているという話は前々から出ていたのだが、その実態はなかなか表に出て来なかった。「Work Rules!」は、Googleがこれまでに行ってきた人事制度改革を余すことなく開陳した本だ。

人事制度や昇進の基準は、どうしても人が関係する以上、たいへんセンシティブだし、教育問題同様、誰にとっても身近な話なため、なかなか客観的議論が難しい。

たとえば、私が良い上司とは何なのかについてツィートする時、人事部は私が上司や待遇に不満を持っているのかもしれない、と思うかもしれない。いや、もちろん何ら不満がまったくないわけではなかろうが、そこまで強くもっているわけでもない。

私が良い上司の条件に興味を持つのは、出世したいという願望よりむしろ、どのような上司が良い上司なのかわからないのに、上司の良し悪しに文句を付けられるのだろうか、という点にある。あるいは、さすがに私も年齢が年齢なので、上司ではないにしろ、後輩などに仕事を指示しなければならないことも増えてきた。その時、どのように接するのが良いのだろうか。

Work Rules! は比較的優れた本ではある。おそらく同種の本の中では一番良いのではないか。しかしながら、読んだ感想として消化不良を感じてしまうのも事実だ。著者自身も書いているように、Googleの人事制度は確実に以前より良くなっている。しかし、いまだ結論ははっきりしない。

この本で一番はっきりしないと言われているのは業績評価システムだが、良いマネジャーとは何かを研究した Project Oxygen の結論も個人的には微妙である。具体的には、以下のことが挙げられている(番号の小さいものほど重要とのこと)。

  1. 良いコーチであること。
  2. チームに権限委譲し、マイクロマネジメントをしないこと。
  3. チームのメンバーの成功満足度に感心や気遣いを示すこと。
  4. 生産性/成果志向であること。
  5. コミュニケーションは円滑に。話を聞き、情報は共有すること。
  6. チームのメンバーのキャリア開発支援すること。
  7. チームに対して明確な構想/戦略を持つこと。
  8. チームに助言できるだけの重要な技術スキルを持っていること。

この項目を見て、えっ、そんな結果が! と驚く人はいるだろうか。むしろ、凡庸な結論に見えないだろうか。Googleは、管理職などいなくてもいいかもしれないから、とりあえず廃止してみようなどと考えるギーク会社であるから驚いたのかもしれないが、たぶん、普通の会社は驚かない。

そういえば、この本に通底していることではあるが、「Googleでなければできないんじゃない?」と思われることが多々ある。

Googleならば最高な人材を集めることができる。報酬も好きな額支払うことができる。Googleならば、仕事はできるが人間的に問題があるかもしれない管理職を排除すれば良いのかもしれないが、普通の会社は、人間性からもたらされるチームへの負の影響と良好な仕事の結果を天秤にかける必要がある。

Googleならば、良い結果をもたらすために管理職に管理職として役割専任させることができるが、普通の会社は、管理職は優秀な営業職や優秀なプロジェクトマネージャーの役割を兼務しており、管理職としての立場に専任できない。良いコーチであったとしても、本業がうまく行かなければ、すぐに役職から降ろされてしまう。

いや、むしろ逆なのか。「チームに権限を委譲し、マイクロマネジメントをしないこと」という2番目のルールの重要性を鑑みるに、むしろ管理職を専門職化すべきということを示唆しているのかもしれない。

Googleの知見を普通の企業に持ち込むにはもう一工夫が必要なようにも思う。

話変わって、Googleの労働環境お話。Googleは「悪をなさない」という社是すら持っていた会社であるから、素晴らしい社員達が素晴らしい環境で素晴らしい仕事をすることが会社の利益に繋がるという理念で社員を扱っている。

しかしながら、世界の企業を見るとこれは必ずしも事実とは異なる。Amazon.comAWS という社会を変えるサービスを生み出し今なお生み出し続けている革新的企業であるが、報道を信じるならば労働者部品であるという理念を持っているように見受けられる。ブラック労働と言えばワタミやすき屋も話題にのぼったが、それらの企業も、労働者は部品のように扱ったが、消費者にとっては安くてそれなりに美味しいというメリット提供してくれている。

SunDECは、技術者にとっては住み良い企業だったかもしれないが、消費者にとってはそうでなかったかもしれないし、実際、潰れてしまった。

おそらく、正解はGoogleにはない。むしろ、労働者もしょせんは資源のひとつに過ぎない以上、(社会からの反発を受けない限り)労働者をこき使ってでも消費者に尽くし利益を上げるのが経営者の正しい姿なのであろう。その点でも Google の方法論がどこまで普遍性を持つのか、検討を要するように思う。

以下、余談。一方で企業が労働者を搾取するということは、国家全体にとっては大切な国民効用を下げるだけでなく、ただでさえ少なくなっていく労働力を摩耗させて使い潰しているわけだから、決して喜ばしいことではない。個々の企業の最適解が全体の生産性を悪化させている。まったくもって合成の誤謬だ。

ようは、労働者を守るのは経営者の役割ではなく、競争ルールを定める政府の役割なのであるから、労働環境を改善すべく法整備を進めろという話である。

労働時間が減少すれば生産性は引き下がるのではと思うかもしれない。ところが、安い労働力が溢れている地域では、そもそも生産性を改善する機運が生まれないという話もある。実際、日本でもオイルショックがあったから、省エネが進んだ。労働時間を削減すれば、どの企業も生産性を上げる工夫をしなければ今までと同じことができなくなる。結果、生産性は改善する。

世の中、少しづつでも良くなってくれるとありがたいのだが……。

2015/08/01 (土)

Javaの正規表現とJavaScriptの正規表現の空白クラスは異なる

|  Javaの正規表現とJavaScriptの正規表現の空白クラスは異なるを含むブックマーク  Javaの正規表現とJavaScriptの正規表現の空白クラスは異なるのブックマークコメント

本日は軽いネタ。Java だろうが JavaScript だろうが、正規表現は拡張構文の違いはあるものの基本的には同じに扱える。と思いきや、Unicodeが入ってくるとだいぶ状況が違うようだ。

言語によってサロゲートペアの扱いが違うのは知っていたが、空白クラス(\s)の定義まで違うとは思わなかった。

例えば、Javaはこれ。ASCII範囲のものしか空白には含まれていない。XMLの空白([ \t\r\n])に比べるとやや範囲は広い。

また、いつの間にか以下のような見慣れない空白クラスも定義されている。

  • 水平方向の空白文字: [ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]
  • 垂直方向の空白文字: [\n\x0B\f\r\x85\u2028\u2029]

それに対し、JavaScript は UNICODE範囲の空白をすべて扱えるようだ(以前はASCII範囲だったはずような気がするのでES5で変わったのだろうか。定義書ざっと確認したが該当の記述を見つけられなかった)。

  • 空白文字: [ \f\n\r\t\v\u00A0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000] (参考:正規表現

しかし、この情報は古いのか、英語版サイトを見に行くと以下のように書いてあり、少々内容が事なる。

  • 空白文字: [ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] (参考:RegExp

使える正規表現が違うのは許容できるけれども、同じ名前で異なる範囲を表すというのは結構ワナだ。それはともかく実装により違うのだとすると予期せぬ動作にも繋がってしまうので、JavaScriptで空白クラスを使うのは避けたほうがいいのかもしれない。

2015/07/28 (火)

なぜ、プログラマは滅びないのか

|  なぜ、プログラマは滅びないのかを含むブックマーク  なぜ、プログラマは滅びないのかのブックマークコメント

先日、「プログラマを志す君に伝える「仕事が無くなるリスク」」という、少々頭の悪い記事を読み、まぁ、こんなのまともに相手する人いないか、と思っていた。

ところが、「将来、人工知能がプログラマの代わりになることを想定するのはおかしいことではない」という意見をいくつか目にしたのだ。こういう見解は、人工知能がどういうものなのかについて誤解があるのではないかと思う。そのような未来は起こりそうにないし、仮にそのような未来が実現したとするならば、人々はまったく働く必要がなくなる天国AI支配されたディストピアのいずれかになるだろうから、プログラマの存在価値どころの話ではなくなってしまう。

まず、ある人が「○○できるシステムが欲しい」と望んだとしよう。きっと「○○できるようなシステムが欲しい」という言葉から考えられるシステムは無数にあるだろう。人工知能は、この無数の可能性の中からもっとも適切と思われるひとつを選び出しプログラムを生成する。

さて、この生成されたプログラムが望んだシステムと合致しているか、どうやれば確認できるのだろうか。正当性を確認するためには、「○○できるシステム」の仕様を詳細に書き起こし、検証する必要がある。

経済学には「政策目標がN個が存在するとき、N個の目標を同時に達成するためには、独立な政策手段もまた同数のN個なければならない」というティンバーゲンの定理というものがある。これは N 個の独立した要件を満たすためには、入力も N 個必要だということも意味している。N個の結果を個別にコントロールする必要があるわけだから、ある意味当たり前の話かもしれない。

ある人が望むシステムを人工知能が正しく生成するためには、N 個の要件を人工知能に正しく教える必要がある。これはまるでプログラムのような詳細設計書を作成する作業に等しい。プログラムに等しい詳細設計書からプログラムを生成するくらいならば、普通の人はそのような設計書の代わりにプログラミング言語でプログラムを書くだろう(日本語プログラミング言語「なでしこ」を使ってもいい)。その方が簡単だからだ。人工知能の出る幕など無い。

抽象的だろうか。では、このような例はどうだろう。「1ならば2、5ならば10、7ならば14を返す関数」をAIによって自動生成したとする(そのような仕様を指示する人はいない、と思うかもしれないが、例えば単体テストケースからそれを満たす関数を自動生成すると考えてみよう)。さて、2を入力した場合、何が返されるだろうか。言うまでもなく独立した3点を通る関数は無数に存在する。

いや、人工知能であれば、常識を見つけ出し、直線を仮定した上で 2倍して 4 を返す関数を生成するはずだ、と思うかもしれない。しかし仕様には明記されていない以上、その答えが正しいとする根拠はどこにもない。要件を出した人にとっての常識と人工知能にとっての常識が同じとは限らない。それ以上に、仕様が明らかではないプログラムなど危なくて使うことができない。8割は正しい値を返すが、2割は間違った結果を返す可能性があるSIN関数など使いたいとは思わないのではなかろうか。

現在においても人工知能が有用な分野は、だいたい合っていれば十分役に立つし、間違ったところで大問題は起きない場合に限られる。幸か不幸かプログラマが開発するプログラムの大半はその要件を満たさない。

少ない入力で適切な結果を得られるようにすることは、仮定を置くことで、ありえないパターンを捨てることを意味している。おそらくこれは、人工知能というより DSLドメイン固有言語)と呼ぶべきものだろう。では、DSLを見つけ出すことはできるだろうか。これはある程度できるかもしれない。いわゆるデータマイニングだ。しかし、その場合も、発見されたDSLを使用する/しないの「判断」は人間が行う必要がある。

例えば、人工知能は「必須セレクトボックスには空欄の選択肢不要」というDSLを発見するかもしれない。これはほとんどのシステムでは適切かもしれないが、人によっては気付かず実行ボタンを押してしまうので初期値は空欄にして必ず選ばせたい、と思うかもしれない。これは趣味の問題であって、人工知能には「判断」を下すことができない。

もちろん、もし、人工知能が人間の知能を完全に模倣できたとすれば、「判断」を下すことができるようになるかもしれない。しかし、そのような人工知能が実現したならば、プログラムに限らず、あらゆる知的作業はすべて人工知能に行ってもらえば良い。プログラマの将来どころの話ではない。

人間がやるべきことは、その時点では機械では難しい肉体労働だけであろうし、そのような世界ではおそらく生産能力も飛躍的に進歩しているだろうから、我々はほとんど働くことなく好きなものを飲み食いできるはずである。あるいは、人工知能はもはや人間を必要とせず、あらたな支配者になるかもれない。いずれにしても、あと数百年はただの夢物語であるから、今生きている人間が気にする必要があるとは思えない。

bokuwabokudayobokuwabokudayo 2015/07/30 07:33 だと思う。コードを生成するとか、何かを生み出す系のために研究してるわけでもないし。判断に限れば、クラスタリング、SVN、NNなどはN値に入力値を割り振る場面に使うものだし、関数のフィッティング系の出力は(条件つき)確率か確率密度関数。機械がこの仕様があってる確率は80%です!とか言われても、どっちやねん!と突っ込みたくなる。

それでもテストコードぐらい生成できるようになってくれると、ちょい助かるだけどな…


いつか、どっかの馬鹿が、プログラム生成もどきを作って人工知能だ!とか言い張るだろうなーと、そして「ついに来た!」とか馬鹿記者がのるんだろうなーと思う。