tetsunosukeのnotebook

tetsunosukeのメモです

社員研修とゲーム(ファシリテーター Advent Calendar 2016)

この記事は ファシリテーター Advent Calendar 2016 - Adventar の5日目の記事です。

私とファシリテーター

2016年より、教育研修ファシリテーターとして、社員研修に関わることとなりました。

2013年から、自身の所属する会社にてシステム開発研修の枠を担当しており、その中で2つのワークショップを実施したことをきっかけに、今年から研修全体の設計を人事部門と一緒に設計しています。

社内でいくつか実施しているワークショップの中で最も学びが大きいと思われるのは「ゲーム」であると考えており、その過程で、7つの習慣ボードーゲームの公認ナビゲーターとなりました。

また、ワークショップデザイナー、ファシリテーターの交流会で知った、写真を活用した POINTS OF YOU(R) というツールに出会い、認定エバンジェリストとしても活動しています。

2017年は、LEGO(R) SERIOUS PLAY(R)ファシリテーター講習を受講予定で、抽象的なものを使い自身の内面、潜在的な意識を表現することで組織の力を高めるお手伝いをしていきたいと考えています。

私とゲーム型研修の出会い

大卒で入社したメーカー企業にて、二週間の全部門合同の導入研修、職種別の研修と、あわせて4ヶ月程度の研修を受講しました。

振り返ってみると「貿易ゲーム」や「プロジェクトアドベンチャー」のようなアクティビティが何度も行われ、そこで繰り返されたメッセージは「PDCA」でした。今でこそ計画有りきのPDCAはビジネスのスピードにそぐわないとされますが、いわば「仕事の基本」を叩き込まれたと思っています。

他のチームやメンバーと競い合うことでゲームに没入し、結果として何がうまくいって何がうまくいかなかったのか、また、その途中での自身の言動は周囲からどのように見えているのか、そのようなことをアクティビティを通じ学び、当時の講師に伝えられ、次のアクティビティでは自分なりの工夫をして、というサイクルが非常に新鮮であったことを今でも覚えています。

その活動こそが「経験学習モデル」だったのです。

経験学習モデルについてのおさらい

www.keikengakushu.jp

詳しくはリンク先を読んでいただきたいのですが、ゲーム研修による学びというのはまさにこのモデルにのりやすく、あるゲームを実施してそこで経験した学びは直接的に業務に活かせるわけではありません。しかしそれを「概念化」することこそが学びを最大にします。しかし、そこに「ファシリテーター」がいないと、ゲーム内で起きた出来事を、プレイヤーたちに適切に認識させることができません。

たとえば

  • ふとした発言が場を変えた
  • 誰かの言動を黙認してしまったことが結果的に失敗を招いた

などの「事象」や、その事象が発生したときに周囲がどのような行動を取ったか、これをファシリテーターが適切に観察し、フィードバックをする必要があります。もちろん、ツールとして写真を用いたりして、本人たちに内省を促すのも良いでしょう。

その場に「ファシリテーター」として携わることには難しさがあります。まず各ゲームには「ありがちな罠」がたいていあるものですが、ファシリテーターは「決まった結論を教える存在ではない」ので、その罠へ誘導してもいけません。しかし、ある程度はその罠にハマったり、罠にハマったことに対してのプレイヤーの気付きに対し、それを「正解のひとつ」となるような誘導をある程度は行うことになるからです。「研修」である以上、「こちらが用意した何らかの学びを持ち帰ってもらう」ことが必要になるケースが多いからです。

おすすめのゲームの紹介

新入社員研修では「PDCA」の重要性を学んだのですが、現代の新入社員には、PDCA、その先の「GPDCA」や「OODA」といった考え方を取り入れていく必要があるように思います。

ここからは私が活用しているゲームについて紹介します。

チームビルディングとコミュニケーション「マシュマロ・チャレンジ」

下記の動画で紹介されているゲームです。

www.ted.com

当社では研修の前半にこのゲームを取り入れています。特に、(どこでもそうだと思いますが)当社で求められる「主体性」が必要とされます。つまり、「その場で起こることを自分ごととして捉え、自分の言動で周囲を動かしていく」ということが求められます。限られた材料で「目標を目指すこと」を知り、「周囲の仲間と合意する」ことや、「チーム内で自分の場所を動的に見つけていく」ことが求められる、ファシリテーターにとってもスリリングなゲームです。

食品を扱うことに批判等があるので、代わりに紙のみでタワーを作る「ペーパータワー」や、レゴブロックを高く積み上げる「レゴの高積み」なども良いでしょう。

f:id:kidd-number5:20161203232225j:plain

シンプルに積むだけではなく、色や形の使い方に制限を加えるルール変更を施すと、また状況が変わります。

シンプルなコミュニケーション、「次回こうすればよかったのでは」が生まれやすい 「THE GAME」

ザ ゲーム The Game [並行輸入品]

ザ ゲーム The Game [並行輸入品]

「協力型ゲーム」の中でもルールが極めてシンプルなゲーム。4名がおすすめ。基本的に「相手が欲することをする」ということを基本としているがコミュニケーションがある程度断絶されているという点で、やや業務をすでに経験したことのあるレベルのメンバーに対して内省をもたらす用途が良いかもしれない。

コミュニケーション断絶系で言えば

花火(HANABI) 日本語版

花火(HANABI) 日本語版

も良いかもしれないです。


刻々と変わる状況への対処。ポイントは優先度づけ? 「禁断の島」

禁断の島(FORBIDDEN ISLAND)

禁断の島(FORBIDDEN ISLAND)

業務でもありがちな「各プレーヤーそれぞれができる能力が違う」という状態で協力してミッションを達成するゲーム。ミスは一人のプレイヤーの責任ではなく、全体でその判断を下したからだ、ということが理解できる。また、ルールがそこそこ複雑なので、ルールをきちんと理解できているか?また、理解できていないとしたらそれを質問できるか?などの仕事への基本的な取り組み方を知ることもできる良ゲー。

プレイ時間も45分程度なので「PDCAが実際に活かせているのか」をみるために2回プレイすることもおすすめ。

予算と時間があえばたぶん最強「リアル謎解きゲーム」

「リアル脱出ゲーム」を提供するSCRAP。
youtu.be

SCRAP は専用で研修・懇親会向けの制作も行っています。

SCRAP GOODS SHOP

他には、常設型の なぞともカフェ 新宿店 最新情報 - 謎とも/なぞとも - 参加体験型イベントレビューサイト やそこで扱っているカップ謎やNAZOLETなども手軽で良いですが、製品の都合上1回しかプレイできないものもあるので、複数個購入が必要なものもあるし...

特にチーム戦で行うリアル謎解きゲームでは、制限時間内でのミッション達成のため、たくさんの問題を解く必要があるが、その解答プロセスや、新しく得た情報を共有しないとクリアできないものが多いため、こちらも業務で発生しがちな問題をゲームとして体験できます。



最後に(振り返りの活動の紹介)

me/we/good/bad の4象限 という名前の振り返り方法を利用しています。KPTでも良いのですが、もっと「自分」にフォーカスしてもらいたいため、考案しました。(この象限モデルは「タモリボキャブラ天国」の「バカパク・インパク知」を参考にしています)

良かったこと(good)、悪かったこと(bad)をそれぞれ度合いごとに、自分自身のこと(me)、チームまたはメンバーのこと(we)としてマッピングします。

メンバー間のギャップ(例えば9割の人が良い活動だと思っていても1割の人には何らかの不満があった可能性がある)を共有して解決策を探ったり、進行中には言えなかったことなどを改めて問題として提起したり、活動に対して個人が犠牲的になったことなどを共有し、次回に活かす時に使えます。

特に「自分の良かったこと」はなかなか挙げづらいが、「全体で良かったこと」として特定個人の良いはたらきが挙がったりすることで、全体として客観視することができる。また個々のメンバーが持っている価値観を知ることができます。

f:id:kidd-number5:20161204000110p:plain

それぞれの象限へ書かれる「個数」を同じ個数にするように指示することで「自分が悪かったことばかりにならない」など、「悪かったことだけでなく良かったことの原因を振り返る」癖や、「メンバーの良い行動を褒める」ことにつなげることができるようになります。

その他参考


長くなりましたが最後までお読みいただきありがとうございました。

ゲームを体験してみたい方など、ぜひコメント欄等でご連絡ください。
ゲーム研修の難しさのひとつは・・・実際に体験してみないとおすすめ度がわからないことだと思います...

今年は、レゴ マインドストームを用いたゲームを開発しようとしていますが・・・間に合うかな・・・。

6日目は

再度、高柳さんが書いてくださるそうです!
note.mu

2016年版) 情報収集フローについて一旦まとめてみるよ

Plaggerがどうのこうの言ってた頃が懐かしい今日このごろ。久しくPerl触ってないわ・・・w

基本的には、GoogleReader+Pocket+EvernoteGoogleReader亡き後はFeedlyにて

dekiru.net

こんな感じでやるのが王道、というところではありましたが、そもそもRSSリーダーだよりにしているとなかなか情報が偏ってしまう(だってリソースが固定なのだから)問題があったので、最近はどのようにしているかについてまとめておきます。(これも社内の一部の方から聞かれたので)

この記事もきっかけ。

そういえば最近RSSリーダーあまり見てなくて代わりにチェックしているのは
shumaiblog.com

リソース

ポイントとしては、いくつかのリソースを分けているというところ。自分はキーワードで追うということは(ノイズが多すぎてしまう気がするので)やっていない。

  • 前から読んでいるRSS
  • SNSTwitter/Facebook
  • キュレーションメディア(ある意味SNS
  • オフラインリソース

※ どのような記事を中心に収集しているかの説明は割愛

管理(?)ツール

  • Feedly(FeedMe)
  • Pocket/PocketRocket
  • Wunderlist
  • Gmail
  • Slack
  • IFTTT

インプット系の主な流れ

割とキモになるのは「身近な人の話題に遅れないようにキャッチアップする」ことと「多くの人が話題にしていることはその日のうちにはキャッチアップする」など、情報の鮮度・範囲によっていつ見るかを変えていくことです。

入ってきた情報は適切な範囲に共有してナンボなので、インプットからアウトプットへすぐ流せるようにしている。

毎朝のRSSチェック

通勤電車にて、FeedMeでひたすら処理。

andronavi.com


Feedly公式アプリではなくFeedMeを利用しているのは、「読んだもの・気になるもの」の管理の仕方が便利だから。Androidにしてからは「リンクの共有」は多少は便利になったものの、「記事を左フリック」で保存先のサービス(Pocket)を利用できるので便利。(そういう設定をすれば)

基本的には気になるタイトルのものを「その場で読む」「Pocketに保存」するかのどちらかがスタート。

「その場で読む」を行った上で、共有したい記事はそのまま、Slack(会社共有用)、Facebook(友人共有用)、Twitter(おおまなか共有用)、Gmail(主に技術系記事など「あとで試す」用)、Pocket(長いからリアルに「後で読む」用)に振り分けていく。

毎朝FeedMeを起動した時に新着となっている記事の数は概ね300~600くらい。うち、実際に読んだりするのはおよそ30~100程度に絞られる。

Facebook

これは特に会社同僚などの共有記事を早期に把握するため。通勤+出社後数分はこのあたりの記事は同様に全部眺めて、必要に応じて上記フローで管理する。

その他、アルファなアンテナな人たちは友達ではなくフォローしている。

目を通すものはおおよそ20件ほど。

Twitter

目についたものだけLikeする。IFTTTでLikeした記事をPocketへ保存している。

IFTTT Recipe: Save links from liked (favorited) tweets to Pocket! connects twitter to pocketifttt.com

Gunosy + Nuzzel

主に会社昼休みに読むため、一日一回メールで届く。Twitterでよく流れているような記事は、かなり一期一会感があって、なかなか読む機会がないので、この手のキュレーションツールに任せる。

このツールがもっとも「情報にヘンな偏り」がなくて良い。特にGunosyは比較的最近「飲み会でのマナー」とか「経営者の考え方」とか、そういうのが流れてくるから良い。

Nuzzelは比較的技術的な話題が流れてくることが多い。

こちらも目を通すのは20件ほど。

自分が発信も含めて使っているTwitterアカウントと、情報収集のために(主に有名人を)フォローするためのアカウントを2つ使うと良い。

Smartnewsとかこのへんは流行り廃りがあるので適当に切り替える。

www.danshihack.com

PocketRocket

Pocketに入れたものは、暇な時などに主体的に読みに行かないといけないので、それをある程度自動化というか義務化してくれるツール

www.lifehacker.jp

現在の課題はメールで送られてきても読む隙がないと受信トレイに居座ってしまうので、定期的にクリーンアップをまとめてする必要が有ること。

メール

イベント系が主。dotsとかPeatixとか、Doorkeeperとか。
セミナー系予定は日程の都合がつくかを見た時点では決められないのでWunderlistにイベントの開催日の月初あたりにリマインドするようにする。

Wunderlistのここがすごい!山ほどあるタスク管理アプリの中からWunderlistをオススメしたい6つの理由
ottan.xyz


YOME

嫁。

主に帰宅した時に、その日見たらしいテレビやSNSでキャッチしてくれた情報をまとめてくれるスーパー有能秘書(ただし情報がある意味最適化されすぎていて偏りまくっているw)。オフラインリソースの収集においてはもっとも効果的。

最近ではWunderlistの活用も少しずつ進んできたし、媒体(LINEやらメールやらTwitterやら)をもろもろ駆使して情報が伝達される。

だいたい1日10件くらいかな。

メモ

電車とか街中とかでふとみかけたことについては、だいたいWunderlistに入れて管理している。

管理というかバックアップ

バックアップして、検索可能にするための方法。
基本的には3通り。

Gmail

検索といえば。
Evernoteにも保存はしていますが、なんか最近Evernoteの動向が怖いので。
特に「自分で後で使うかもしれない」ワードをタグっぽくタイトルにつけておくと、あとで検索できる。記事のみだと、キーワードを曖昧にしか覚えていないため、

Googleカレンダー

FacbookのPOSTと、Pocketでのアーカイブは全てIFTTTでGoogleカレンダーへ。特に時系列でどんなことを考えていたか、とかを知るのに便利。情報収集できてない時期、とかもよくわかる。


はてブ

Pocketでアーカイブしたらはてブ。これもIFTTTで管理。

とりあえずこんなかんじ!

万人向けかどうか

自分の場合、ものを読む速度は速いほうだと思うので、それでうまくいっている部分もあるかと・・・。加えて通勤時間が1時間位は電車に乗ってないと難しいですね。

あとは、自己啓発本というわけではないが

biz-shinri.com

自己啓発本なんて、どれも皆ほとんど同じことが書いてあるからです(笑)。」というパターンがあるので、積み重ねると目を通すスピードが分かるというか、捨てていい部分が見えやすくなると思います。

おわりに

情報は発信する人の元に集まると信じています。

いわば、日本語を使って言葉を発しないと日本人だと思われないので話しかけられない、みたいなことが平気であって、共通言語をそろえておくことで僕に何を話したら良いか、何の話は通じなさそうか、みないなことを明らかにしておくことを心がけています。

tensorflowを手早く試したい

Windows でもTensorflowしたい!

会社の人が Tensorflow 触ってみたいというから・・・。

必要なもの

セットアップ作業

tensorflow-ipy をダウンロード。HTTPSとかZIPとかGitとかは好きにして。

あとは書いてあることに従う。

> vagrant up

すると、ubuntu/trusty64をダウンロードして起動したり、必要なライブラリとかをばしばしいれてくれる。待ち時間およそ15分(ネットワーク回線の速度によるところが大きい)

特に

==> default: Notice: /Stage[main/ ..,.

とか出てるあたりが長いから覚悟しろ。

==> default: Notice: Finished catalog run in ...

とか出たら終わり。

触ってみる

これもドキュメントに書いてある。

> vagrant ssh

こっから先はUbuntuの作業だ。

vagrant@tensorflow-ipy:~$

はじめのサンプル

この作業をすれば、 /vagrant/python/first-tensorflow.py ってのが入ってる。

$ python /vagrant/python/first-tensorflow.py 
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 1
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 1
Hello, TensorFlow!
42

これは、 Run TensorFlow from the Command Line と同じだ。

楽しくないから画像分類やるぞ!

github.com

これコピーしてくる。できたら、

$ python classify_image.py

すると

$ python classify_image.py 
>> Downloading inception-2015-12-05.tgz 100.0%()
('Succesfully downloaded', 'inception-2015-12-05.tgz', 88931400, 'bytes.')
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 1
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 1
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89233)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00859)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00264)
custard apple (score = 0.00141)
earthstar (score = 0.00107)

おもむろにパンダの画像を分類した結果を返してくるぞ。

適当にちょうちょの画像でも持ってきて

https://raw.githubusercontent.com/Itseez/opencv/master/samples/data/butterfly.jpg

$ python classify_image.py --image butterfly.jpg
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 1
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 1
admiral (score = 0.60748)
lycaenid, lycaenid butterfly (score = 0.09707)
monarch, monarch butterfly, milkweed butterfly, Danaus plexippus (score = 0.07980)
ringlet, ringlet butterfly (score = 0.02835)
lacewing, lacewing fly (score = 0.00367)

微妙に頭悪いな!

以上。

2015年を振り返る

「忘れる必要があるほど何かを成し遂げた感じもしない一年」みたいな忘年会を開きましたが、いろいろと列挙してみると、特に仕事の上ではいろいろなことがあった一年だったような気がする。

というわけで、久々の(というかこれしか書かない)1年の振り返り。

会社でQiita:Teamを導入したので、インターネットに向けて何かアウトプットをする、みたいな習慣がなくなってしまった。データに関するセミナー等でよく感じるのですが、社内のデータに関しては外に出すことができないので、外に出せないデータを分析している方法などは、ノウハウの抽象化が難しくてアウトプットしにくい。。。

主に心身の変化

疲れた

「休まらない」感じのある一年でした。「休む」「楽しむ」ことに対しての罪悪感が強くなってしまったことが一つの大きな原因。

そんなこともあって、「ストレスとのつきあい方」を変えるべく読んでいるのがこの本。
まだ読み終わっていないけどアプローチがとても興味深い。
特にストレスのある環境において、自分に発生しやすい傾向(例えばオキシトシンの不足により、人との交流をどんどん避ける方向へ行ってしまう)に対しての自覚を正しく持ち、その対策を打てるようになる気がする、という面がある。

スタンフォードのストレスを力に変える教科書

スタンフォードのストレスを力に変える教科書

6月に業務過多などの関係でストレスがとてもたまってしまい、気分転換のスポーツや遊びに行くなどを試みたら財布を落としてしまったりと、小さな疲れの積み重ねが大きなミスを呼ぶなどの典型をぶちかましてしまい、ほんとうに良くなかった。

人を信用出来ない

これは主に仕事上の問題なのだけど、良い意味で信用していない(きちんとチェックするように心がける)という部分ももちろんあるけど、「この人は自分を仕事上の関係でメリットがあるからという側面でのみ付き合ってくれているんだ」と思うようなことがとても多く(ある程度の割合で上記ストレス状態の影響でそう思い込んでしまう部分がある)、そういう意味でも「あまり信用出来ないと思った人と深く付き合うのをやめる」というところに達した。

いわば、「あなたのことを幸せにしてくれない人のことをあなたが幸せにする必要はない」という感じ。多くの「誤魔化し」や「言い訳」を目にして、うんざりしたというのも、「自身が過剰に期待してしまっている」ということだと思うので、そこからは一旦距離を置かないとと思う。


講演会やドラマや漫画の影響

今年聞いて良かったなと思ったのは

  • 「絶対にやったほうが良いという衝動的な気持ち」で動きましょう
  • 「夢はゴールではなくスタートである」

ということ話でした。また、ドラマ「下町ロケット」を見ていて「全社員が心から拍手できるようなこと」を成し遂げられるような何かを推進できるようにならなくてはいけないな、という気持ちがとても強くなりました。

どうしても緊急ではなく重要なこと、ということに時間を割けなくなってしまうのですが、そのヒントは、「他の人にとっても重要なこと」にも近づけることではないかと思い

note.mu

また、何かを成し遂げるにあたり1人の力ではどうしようもないわけだから、他の人にとって重要な事を知ったり、自分が重要だと思うことをそうであると周りに伝えていかないといけないなということを強く感じました。

仕事

主に、今年は大きく、長めの案件をずっと担当していることが多かった。会社としてもプレスリリースを出せるような案件の多くにメインで関わることができたことは、昨年からの仕込みを含めてよかったことではなかったかと思う。

仕込みからの業務への適応

主にしばらくやっていたこととしては

  • OpenCVなどを用いた画像解析の方法 → DeepLearningフレームワークCaffeに関わる業務
  • GoogleAnalytics個人資格(GAIQ)の取得→UniversalAnalyticsへの以降ならびにE-Commerce活用の設計
  • 統計学機械学習関連 → 類似度ラベリング関連の業務
  • 季節性のあるサービスの運営(企画と分析)

あたりがポイントになった。このあたりはまだまだ知識が不十分ではあるが、特にGAIQの取得に関連したデータ解析・データ評価に関する知見は、部署の異動をすることにもなり、積極的に活かす環境を与えてもらえたのが良かった。同時に、社内での若手の育成という面でも、自身の知見を活かした面からの若手のサポートを継続してできたし、彼らが先へ進む道のうちのいくつかの可能性が提示できたように思う。

環境面では画像解析関連では初めて学会へ参加し(聴講のみだが)、最先端であったり、トレンドであったり、というところを学ぶ機会を与えてもらえたことも良かった。

ワークショップおじさんとしてのキャリアパス

毎年恒例となってきた新入社員研修を今年も担当。

今年は研修のかなり序盤にて、チームビルディングや学習のしかた(経験学習モデル)、ユーザ要求からのニーズの発掘という、より中暑的なテーマでお話とワークをさせていただいた。人前で話すスキルセットは「エバンジェリスト養成講座」の西脇さんの考え方に多く触れて、だいぶ自分の中で体系化されてきた部分もある。(と、同時に、まだまだと気付かされる部分も多い)

こちらは 東京大学のフィーチャーファカルティプログラム「アクティブラーニングの手法」から様々なヒントを得ることができ、新たなワークショップの方法を知ることができた。

ワークショップファシリテータとしての活動は、向こう3年の間にもう少し体系的な学習を進めたいと思う。

techlife.cookpad.com

こちらのブログに書かれているようなことも、自身のキャリアの一つの可能性として考えていきたい。

これとか。

wsd.irc.aoyama.ac.jp


プライベート

「妻の手術」が案外インパクトがあった。あとは「実家の家の契約における連帯保証人」とか。どちらも、ある意味年齢的な面で人生折り返したなという感覚。健康大事・・・。


野球

観戦の回数はちょっと減ってしまったかなと思う。来年はひいきのチームがまた新しい可能性を見せてくれる感じがするので、もう少し見に行きたい。

プレイヤーとしての野球の方は、参加しているリーグのレベルがあがってきてしまったので、真剣に引退を考えている。
野球をすることそのものは好きなので、地域で別の(もう少し年齢層の近い)コミュニティなどを探すなどして、別途運動の機会として活用できればと思う。

謎解き・リアル脱出ゲーム

「倫敦大法廷殺人事件」では脱出成功するなど、だいぶ腕があがった感はある。こちらは来年ももう少しいろいろな講演に参加してみたりしたい。常設型の「エスケープ博士からの挑戦状」などは歯が立たなかったので、参加者間コミュニケーションとかとかも課題かな・・・。

2016年は

いろいろな面で自分の「存在意義」が見えてきたところがあるので、そこに必要なことを意識して吸収していけるようにしたい。
ひとつは、「身近な人を不幸にしない」ということかなと思っている。

実践的には、

  • プロジェクトマネジメントや学習するという行為に対しての具体的な支援

というのが目下。運良く自身が他社や学校などで学べたことを知らない人が多いので、そういう部分はできるだけ伝承しつつ、そのコミュニティにあった方法として根付かせられれば良いなと思う。

2015東大数学問題をPHPで解く(しかし、どはまる)

2015年東京大学(理科)数学 問5

mを2015以下の正の整数とする
2015 C m が偶数となる最小のmを求めよ
http://www.yomiuri.co.jp/nyushi/15/sokuho/1222243_2080.html

というわけで、Cをまずつくろう。

nCk = n!/k!(n-k)! なので、階乗を求める関数factorialを

function factorial($n) {
    if ($n === 0) {
        return 1;
    }

    return $n * factorial($n - 1);
}

と定義して、

function combination($n, $k) {
    return factorial($n) / (factorial($k) * factorial($n - $k));
} 

combination(4,2) -> 6 うん。OK.

これをループして、最初に偶数になるものだから
こんな感じかな?ターンッ

for ($i = 0; $i < 2015; $i++) {
    if (combination(2015, $i) % 2 === 0) {
        echo $i;
        break;
    }
}

ファッ?!

PHP Fatal error:  Maximum function nesting level of '1000' reached, aborting! in /home/vagrant/201504.php on line 9
PHP Stack trace:
PHP   1. {main}() /home/vagrant/201504.php:0
PHP   2. combination() /home/vagrant/201504.php:16
PHP   3. factorial() /home/vagrant/201504.php:12

最近では再帰の量に制限があるのか!初めて知ったわ!


xdebugがある場合は変更できるらしいよ。

ini_set('xdebug.max_nesting_level', 2000000);

どんくらいまで計算できるのかな?

var_dump(factorial(20));
var_dump(factorial(21));

int(2432902008176640000)
double(5.1090942171709E+19)

アウツ。
PHPの場合にはgmp_factを使いなさいってことですね・・・orz

Pythonで書いてみよう

同様に再帰の制限にかかってしまったので

import sys
sys.setrecursionlimit(1000000000)

def fact(n):
    if n == 0:
        return 1
    return n * fact(n - 1)

def comb(n,k):
    return fact(n) / (fact(k) * fact(n-k))

for i in range(0, 2015):
    if comb(2015, i) % 2 == 0:
        print i
        sys.exit()
$ python 201504.py 
32

よし。解けました。

2014年を振り返る

うわっ・・・今年ブログ書かなすぎ・・・

この会社に来てから会社員人生としては最悪だった一年だった気がする。
ん。会社員人生としてはいいのかもしれないけど、人生としては最悪、なのかもしれない。

友人のFacebookで「最近欲がない」という投稿を見たのだが、たいへん言い得て妙であり、自分もそういうところが増えてきている。承認欲求もしかり、「なんとなく美味しいものが食べたい」という気持ちがあっても「これが食べたい」がなかったり。

とにもかくにも不健康。

2013年末まで心身ともにやられるプロジェクトが終わって、それが癒えぬまま年明けに突入、1月からは消費税の増税に関するもろもろと並行して4月にリリースする比較的大きなプロジェクトに入って疲弊。同、7月にも似たような規模のプロジェクトに入った結果、10をmaxとしたら8からスタートしたのに4まで減って、で、6まで回復して3まで減って・・・みたいなことを繰り返した。

主なところでは年齢の影響もあると思われるが健康診断で今までひっかかっていない数値がひっかかった。というか再検査じゃなくて要治療の紹介状が来た。

また12月にはおよそ10年ぶりくらい(ちなみに当時新卒で入社した会社が(自身の環境も併せて)どうにも辛くて辞めようと思っていた時期ぶり)に喘息の発作も発生した。

その他

  • 腸閉塞の手前
  • 指への石灰沈着

など変な病気もかかった。

この年末で少しは心身ともに回復をしたいところではあるのだが、現時点ではその回復の良い方法も見つからず、ただ寝ては起きてと、むしろ自律神経をおかしな方向へと進行させている気がする。

もう、このへんに関しては美輪明宏さんのおっしゃる

「人生が上手く行かない時どうしたらいいですか?」という質問に対しての、美輪明宏さんの回答が素晴しいと話題に

品物を揃えなさい。美・知識・教養・技術、そういう自分の財産を増やしておきなさい、そういう時期

と捉えるしかないんじゃなかろうか。

あ、要するに不健康なのは忙しかったから体調を崩しましたとかそういう話じゃないってことです。ハイ。

仕事

楽しかった仕事の終わり

11月にローンチした新しいメディアが7月にクローズする。

エイプリルフール企画をはじめて会社でやったことや、ソーシャルアカウントの運用、メンバーとの関係性などが良好で、あまりここに力を入れられなかったことが残念だが楽しかったし、やってみたいと思っていたことを叶える機会があった仕事がなくなってしまった。

リーンUXはどこへ消えた?

年末くらいからリーンで開発をすることであったりとか、役割を超えた活動のやり方であったりというところをずっと考えてきて、部分的にはそれがうまくいっているところもある。しかしそうでない部分もあり、特に自分としても「もうあの人とは仕事をしたくないなあ」と思う人間を3人も作ってしまった。

また「個々の組織の総和が会社を良い方向に向けているとは思えない」印象をうける出来事があり、リアルにこの日吐き気がした。

データを解析するお仕事

データの指標を作っていこうとかそういうことは結構出来た気がするけど、1年を通してまともに解析してレポーティングして、というようなことは一回しかなかった気がする。年末から1つそのような仕事へのお誘いがあったので、2015年はまずこの仕事にどれだけ時間を割けるか、この仕事がちゃんとフィニッシュを迎えるのか、によっては会社とのつきあいかたを真剣に考えざるをえない。

解析とは直接の関係はないが、関連する知識が活かせる分野のお仕事をさせてもらえていることは、プラスに考えていきたいと思う。

エバンジェリスト

前から興味のあったこと。


エバンジェリスト養成講座(西脇資哲) | 翔泳社の本

今年はデータに関する勉強会や、リーンUXに関する勉強会、営業チームでの勉強会など、自分が良いと思ったことを他の人におすすめする、という機会が多かった。今後もこのような機会を作っていき、かつおすすめしていく中で相手の行動を変えていく方法、というのをもっと身につけていきたいと思っている。

来年ははじめのほうに、リアル脱出ゲームを活用してチームワークを高める方法、ということについて考えているので、お話をする予定でずっとどう伝えるか考えている。

プライベート

  • 妹が結婚した
  • 親戚のこどもたちとよく遊んだ
  • 6年半使ってたガラケーが死んだので本格的にスマートフォンへ変えた
    • HTML5ベースの俺得アプリをつくってみようとちょっとずつはじめた
  • 妻にとってははじめての海外旅行をした
  • 野球は監督業へのシフト。チームが初めてプレーオフに出場した

こんなかんじかな。

2015年をどういう年にするか

「やると決めてやる」、これ、割と自分の中の基本だったのだけど、ここ最近守れていない気がした。その結果外的な要因があるとはいえいろいろなことが継続できなかったので、周囲を巻き込んででも、そのことに集中してやり切る、ということで言い訳のできない状況というのを作っていかないといけないんだろうなと思う。

それとは別に趣味の話

ダンエボ DanceEvolution ARCADE
Ingress - Google Play の Android アプリ をはじめたよ。

両方共からだを動かす系に結果的になっているんだけど、これはそういう欲求なんだと思う。

はたまた別の話

四月は君の嘘


TVアニメ「四月は君の嘘」オフィシャルサイト

最近「あこがれ」が減ったんだなってことを思った。キャリアプラン的なこともそうだし、同世代の人だったり、場合によっては異性だったり、というのを、このアニメをみて感じた。
あこがれの対象に回れよ、ってハナシはもちろんそうなんだけど、そこらへん含めて「欲がなくなった」というところがあるのかもしれない。


同時に、こういう人たちのお陰でいろいろ助けられているな、というのを、直接的に助けられることとは違うやりかたで助けられているなあという意味で感じたというのもある。ひさびさに人間関係的な意味で良いアニメだった


というわけでバイオリズムの回復を待つか。

karma で テストしながらカバレッジを取る

karmaでカバレッジを取る

以前書いた記事からkarmaがバージョンアップしており、カバレッジを取得する方法が変わっていました。

カバレッジを取る方法は、preprocessorsとして定義して、その中でプラグインとしてcoverageを呼ぶ方法となっています。

このため、karmaのインストール時に、karma-coverage をインストールします。

karma-coverageのインストール

また、テストにはJasmine、ブラウザとして PhantomJSを使いたいので、以下のようにpackage.jsonを定義します。

{
  "devDependencies": {
    "karma": "~0.12.21",
    "karma-coverage": "~0.2.5",
    "karma-jasmine": "~0.1.5",
    "karma-phantomjs-launcher": "~0.1.4"
  }
}

$ npm install

いろいろなものがインストールされます。

とりあえず対象となるコードを準備

テキトウです。

src\math.js

// 絶対値取得。numが0以上ならそのまま、0以下ならマイナスをかけて返す
function abs(num) {
  if (num >= 0) {
    return num;
  } else {
    return -1 * num;
  }
}

spec\mathspec.js

describe("math suite", function() {
  it("math.abs spec when num is positive", function() {
    expect(abs(10)).toEqual(10);
  });
});

karmaを設定する

おなじみ初期化です。

$ karma init

Which testing framework do you want to use ?
Press tab to list possible options. Enter to move to the next question.
> jasmine

Do you want to use Require.js ?
This will add Require.js plugin.
Press tab to list possible options. Enter to move to the next question.
> no

Do you want to capture any browsers automatically ?
Press tab to list possible options. Enter empty string to move to the next quest
ion.
> PhantomJS
>

What is the location of your source and test files ?
You can use glob patterns, eg. "js/*.js" or "test/**/*Spec.js".
Enter empty string to move to the next question.
> src/*.js
> spec/*.js
>

Should any of the files included by the previous patterns be excluded ?
You can use glob patterns, eg. "**/*.swp".
Enter empty string to move to the next question.
>

Do you want Karma to watch all the files and run the tests on change ?
Press tab to list possible options.
> no

こんなかんじで設定。
PhantomJSの利用と、ソースファイル、テストファイルを読み込ませるだけです。



とりあえずテスト。

$ karma start

INFO [karma]: Karma v0.12.21 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Windows 7)]: Connected on socket neyN1RfF24QpB3M5OJL3 with id 7600682
PhantomJS 1.9.7 (Windows 7): Executed 1 of 1 SUCCESS (0.005 secs / 0.004 secs)

OKですね。

カバレッジを取得する設定を行う

karma.conf.js を修正していきます。

カバレッジを取得するように
    reporters: ['progress', 'coverage'],
カバレッジ対象のコードを指定
    preprocessors: {
      'src/*.js' : 'coverage'
    },

再度

$ karma start

すると、coverageフォルダができます。

こんなかんじ。

└─PhantomJS 1.9.7 (Windows 7)
    │  index.html
    │  prettify.css
    │  prettify.js
    │
    └─src
            index.html
            math.js.html


中身はこんなかんじです。

f:id:kidd-number5:20140808151748p:plain
f:id:kidd-number5:20140808151755p:plain

ばっちりですね。