プロクラシスト

今日の寄り道 明日の近道

「三体」の科学と人間に対する慧眼に感服しました。

こんにちは、ほけきよです。

最近小説を読んでいなかったのですが、何やら無性に読みたくなったので、巷で話題(少し遅い?)のこの本を読むことにしました。

三体

三体

上・下(Ⅰ, Ⅱ)と三冊あるのですが、控えめに言ってめちゃくちゃおもしろかったです。SF小説って読むの初めてだったんですが、すごく面白いですね。なにかおすすめある同士たち、教えて下さい!

  • よくありそうな異星人との戦争もの
  • なんだけど戦いの描写はあんまりない
  • むしろ極限下の心の機微がうまく描かれている

科学SFが好きな人はハマるんじゃないでしょうか。

※※以下ネタバレも含む感想※※

続きを読む

絶景の連続!パタゴニア旅に行ってきました

f:id:imslotter:20200318130056p:plain

こんにちは、ほけきよです。

2/29~3/15の二週間かけて、パタゴニアの旅行*1に行ってきました! 旅はいつでも最高なのですが、今回はいろいろなタイミングがぴったり重なった運の良い旅でした。思い出に浸りながらまとめたいと思います。

パタゴニアとは

  • 南米のチリ・アルゼンチンに広がる自然豊かな地域。
  • ベストシーズンは夏(1月~3月)。冬はとても寒い。
  • 物価は高め。フランスやイタリアと変わらない。
  • 日本から36-48時間程度かかる。しんどい。

手つかずの自然というよりかは、自然を保護していこうという動きを節々で感じました。きちんと自然と共生している感じ。 自然豊かな一方で、街はとても洗練されていておしゃれな雰囲気のところが多かったです。

南米というと治安が悪そう*2ですが、パタゴニアに関してはそんな雰囲気は全くなし。 ヨーロッパのほうがスリとか多いし、アジアのほうがボッタクリ多くて怖い。その点パタゴニアは良い。

今回のルートと、日程を組む際のtips

今回はこんなルートで行きました。パタゴニアだけだと、滞在日数10日くらいですかね。是非参考にしてみてください

f:id:imslotter:20200318123821j:plain

かかった費用は全体で40万~45万くらいです。*3

以下tips

  • プンタアレーナス(チリ) or エルカラファテ(アルゼンチン)には空港があるので、旅の起点になることが多い。
  • パタゴニアは結構天気が変わりやすいのと、移動に時間がかかるので、割と日程にバッファをもたせたほうが良い
  • ツアーはだいたい前日か当日で予約できる。ホテルやゲストハウスのデスクや街にある旅行代理店(だいたいある、こっちのが英語通じる)に行けばなんとかなる*4
  • 街の天気は 10 Day Weather Forecast Worldwide、山の天気は Mountain Weather Forecasts が信頼できた。大体合ってたし最高!ありがとう、一番好きな天気予報です!!
  • 基本的な移動は陸路(バス)。バスのルートは Rome2rio: discover how to get anywhere を見ながら。パタゴニア地方のルートは大体抑えられてる。大抵前日予約でOK

訪れた街の紹介

訪れた街の紹介を軽くしていきます。

プンタアレーナス

  • チリ側のパタゴニア周遊の起点。世界最南端都市*5
  • ペンギンツアーがある。キングペンギンやマゼランペンギン。ペンギンかわいい。
  • ごはん美味しい。海鮮系。パイラマリーナとセントージャは食べなきゃダメ
f:id:imslotter:20200318123839j:plain

エルトナタレス

  • 港町。歩いてすぐの海が絶景なのでずっと眺めていられる
  • パタゴニアのハイライトの一つトーレス・デル・パイネがある。トレッキングしんどいけど景色は半端ない。バスツアーもある
  • 料理も充実。ラム肉美味しい。
f:id:imslotter:20200318123908j:plain

エルカラファテ

  • アルゼンチン側のパタゴニア周遊の起点。
  • 日本人めっちゃ多かった。チリでは会わなかったのにな。
  • グラシアレス国立公園のペリトモレノ氷河がやばい。とにかくスケールに圧倒される。
f:id:imslotter:20200318123916j:plain

エル・チャルテン

  • Patagoniaのロゴモチーフになった名峰フィッツロイがある。
  • 朝の燃えるフィッツロイは最高
  • 見回せば絶景に囲まれ、店はひとつひとつがおしゃれ。パタゴニアで一番好きな町。
f:id:imslotter:20200318124001j:plain

(おまけ)イグアス

  • イグアスの滝がある。水量が半端ない。
  • 満月前後数日の夜はナイトツアーがある。美しい夜の滝を堪能するチャンス。
f:id:imslotter:20200318124308j:plain

おすすめまとめ

※別記事でまとめていきます。リンクはここに貼っていく予定

  • おすすめツール(webサイト/アプリ/装備)
  • おすすめツアー
  • おすすめグルメ

まとめ

パタゴニアは、ずっと憧れていて、いつか行きたいなと思っている場所でした。 圧倒的な大自然のなかでいろいろな体験をし、感動し、またリフレッシュすることができました。

日本から遠すぎるのと、物価が高いのがネックですが、それでも行く価値は充分にあります。 治安もいいので、ちょっと遠出して冒険してみたい!という方、是非候補の一つに入れてほしいです!

思い立って気軽に行ける場所でもないですが、またいつか、節目を迎えたときに行きたいなと思ってます。ではではっ

*1:+ちょっとしたおまけ

*2:実際アルゼンチンの首都ブエノスアイレスは物騒な雰囲気ありました。

*3:航空券及びバス代 35万、ホテル5万、ツアー5万程度

*4:ただし日曜日は完全休業のところが多い

*5:人口が10万人以上いると都市らしい?世界最南端の町はウシュアイアらしい。

今年読んで良かったおすすめ本 in 2019

f:id:imslotter:20191208165549p:plain

こんにちは、ほけきよです。 2019年も年の瀬ですね。

私は本はあまり読まないほうだとは思うのですが、友人から勧められたり、信頼できる情報筋(?)から流れてきた本は積極的に積ん読しています。 今年は積ん読が消化しきれたか微妙なところもあり、平衡状態はすでにINの多さで破綻していますが、そのなかでも心に響いた本を書き留めておきます。

今年は特にマーケティングだとか、物事の見方についての認識を新たにしてくれるような本を中心に読んだ気がします。

技術本もいくらか読んでいるのですが、本記事ではいろいろな人が読んで楽しめるものを並べておきました。それではどうぞ

※ 2018年verはこちら

www.procrasist.com

「つい」やってしまう体験の作り方

今年一番腑に落ちた本かもしれない。ゲームデザインには、プレイヤーがのめり込む体験が詰まっている。マリオやドラクエなどのゲームの実例と、アフォーダンスなど心理学的見地から、のめりこむ体験を生み出すデザインの方法を教えてくれる。本のタイトルに恥じず、書き方にも「つい」読んでしまうテクが散りばめられていて、内容にのめりこみ一気に読み終えてしまった。

史上最強の哲学入門

史上最強の哲学入門

史上最強の哲学入門

今まで、思想や哲学と言うものを軽んじていたけど、最近は大きな物事を決定したり動かそうとすればするほど、根本にあるそれらが重要になってくるように思える。「史上最強」と銘打っているの、大げさかなと思っていたけど、刃牙のオマージュなのね。

「哲学の入門書が退屈なのは、"刃牙感がたりないからだ"」

知の総合格闘技として、哲学をわかりやすく入門させてくれた。

FACTFULLNESS

世界についてどれくらい知っているか。

メディアやSNSの偏った情報を浴びている私は、本冒頭の10個の質問(3択問題)に、その認識をボコボコにされた。猿でも33%は当たる問題を2問しか答えられなかった。

どうしてそんな認識齟齬が生まれているか、どこを意識すれば正しいものの見方(Factfullness)を得られるのか。とても勉強になる一冊。 興味のある方は、本屋に行ってまずぱらぱらと冒頭の10問を解いて答え合わせをしてほしい。

THE MODEL

新規顧客・リテンションに困っている時に友人が紹介してくれたマーケティングオートメーションの入門の一冊。筆者はSalesforce、マルケトと、営業向けSaaSを展開した人。

「なぜ、日本人はあれほど細かく生産管理をやるのに、営業については何もしないんだ?」

顧客管理の仕方、KPIの設定の仕方等、システマティックな営業の方法論は、B2B向けにSaaSを提供するようなビジネスモデルを考えている人には刺さる内容だと思う。

なるほどデザイン

訴求できるデザインとはなにかを勉強したいときに知人におすすめされた一冊。 目的をベースに考え、「じゃあこんなデザインがいいよ」と、洗練された例を出してくれるので、なるほどなぁと納得する。 単におしゃれだからではない。人の感情を呼び起こしたり、人を動かしするためにデザインがあるのだなと再認識できる。

イカーとスタートアップのための量産入門

筆者は学研などの付録を企画・設計・販売している人。自分たちでアイディアを出し、設計、試作、量産化というフローを何度も踏んできた人である。 その人が長年のノウハウをこのような一冊の本にしてくれている事自体が、めちゃくちゃ奇跡的なことである。

この本の良いところは、非常に"泥臭い"ところ。 量産化のときにどうすれば壊れないような設計ができるか。とか、中国人とうまく話をすすめるときは夜の会食は参加したほうがいい。とか。 そういった細部のノウハウが詰まっているので、読んでいてとても面白い。「神は細部に宿る」と感じられる一冊

身近な数学

身近な数学―数学で世界への見方が変わる! (I・O BOOKS)

身近な数学―数学で世界への見方が変わる! (I・O BOOKS)

最後に、超スーパーウルトラ手前味噌ですが、今年本を書きました。読者によると、「この内容のなかの話題が東京大学大学院の入試問題にも出ました!」とのことなので、受験参考書です。笑

高校の範囲+αの数学で身近でいろいろな現象を書いているので、他にはあんまりないニッチな本になっていると思います。数学が好きな方は是非読んでみてください。

www.procrasist.com

まとめ

一年間で読んだ本を振り返ると、自分がどんなことに悩んで、どういうことに興味を持ったかが振り返られるような気がします。 今回紹介した本はどれも良書なので、ぜひぜひ手にとって見てください。ではではっ

【ラグビー】日本と世界は実際どのくらいの実力差なの?レーティングから逆算してみた

f:id:imslotter:20191203220342p:plain

こんにちは、ほけきよです。

スポーツアナリティクスAdventCalendar 5日目の記事になります。

「今年熱狂したスポーツを挙げてください。」

と言われると、まず間違いなく「ラグビー」が入ってくるのではないでしょうか。ONE TEAM!!!

日本開催のラグビーワールドカップ、大強豪アイルランド撃破、そして決勝トーナメント進出と、歴史的快挙に多くのファンが夢と感動をもらったことでしょう。

ワールドカップを終え、日本はなんと世界ランキング8位*1だそうです。ますます強くなる日本に、これからも期待ですね!

f:id:imslotter:20191203233147p:plain
参考 WORLD RUGBY

世界ランキングはどうやって算出されているの??

ところで、このよく見かける「世界ランキング」、どのように付けられているのかご存知でしょうか?

ラグビーのランキングはポイントによる順序制で、簡単に言えば勝った人はポイントをGETし、負けた人はポイントを失う。そこに実力差の傾斜(弱いチームが強いチームに勝つとポイントが多くもらえる、等)がかかるというものです*2。この、実力差の傾斜をいい感じにポイント換算するというのがミソです。ラグビーでは、次のようなポイント配分になっています。

f:id:imslotter:20191204174449p:plain

例えば、日本(80pt) VS 南アフリカ(95pt)で、日本が勝った場合、

1+(95-80)\times0.1 = 2.5\mathrm{pt}

が加算されます。 逆に日本が負けた場合、

1-(95-80)\times0.1 = -0.5\mathrm{pt}

ですが、\max(-0.5,0) = 0 なので、ポイントの変更はありません。

イロレーティングとは?

さて、対戦相手との実力の違いをうまくレーティングに反映する手法として、「イロレーティング」という手法が知られています。(ここでは大事なところだけ抜粋するので、実際の計算はWikipediaなどを参考にしてください。) *3

相対的な実力差を数値で表すときのスタンダードとなっていて、強さの違いがわかる**というのところがとても良い点です。ここでの強さの違いは、勝率の比です。例えばAがBの2倍強いというのは、Aの勝率67%、Bの勝率33%になる。ということです。

このレーティングは、2点の仮説の元成立しています。

イロレーティングの仮説
  • 勝敗比は積で推移
  • 勝ちか負けかの結果になる(基本的に引き分けはなし)
  • この2つ目は良いとして、1つ目がよくわからないですよね。簡単に言うと、「AがBの3倍つよくて、BがCの2倍つよかったら、AはCの6倍つよいよね」が成り立つということです。

    f:id:imslotter:20191203231204p:plain

    現実は相性などもあって上記の仮説の限りではないと思いますが、それでもある程度実力の反映されたレートになるので、多くのスポーツや対戦型ゲームなどで採用されています。 事実、FIFAランキングはかなり純粋なイロレーティングを採用していて、*4例えば、レートが100高いと違うとおおよそ1.5倍強い。となるようにレートが設計されています。

    レートと実力の関係は?

    さて、何気なく言った、この「レートが100高いと違うと1.5倍強い」がイロレーティングの最も本質的な点です。「実力差の比率を点の差分で表現」している*5ことこそが、レートを見る上で大切な点なのです。つまり

    • × 100高いと1.5倍強い⇨200高いと1.5\times2 = 3倍強い ではなく
    • 〇 100高いと1.5倍強い⇨200高いと1.5^{2} = 2.25倍強い

    となるわけです。レートの差は開くほど、その実力差は歴然としたものになります。

    イロレーティングとラグビーのレーティングの関係は?

    「ポイント差で実力の違いがわかる」イロレーティングが良いのはわかった。しかし、ラグビーのレーティングはイロレーティングにのっとってはいないので、そのままだと使えません。

    「なんとかイロレーティングに換算できれば、実力差の近似値が出せるなぁ...」とぼんやり考えていました。

    そう思いながら、両者「実力(レート)差と、配分されるポイント」のグラフを見比べてみたのです。その2つがこちら

    f:id:imslotter:20191203232119p:plain

    ふむ...なんだかとても似ていませんか?

    「あれ?これイロレーティングの関数のパラメータを近似すれば、ラグビーのレーティングになるのでは??」

    と思ったので、関数を適当にフィッティングし、イロレーティングに使うパラメータを合わせてみることにしました*6。フィッティングしたグラフがこちら

    f:id:imslotter:20191203232631p:plain

    やはりカクついたところは表現しきれてはいませんが、ある程度うまく表せせている気がします。あとは、この近似式を用いて、レートから実力差への換算を行うだけです。 これによって、レート差と実力差の変換近似式を手に入れることができました。それがこちら!

     W_{AB} = \frac{1}{10^{ (R_B-R_A)/9.05 }+1}
    • W_{AB} : AがBに勝つ確率
    • R_{A} : Aのレート
    • R_{B} : Bのレート

    実際の実力差はどのくらいなのか?

    さて、ここまで準備ができたら、あとは現行レートを代入するだけです。

    f:id:imslotter:20191203233147p:plain
    参考 WORLD RUGBY

    日本と南アフリカアイルランドのレートを代入してみましょう。*7

    •  W_\mathrm{Japan wins SouthAfrica} = \frac{1}{10^{ (79.28-94.19)/9.05 }+1} = 0.0220
    •  W_\mathrm{Japan wins Ireland} = \frac{1}{10^{ (79.28-84.45)/9.05 }+1} = 0.217

    日本が歴代最高順位の現レートで換算しても、勝率は2%なわけです。南アフリカに勝ったことが、 アイルランドに勝ったことがどのくらい素晴らしい快挙かがわかると思います!さすが日本、ONE TEAM !!

    まとめ

    今回やったことを簡単にまとめておきます

    今回やったこと
  • ラグビーのレートと実際の実力の関係を知りたいなぁ
  • イロレーティングというのは、レート差から実力差がわかる
  • ラグビーのレートをイロレーティングの式で近似する
  • 近似した式にラグビーの実際のレートを代入する
  • 日本と各国の実力差が知れた!うれしい!!ONETEAM!!!
  • という具合です。下式を使えば、実力値に換算できるので、皆さん積極的に使ってください!

     W_{AB} = \frac{1}{10^{ (R_B-R_A)/9.05 }+1}

    身近に使われている「FIFAランキング」や「ワールドランキング」などですが、こういう計算のもと行われているということ、知らない方も多かったのではないでしょうか。すこしでも頭の片隅にいれておくと、「このレート差の相手に勝つことはこんなにもすごいことなんだ!!」が数値を持って実感できるのではないでしょうか。ではではっ

    今回の実装と計算結果はgithubにあげています。レーティングシミュレーターも作ってみました。なお、今回の計算は細かな部分(大会による点数配分の違い等)は省いています。計算や実装、論理のミスはあるかもしれませんので、こっそり優しく教えて下さい。

    github.com

    *1:2019/12/01現在

    *2:実際には試合の重要度やホームでの試合か、などで傾斜の付き具合は違います。そのあたりはこちらが詳しいです

    *3:参考 イロレーティング(Wikipedia)

    *4:2018年からレーティング方式が変わり採用されたようです

    *5:つまり実力差の対数表示である

    *6:あとから調べてみると、ラグビーのレーティングもイロレーティングをもとに作られているらしく、それはそうか。という感じでした。

    *7:実際は、試合前のレートで語りたいのですが、試合前のレートを見つけることができなかったので、今のレートにしています。

    AIchi勉強会を開催&発表してきました!

    こんにちは、ほけきよです。 本日、愛知にて、AIの勉強会を開催&発表してきました。 connpass.com

    事の発端は、からあげさんの記事に書かれています *1

    karaage.hatenadiary.jp

    募集依頼、ものすごい勢いで参加者が増えていって、すぐに定員に達しました。スピーカー陣の集客力にただただ驚くばかりです。

    ハッシュタグ #StudyAIchiも積極的かつ穏やかに投稿されていて、 そして、100人規模にも関わらず、キャンセル率5%という、通常じゃ考えられないほどのマナーのいい会になったこと、とてもうれしく思います。ご来場頂いた方、ありがとうございました!

    発表内容

    今回は自分の勉強も兼ねて、エッジコンピューティングについて話しました。 今回作ったものをブラッシュアップして実際に現場で運用できるところまで行けば、とても面白いなと妄想しています。

    資料は↓にアップロードしています。ちょっと20分に詰め込みすぎたかな。。。とも思うので、スライドを読み返すくらいで丁度いい情報量かもしれませんwまた、今回作ったもののレシピ的なものは、noteに上げるとおもうので、そちらもチェックしていただければと思います*2

    www.slideshare.net

    他の方々の発表もとても刺激になりました。「とにかく手を動かす。」アウトプットをしていく大事さを再認識したので、どんどんチャレンジしてどんどん手を動かしていければなと思います。

    最後に

    ご来場の皆さん、発表者の皆様、会場を提供いただいたヤフー名古屋の皆様、本当にありがとうございました。 熱量が高い良い会になりました!

    今後もAIchi勉強会は不定期に続けていければなぁと思っていますので、今回参加できなかった方々も、ぜひ次はお越しください!今後はもうちょっと範囲を絞って深堀りした会を開いてみたいなと思ったりしています。

    ではではっ!

    f:id:imslotter:20190908130614p:plain
    会場から見えた絶景

    *1:実は"AIchi勉強会"は私が勢いで名付けましたw

    *2:IoT関連の話はnoteのマガジンに書くというゆるい切り分けをしてます https://note.mu/imaimai/m/m49c9ee32c9e7

    【IoTの祭典】SORACOM年次イベント"Discovery"でグッと来たポイントをまとめてみた

    f:id:imslotter:20190703185112p:plain

    こんにちは、ほけきよです。

    IoTって知っていますか?最近幅広く認知されてきている言葉のように思います。 ざっくり言えば、"いろんなモノをインターネットにつなげて、いろんなことやろうぜ!"って話です。

    日常用途でも、ビジネスでも流行っていますね。 そんなIoTで最近メキメキと知名度を上げているのがSORACOM。 SORACOM何?って人は以前記事に書いているので読んでもらえると嬉しいです。

    最近では契約数が100万回線を超えたらしく、まさに絶好調の企業です!

    さて、そんなSORACOMが年次で開いている大規模イベント、Discoveryが今年も開かれました。 新サービス発表から実際のビジネス活用まで、驚きと感動がたくさんあってお腹いっぱいです。 Twitterである程度実況していたので、それをまとめていきます。

    グッときた新サービス発表

    SORACOM "M"osaic + S+ Camera

    soracom.jp

    アルファベットが進みました。"M"osaicです。 カメラとの合わせ技の発表でしたが、個人的にはカメラと言うよりかは、クラウド上で学習、遠隔デプロイ行い、エッジで推論という流れを簡単に実現できるプラットフォームという点で期待してます。画像処理を皮切りに、様々な展開が楽しみです。

    SORACOM "N"apter

    soracom.jp

    またまたアルファベットが進んで"N"です。 SORACOM SIMが刺さっているだけで、リモートアクセスを簡単に・必要なときにだけ行えます。遠隔でちょこっと設定確認・変更をしたいときなど、実務上超便利な機能!用途は多そうです

    M5Stackの3G拡張ボード

    soracom.jp

    これは個人的にはグッとくる発表。M5Stackって、最近流行りのデバイスなのですが、SIMをさせるコンポーネントがなかったんですよね。

    電力的にはネットワーク接続でかなり食うと思うので、電源が必要かもしれませんが、コンパクトにネットワークにつながるデバイスとしてはめちゃめちゃ可能性がありそう。

    普通に衝動買したので、おもちゃとして使ってみます!

    ちなみに、SORACOMさんはSIMが使えるリファレンスデバイスを多数用意*1していて、その使い分けでは↓のグラフがかなりわかりやすかったです。

    グッときたIoT活用

    ダイハツ : 営業と顧客のギャップを埋めるエンターテイメント

    ダイハツの取り組み。IoTというのは、こういう時間的制約や距離的制約を解決する切り札的なところがあると思っていて、そういう意味では課題の目の付け所と、エンターテイメント性をIoTで解決したという取り組みは面白かった。観点大事。

    ACSL : ドローンのIoT化

    国産ドローンのスタートアップ、ACSL。大学発の技術ベンチャーで、めちゃめちゃ高度な飛行制御技術を持っていて、そのすべてが内製!

    飛行制御技術を使ったソリューション展開を見据えていて、ドローンをIoT化している。画像を集めて一枚のマップにしたりだとか、橋の監視に使ったりだとか。 "高い飛行制御技術"を礎にしているからこそできるソリューションだなと感じた。礎がなきゃできない。順番大事。

    田中衡機工業所 : 秤のIoT化

    新潟県燕三条にある「はかり」一筋の企業。産業用や工業用のはかりを製作している。トラック1台まるごと量れるはかりを作ったりしているらしい! そんな職人芸を持つ企業が、一斉に自社製品をIoT化し始めたらどんな未来が待っているだろう。一瞬でプラットフォーム化するのではないか。だって技術的に真似できないんだもの。 そこから広がる未来を妄想しながらワクワクしてた。Hakari as a Service、エッジが効いてていいじゃないの。

    所感

    とにかく面白かったし、ビジネス展開が進み始めたなという印象を受けた。 一方で、どんどんIoTを試すハードルが下がっているので、個人でもアイディア次第で十分面白いものが作れそうだなと思った。 実際にサービス展開となると泥臭いところもあるが、試す分にはめちゃめちゃ簡単になってきてる。

    ビジネスの例では、無二の技術を持っているところとIoTっていうのはめちゃめちゃ相性がいいのだなと感じた。 この辺はtwitterにも書いたけど、真似できないデータを生成できるかどうかが鍵になるなという感じ。そもそもデータソースがそこにしかなかったら、そのデータに関しては一瞬でプラットフォームになりそう。

    そんな感じで、ますますこの分野は盛り上がりそうだなと感じた一日でした!ではではっ

    9/7(土) 愛知でAI勉強会"AIchi勉強会"を開催します!

    f:id:imslotter:20190701195739p:plain

    こんにちは、ほけきよです。

    2019年も今日で半後半らしいですよ。何かのドッキリですかね?

    さて、今日は告知です!

    9月に、愛知県で機械学習・データ分析に関する勉強会"AIchi勉強会"を開催します!!

    connpass.com

    すでに70名近くの応募が...!ありがとうございます。まだまだ参加ください。

    発端

    すでに発起人であるからあげ(id:karaage)さんが記事にあげてある通りです

    karaage.hatenadiary.jp

    愛知でAIの勉強会を実施することにしました。きっかけは、ネット繋がりの食事会でした。  奇しくも、全員愛知の製造業で働いていて、機械学習の分野に強い関心があるメンバーだったので「愛知県で会社を越えてAIに興味ある人、AIを使っている人と繋がれるイベントを開催してみたい!」という思いと、勢いでイベントを開催してみることにしました。

    私も前職は東京なのでわかるのですが、東京では毎日勉強会にあふれています。イケベンチャーやイケ大企業が自社スペースを使って、毎日イケてる人たちが情報共有するのです。

    実際そんな中からオフラインで得られる情報って、結構おもしろいんですよね。ネット上にたくさんの情報が転がっているといえど、勉強した生の体験を聞いたり、その後いろんな質問をできたり、そういう機会が愛知にもあれば良いなと思ったわけです。

    内容

    場所はヤフー名古屋さんに提供頂いております。ありがとうございます!

    すでにからあげさんが記事に上げてある通りですが、かなり豪華な内容となっております。

    皆さん積極的に情報発信をしていて、その記事の質の高さはすごいです。本当にいつも勉強になっています。

    LTの申込みもすでに数名に頂いており、かなり楽しみです!!

    こんな中で私も発表するのか...と思うと、今から緊張してしまいそう...! でも私はどうであれ、上記の方々の声を一同に聞ける機会となると、なかなか貴重なことなのではないでしょうか?

    一番最初にしゃべる予定なので、喋ったあとは皆さんの発表を緊張なしに聞けると思って、かなりワクワクしています。

    何を喋ろう

    何を喋ろうかなーと考えています。 あくまで勉強会という位置づけなので、最近勉強していること/したいことをもうちょっと深掘りして喋れたらなと思っています。

    なんかが候補。自分の学習進捗具合と相談しながら内容作っていきます!

    みんな来てください!

    昨日の公開以来、 嬉しいことにかなり多くの方に参加頂いております。

    f:id:imslotter:20190701195553p:plain

    増枠するかもなので、80超えても諦めずに参加ポチってください!!

    というわけで、はじめは勢いでやりましょうと言ったものの、なかなか大規模になる予感...!緊張する...!

    愛知県や東海近辺でAIに関する勉強がしたい、AIに関して技術的に話せる人たちがほしいという方、ぜひぜひよろしくおねがいします!!

    connpass.com

    「働く言葉たち」をいつでも味わえるbotを社内slackに導入しました。

    こんにちは、ほけきよです。

    皆さん、「働く言葉たち」を知っていますか?最近流行っていますよね。

    www.hatakoto.jp

    その意図するところはいまいちわかりませんが、これだけ広く認知されているということで、マーケティング的には成功なのでしょうか。正直よくわかりません。

    いつでも味わいたい!

    しかし、このページを見ていると

    ほぉん、なるほど!

    と思ったり

    ほぉん、なるほど...

    と思ったり、一文一文が味わい深いわけです。

    こんな言葉を、働いているときにいつでも味わいたい! そう思い、働く言葉たちを返してくれるbotを作って、社内のslackにぶち込んでおきました。 Good bye 令和、Come back昭和。

    会社のdevチームのスラックでは、helloと挨拶をすると挨拶代わりに働く言葉を返してくれます。

    社員のみんながおもちゃに使ってくれて、マインドも醸成されています。とてもwin-winですね^^

    f:id:imslotter:20190614163407p:plain
    働き方改革

    つくりかた

    基本的なslack botの作り方に沿っただけなのですが、導入したい!という方もいらっしゃると思うので、ちょっとだけ技術的な説明を。 今回は、pythonslackbotというライブラリを使っています。

    用意するもの

    • サーバー(slackbotを動かすコンピュータ。つねにbotを動かしておくなら24h稼働が望ましいが、python使えれば何でも良い、)
    • Python環境 : 用意してください。今回は3.7で作っています。下記ライブラリを使えるようにしておきましょう
      • bs4 (スクレイピング用のライブラリ)
      • slackbot (slackbotを動かすときのライブラリ)
    • git: あれば便利、私のコードそのまま使えます。

    slack bot

    まずは、既存slackにbotを追加していきます。下記ページから追加ができるようになっています。作りたいワークスペースにアクセスし、↓に飛びましょう。

    https://my.slack.com/services/new/bot

    f:id:imslotter:20190614174119p:plain

    botの名前を決めたら、TOKENというのが出てきます。これをコピーするなりして保存しておいてください。

    f:id:imslotter:20190614174225p:plain

    slackbotの設定

    コードはgithubリポジトリに上げています

    github.com

    なお、作り方はこちらの記事を参考にしました

    qiita.com

    フォルダごとcloneして使ってください。変えるのは、slackbot_settingsAPI_TOKENのところです。 ここに、先程保管しておいたAPIを書き込みます。

    # coding: utf-8
    
    # botアカウントのトークンを指定。ここを変える!
    API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    
    # bot宛メッセージの例外対応
    DEFAULT_REPLY = "HELLO, SOMETHING WRONG"
    
    # プラグイン。この中に呼びかけた後の反応などを書く
    PLUGINS = ['plugins']
    

    python run.py を、ライブラリを用意した環境下で動かすとOKです。

    呼びかけた後の反応を書く

    どうやって取ってきているのかは非常に簡単で、当該ページからスクレイピングをして、テキストを返しているだけです。

    my_mentionsの中身に書かれています。

    # coding: utf-8
    from slackbot.bot import respond_to     # @botname: で反応するデコーダ
    from slackbot.bot import listen_to      # チャネル内発言で反応するデコーダ
    from slackbot.bot import default_reply  # 該当する応答がない場合に反応するデコーダ
    
    from bs4 import BeautifulSoup
    try:
        from urllib2 import urlopen
    except:
        from  urllib.request import urlopen
    
    def FetchWorkingWord():
        #url
        url = "https://www.hatakoto.jp/"
        #get html
        html = urlopen(url)
        soup = BeautifulSoup(html, "html.parser")
        text = "\n"
        text += soup.find(attrs=["class_","chinContent vertical"]).text
        text += "\n\n"+soup.find(attrs=["class_","chinMsg vertical"]).text
        return text
    
    @respond_to('hello')
    def reply_hello(message):
        text = FetchWorkingWord()
        message.reply(text) 
    

    これで、話しかけるたびに「働く言葉たち」をピックアップして、返してくれます。

    まとめ

    みなさんも、適当なサーバーを立てて社内slackにぶちこんでみてはいかがでしょう? なかなか味わい深い文章を出力してくれますよ。ある意味元気が出ます

    定期的に垂れ流して、「働く言葉たち」についたリアクション数をカウントして、その会社の"""社風"""を分析する。なんてやってくれる人いないですか?我が社はまだ社員が多くないのでサンプルが集まらなさそうです。

    今回は出来心で作りましたが、slackbotはとても自由度が高く強力なツールです。使い方で社内コミュニケーションの活発化にも繋がります。みなさんも是非使ってみてください。ではではっ

    改札にチケットを何枚入れれば良いのかを、いもす法で解いてみた

    こんにちは、ほけきよです。

    最近、競技プログラミングをはじめました。

    atcoder.jp

    結構ハマってて、とりあえず年内水色目指しています。 水色になったらドヤ顔でイキリブログ更新します😏

    アルゴリズム系のお勉強を全くやったことなかったので、 今まで知らなかった or 意識しなかったアルゴリズムが使えるようになっていくのが、とても楽しいのです。 無料で道具を貰うことができるなんて、ほんと最高ですよね。

    道具を持っていると使いたくなるのが性です。先日、そんな場面に遭遇して嬉しかったので書いておきます。

    改札きっぷ問題

    出張で改札を通る直前、ふと思いました。

    新幹線とか使うときに、大量のきっぷが払い出されますよね?その時の改札ごとに何枚のきっぷを入れれば良いんだ!?という問題です。

    ちなみに、東京の改札は賢くて適当に全部入れたらよしなにしてくれるんですが、安城はそうはいきません。区間外のきっぷを入れると改札を通してくれません。ハードモードです。

    いもす法

    このような始点と端点が決まっていて、数を数える問題は、いもす法というのが効率がよく、常套手段となっています。

    いもす法の解説

    出入り口だけカウントすれば、中身は後処理でいけるという発想です。 図にするとこんな感じ。

    f:id:imslotter:20190529113148p:plain
    いもす法とは

    そのまんまこの改札きっぷ問題に使えそうです!各区間

    としておいて、累積和(はじめから足し上げていく)を取るとそのときに必要なチケット数が出ます

    解いた

    実装はとても簡単です。pythonで実装してみました。

    累積和の計算にはitertoolsに入っているaccumlateが便利です。一瞬で終わります。

    from itertools import accumulate
    As = ["安城","名古屋","米原","金沢"]
    tickets = [(0,3),(1,2),(2,3)]
    imos = [0]*5
    for s,g in tickets:
        imos[s] += 1
        imos[g+1] -= 1
    cum = list(accumulate(imos))
    for num, A in zip(cum,As):
        print("{}\t{}".format(A,num))
    

    これを出力すると...

    安城    1
    名古屋  2
    米原    3
    金沢    2

    きちんとその場所場所で必要なきっぷ枚数が出ています!いもす法バンザイ!

    まとめ

    今回のは結構簡単な問題でしたが、こうやって、学んだことを普段の生活に活かせられると、勉強が楽しくなってきますね!

    ちなみに、考えすぎると↓の人みたいに日常生活に支障をきたすこともあるので注意が必要ですね。

    今後もほどほどに精進していきます!ではではっ

    サッカーチームの名前がなんでカッコよく感じるのか、分析してみた。

    こんにちは、ほけきよです。

    最近ネーミングをしなければならない事態に直面し、いろいろと調べたり考えたりしていたわけです*1 それで、いろいろと調べていたのですが(調べて面白かったものは補足で共有します)。私、気づいちゃったんです。天才です。

    「サッカーチームの名前って、かっこよくね?」と。

    アントラーズ, グランパス, ヴァンフォーレ...

    なんだこのかっこよさは。。。かっこいい。ちなみにプロ野球だと

    タイガース, スワローズ, カープ

    うーん、、、動物園。。。となります。

    Jリーグチームは歴史的にも新しいため、凝った名前をつけているんでしょうか。非常に興味深いです。

    そこで私は思ったわけです。

    「サッカーチームのネーミングから知恵を拝借すればよくね?」と。 というわけで、なんでかっこよく感じるのか、分析してみることにしました。

    ※ 分析と言っても結構主観が入っています。

    分析にあたり

    条件

    下記条件で進めていきます。

    • 対象をJ1, J2, J3の全59チームとする
    • 今回は地名, FC,SC等略語は省く
    • カタカナ部分だけ調べていく
    • "ディ"等、2語で1音節であっても1文字ずつ("デ"と"ィ"として)調べる

    なお、サッカーチーム一覧はこちらを参考にしました。

    www.soccer-king.jp

    日本語、子音と母音がうまく分かれていないこともあるので、なかなか厄介ですね。 実際アルファベットにしてから分析したほうが良いかも知れませんが、とりあえず今回は日本語で。

    分析方法

    • , , , 濁音は何%のチームに含まれているか
    • どの語が多く含まれているか(全体, 子音別, 母音別)
    • 多く含まれている単語は、どこにでてくることが多いか などを調べていきます。

    {"ア":1} など、語の辞書をPythonで作って分析しました。 詳しくは、githubリポジトリにアップロードしています。(読み込むcsvを変えても、ちょっといじれば他のモノにも使えると思います。)

    github.com

    分析してみた

    分析と言っても、音の持つイメージはある程度

    1. , , ー" 濁音 は何%のチームに含まれているか

    まず、このあたりを調べてみました、キャッチーなネーミングというのは、, , などの発音の緩急になるような言葉をよく使っているのではないのかと。 グーグルとか、アップルとか...一筋縄では読ませないぞ!的な

    調べてみたところ、こんな感じ。

    J1 J2 J3
    37% 23% 17%
    21% 18% 22%
    26% 27% 28%
    どれかを含む 63% 50% 61%

    半数以上のチームが、これらの音を含んでいることがわかりました。印象に残るネーミングの要素の一つを抑えているという感じでしょうか。

    また、 濁音/半濁音の法則 というのが、マーケティング業界ではよく知られています。ネーミングに濁音や半濁音を含むと、いい感じに覚えてくれるとか。グーグルとか、アップルとか...

    こちらも調べてみました。

    J1 J2 J3
    濁音 63% 59% 50%
    濁音 or "ン" or "ッ" or "ー" 84% 68% 72%

    濁音は半数以上のチームに取り込まれています。さらに、上記のどれかを抑えているものとなると、J1のチームだと80%を超えてきます。

    この、「頭に残る音」を効果的に使っているからこそ、かっこよく印象に残る名前になっているような気がします。

    2. どういった語が好んで使われているのか

    さて、効果的に頭に残っている音を取り込んでいることがわかってきました。 それでは、サッカーチームはどういった音を多く使っているかを調べてみましょう

    人気語ベスト20

    f:id:imslotter:20190522110929p:plain

    さっきの単語類が並んでいるのと、ラ行が多いのが目立ちますね。調べてみると、ラ行は外来語のかっこいいイメージを想起させるらしく、かっこよいわけです。

    全然関係ない(関係なくもない)ですが、このトップ10くらいだけ眺めていると、アルビレックス という単語が思い浮かびました。

    よく使われている母音は?

    次、母音です。

    f:id:imslotter:20190522111647p:plain

    大きな違いはありませんが、特にがよく使われているのがわかります。外来語で後に母音が続かないときはウになるからというのもあるのかなと。

    よく使われている子音は?

    母音とくれば、子音です。子音は、割と語としてのイメージを作ると言われているので、母音以上に影響を及ぼすのかも知れません。(ちなみにヴはバ行にまとめちゃっています。)

    f:id:imslotter:20190522111710p:plain

    なかなかおもしろい結果じゃないですか?やっぱりラ行が多いのですね。 カ行やサ行が多いところも気になります。これら2つは、スピード感や、爽やかさを想起させる子音だそうです。サッカー部、大体足早くて爽やかですからね。というかサッカー自体もですね。

    2音の組み合わせ

    このラ行の多さが少し気になったので、なにかくっついた表現があるのでは?と思い、2音の組み合わせを調べてみました。

    f:id:imslotter:20190522113352p:plain

    ふむふむ。。。ここでも が人気ですね。逆に言えば、他音とのセットで使われることが多いということになります。

    1位、2位を見るとわかるように、後に付くならーレ。前に付くならレッという表現が多いのがわかります。

    この ーレ、語尾に付くことが多いのです。フロンターレベルマーレ...おしゃれですね。*2

    語尾のーレといって思いつくのが、イタリア語の接尾語aleですね。おそらくは取っているのでしょう。 どういう意味を表すかと言うと...ただ名詞を形容詞化するだけです。 形容詞にするだけでオシャレになるイタリア。そりゃモテる。憎い、憎すぎる。

    まとめ

    というわけで、今回はサッカーチームの名前についてちょっとだけ分析してみました。 音の感じもそうですが、サッカーチームの名前の由来はかなり趣向を凝らしていて、おしゃれだなぁと感心させられることが多かったです。

    個人的に気に入っているのはヴァンフォーレですね。発音もさることながら由来も好きです。

    甲府武田信玄風林火山⇨Vent(風とForêt(林)

    めちゃくちゃかっこいいですね。厨二病っぽい単語もフランス語にしたらおしゃれになるのか...とも思いました。 とてもいい勉強になりました。頭に残るネーミングができるように考えたいと思います。ではではっ!

    おまけ、ネーミング関連で面白かったサイト

    *1:思えば、このブログのタイトルもかなり悩みました。

    *2:けれど、さすがにカマタマーレはどうかと思います。。。個人の感想です

    パズドラのコンボシミュレータを自作・ガチ分析をして「オトナ」の10コンボを目指してみた

    こんにちは、ほけきよです。

    皆さんはパズドラやったことありますか?僕は割と古参のユーザーです。ランクは720くらいです。

    先日、こんな動画を観ました。

    www.youtube.com

    これを観てて、そういえば、こういうの作って、コンボの実験をしてみたかったんだよなぁ。と思い出しました。なので、コンボシミュレータを自作することにしました。

    パズドラコンボの原理

    実は、さっきの動画はコンボに関しては2点の意味で正しくありません

    • ドロップ*1の消え方が少しまちがっている
    • 落とし/落ちコンが無い

    しかし、コンボシミュレータではこれをきちんと実装する必要があります。なので、UI部分は作らず、ここのロジック部分に注力して作ってみました。

    パズドラの基本

    パズドラは基本、6×5個で6種類のドロップで構成されます。 これらのドロップを3つ以上連結させることでドロップが消え、相手に攻撃ができます。

    消え方

    ドロップは、3つ以上連結していると消えます。この3つ以上というのが、パズドラでは縦横一方向において、3つ以上の連結なのです。詳しくは下図をご覧ください。

    f:id:imslotter:20190513193255p:plain
    消え方の基本

    パズドラのコンボ数は、この消えたまとまりの数です。連結すると1コンボに集約されちゃうので、分けたほうがお得です*2

    落としと落ちコン

    ドロップを消したときに、上部にドロップが残っていると、そのドロップが落ちてきます。 そこで3つ以上のドロップが連結したら、またドロップが消えます。これを 落としといいます。

    一回盤面内のコンボが終わると、ドロップがランダムに補充されます。ランダムに補充されたあと、3つ以上のドロップが連結したら、またドロップが消えます。これを落ちコンといいます。

    落としと落ちコンの違いは、

    • 落としは 「狙ってできる」 ところ
    • 落ちコンは 「完全運任せ」 なところ

    です。

    f:id:imslotter:20190513193329p:plain
    落とし vs 落ちコン

    これらを実装していきます。

    実装

    まず、実際にみてもらいましょう。(※今回はUIやグラフィックは皆無なので、出力を画像で可視化してパラパラ漫画のように流しているだけです。)

    f:id:imslotter:20190513193601g:plain
    シミュレータ

    ドロップを消す/落とし/落ちコンを(多分)きちんと実装できました。

    シミュレータの良いところは、盤面やドロップの種類を自由に設定できるところですね。 あとでじっくりと遊びます。

    実装コード自体はgithubに上げたので、詳しくはそこでみてください。

    pazdra(hokemiscディレクトリ内)

    • ドロップの種類
    • 縦横に配置するドロップの数

    をパラメータにコンボ数のシミュレーションができるので、楽しいと思います。

    やってて結構悩んだのが、「消すルール」のところでした。連結が意外に難しい。おそらくもっと簡単な方法があるはずです。*3

    「大人の10コンボ」をしたい。

    パズドラだと誰でも憧れるヤツ。

    大人の10コンボってなに?

    ところで、パズドラをしている方なら「マックスむらい」さんという方を一度は聞いたことあるのではないでしょうか。 パズドラ公式生放送に出て、我々ユーザのために石をもぎ取ってくれる存在です。パズドラの全盛期は彼とともに作られたといっても過言ではないでしょう。

    www.youtube.com

    ここで最後に言われている「みたか、これが大人の10コンボ!」はあまりに有名なセリフです。 生放送で10コンボを組み、勝利特典の石をもぎ取ってくれる様は、まさに英雄でした。

    「オトナ」の10コンボ

    そんな私も、大人の10コンボをしたい!!とあこがれを抱いたのです。 しかし、パズルの練習をしたくありません。めんどくさいので。そこで考えました。

    「運」だけで10コンボ行かないかなぁ。それが良いなぁ。

    と思いました。私にはパズル力はありませんが、作ったシミュレータがあります。 どのくらい試行回数を積めば10コンボできるのか、シミュレーションをしてみよう。そう思いました。

    コレが 「オトナ」の10コンボ です。

    しかし、通常盤面だと...

    パズドラの通常版面は、縦5マス横6マスの6色盤面です。 どのくらい落ちコンして、どのくらいのコンボ数が見込めるのか。意気揚々とシミュレータを回しました。 意気揚々と100回試行した結果の統計量はこちら

    min max average std 10combo
    0 5 1.11 1.34829522 0

    0回...100回やってもmaxは5コンボで、10コンボは0回でした。平均1コンボくらいだし...こりゃ駄目だ。

    分析

    こうなってくると、もっぱら気になるのはどういう盤面なら「オトナ」の10コンボを達成できるの?というところです。 コンボを増やす方法は2種類あって、

    • 盤面の大きさを大きくする
    • ドロップの種類を減らす

    これらの施策によって、つながっているドロップが存在する確率が増えるので、自ずとコンボ数は増えていきます。

    というわけで、盤面の高さ,盤面の幅,ドロップの種類をパラメータにとって調べてみました。

    すべての結果はgithubpazdra_results0.csvにおいてあります。

    現状のパズドラでは、7×6の6色盤面、6×5の4色盤面のダンジョンもあるので、さっきの6×5盤面と比べどうなのか見てみましょう。

    Height Width Kind min max average std 10combo
    6 5 4 0 12 2.79 2.3970607 3
    6 5 6 0 5 1.11 1.34829522 0
    7 6 6 0 7 1.81 1.598092613 0
    9 8 6 0 14 3.31 2.335358645 2

    4色盤面だと、100回中3回も10コンボを達成できるっぽいです!!4色盤面ダンジョンなら、3%くらいの確率でドヤれることがわかりました。 *4

    ちなみに、6色だとどのくらいの盤面の広さが必要なの?というのも気になったので調べてみました。9×8盤面で可能性が見えてくるみたいです。

    ガンホーさん。実装をよろしくおねがいします

    ちなみに、平均コンボ数はこんな感じ。

    f:id:imslotter:20190513184304p:plain

    ドロップ盤面と種類とコンボ数の関係性

    さて、ここまでシミュレーションができるようになってくると、いろいろと気になることが増えてきました。 盤面と種類とコンボ数には、なんらかの関係性があるのではないか?

    実は昔、数を減らしていくと、パーコレーション起こって無限にコンボができるんじゃないのか??とか、いろいろと妄想していたことがありまして。今回はせっかくだし数値的に検証してみようと思ったわけです。

    ここで、ドロップ消え方の性質上ほとんど縦横の対称性は保たれそうだったので、n×nの正方形盤面で考えることにしました。

    • 盤面のドロップ数( n^{2} (3\leq n\leq 50))
    • 盤面のドロップの種類( k (2\leq n\leq 10))
    • コンボ数

    4種類から10種類までの落ちコン数の関係性をグラフにしたものがこちら。

    f:id:imslotter:20190513184534p:plain

    種類には反比例して、盤面の大きさには比例しているような感じがあります。

    この、直線の比例係数が気になりますね。それが分かれば、ドロップの種類と盤面の大きさの関係性がわかるってものです。

    実はこの直線の比例係数、並べてみるとめちゃくちゃキレイな関係があるんです! 縦軸に比例係数の逆数の平方根をとって、横軸にドロップの種類を取ると、そのグラフはこんな感じになります。

    f:id:imslotter:20190513185005p:plain

    数式で表すと、比例係数aとドロップの種類kの関係は下記になります。

    \frac{1}{\sqrt{a}} = 0.75k -1.43

     a = \frac{1}{(0.75k-1.43)^{2}}

    ドロップの大きさとコンボの関係性の比例係数は、ドロップの種類で記述できそうです。 これから、パズドラコンボ関数が算出できるわけです!!

    パズドラ平均コンボ関数

     Combo(N,k) = \frac{N}{(0.75k-1.43)^{2}}
    •  k : ドロップの種類
    • N : セルの数

    たとえば、盤面100×100で、6種類のドロップだったら、この関数にぶち込んで

     Combo(10000,6)= \frac{100}{(0.75*6-1.43)^{2}}=1061.0...

    というわけで、平均1000コンボが期待できると推測できるわけです!素晴らしい。

    まとめ

    というわけで、今回はパズドラに関していろいろと遊んでみました。 「オトナ」の10コンボ、したいですねぇ。 ちゃんと練習して大人の10コンボもできるようにしたいと思います。。。

    シミュレーション的にはかなりきれいな結果が出ましたが、これ、理論的にどうなんでしょう? 結構きれいな結果なので、マクロに見たときに何らかの考察ができるのでは??と期待しています。

    誰かよろしくおねがいします!ではではっ

    *1:パズドラでは、セル1つ1つをドロップといいます。

    *2:たくさんドロップつなげたほうがお得なスキルという特殊なアレもありますが、基本は3ドロップひとまとまりを作っていくゲームです。

    *3:縦横に3つまとまりのものを集めておいて、連結できるかの判断を下すようにしました。

    *4:なお、このコンボ平均値は、ドロップチェンジした後、どのくらいのコンボを平均的に叩き出せるかの指標になります。現行パズドラ盤面だと、高々2.5くらいなので、過度な期待は禁物ですね。

    PROCRASIST