kidoOooOoooOOom

ゲーム開発やってます

MacでOctaveのplotコマンドが動かない件の環境整備

Coursera Machine Learning コースの2週目から Octaveによるプログラミング課題がある。

kidooom.hatenadiary.jp

MacOctaveを素でインストールしても、グラフ描画のためのplot コマンドが使えなかったので、そこの環境整備メモ。

出力されるエラー

Octave上で plot コマンドを実行すると、下記のようなエラーが出力される。

octave:1> plot(1)

gnuplot> set terminal aqua enhanced title "Figure 1" size 560 420  font "*,6" dashlength 1

参考記事を見て、まずは gnuplotbrew で install

brew install gnuplot

インストール後にgnuplotを起動すると、terminal type に qt が使われていることが分かったので、ホームディレクトリに .octaverc を作って、環境変数の設定を追加。

$ vim ~/.octaverc

setenv("GNUTERM","qt")

この設定を反映することで、octave コマンドラインから plotでグラフ窓が表示されるようになった。

f:id:gidooom:20191121135257p:plain

参考記事

katuo-ai.com

www.ketsuago.com

社内Podcastをやってみて良い感触を得た

先日のEOF2019のレポート記事で社内Podcastに興味が湧いたと書いたところ、

kidooom.hatenadiary.jp

まさにそのEOF2019でPodcastのセッションをしてくれた ゆのんさんから言及Tweetをもらえた。

ここまでくれば後に引けないので、チームのエンジニアメンバーに声をかけて2人参加してもらい、自分と合わせて3人で初の社内Podcast収録をしてみた。

iPhone1台あればいい

マイクなどの収録機材を持ってないので、今回使用するiPhoneのボイスメモだと音質や音量に問題が出ないかが一番心配だった。

テスト収録して音声を確認したところ特に問題が無く、本収録後の音声ファイルも何も問題が無かったので、iPhone1台あれば十分収録できるんだと分かった。

テーマと人さえ決めれば収録できる気軽さが確認でき、今後も継続運用できそうで良かった。

事前に決めたネタ無視で時間も超えて話す

初回なので勝手が分からず、普段聞いているPodcastを参考にして話題になりそうなネタをいくつか用意していたが、それらはほとんど使われなかった。

メインテーマから発散して色々と話題が尽きないので、当初想定してた内容とかなり違う展開になったのはある意味良かった。

(もっと話が続かずに、何話そうか?的な雰囲気になるかと思ってた)

あっという間に40分も話していることに気づいて収録を締めたので、Rebuild.fmがどんどん長くなってしまっているのもこんな感じで話し込んじゃうからなんだなぁと理解した。

チームへの共有

自分で聞き直しながら(自分の声を聴くの最初は嫌だったけど途中から慣れてきた)、簡易的な文字書き起こしをしてチーム向けに公開した。

何人かから、すぐに聞いてくれて感想も貰えたので、とてもうれしかった。

次は自分も喋りたいと言ってくれるメンバーもいてくれたので、是非2回目も収録してメンバーのことをどんどん深堀っていきたい!と思った。

ハースストーン新モードのバトルグラウンド(BETA)にハマってしまったので自分的攻略メモ

先週リリースされたハースストーンの新モード「バトルグラウンド」が面白くてハマってしまっている。

www.4gamer.net

なかなか勝てずにレートも上がらないので、攻略も兼ねて自分的にメモっていく。

(※以下は2019/11/17時点のデータをベース)

まずはリソースを理解

ヒーローピック

8割ぐらいのヒーローを使ってみたが、強さはほぼ以下の記事と同じような感触だった。

hearthgamers.com

自分が1位を取れたことがあるのは、「ミリフィセント・マナストーム」と「ネズミの王」を使ったときで、いずれもMech主体のデッキを構築した時だった。

1度使ってみないと使用感が分からないヒーローも多いので、選択したことが無いヒーローが来たら死ぬ覚悟で選んで一旦学ぶのが良いと思う。

カードプール

バトルグラウンドで使えるカードプールも公式で公開されていた(この記事を書くことで見つけられたので良かった)

playhearthstone.com

改めてカードプールを見ることで、Mech主体とBeast主体が安定して強いイメージ湧いた。

Demon主体はソウルジャグラーがハマれば強いんだけど、ソウルジャグラー自体がDemonじゃない上にこいつがアッサリやられるとコンセプトが崩壊するので不安定。

ソウルジャグラー

最優先ピックはAmalgam(融合体)

どのデッキでも採用できる万能ユニットがAmalgam(融合体)で、こいつはグレード2で見かけたら絶対にピックしたい。

Amalgam

Mechデッキで不足している貴重なPoison要因となれることが大きい。

スタッツが膨れ上がったTaunt & Poison付きのこいつがいるだけで序盤〜中盤は絶望的な状態になる。

現時点で強いと思われる戦略

基本は種族染めになるが、前述した通り Mech 主体とBeast主体が強い。

Mech主体

全体的に外れミニオンが少なく、安定した立ち回りができる。

相手にしててとにかく辛いのが、

  • 高火力になった「コバルトの守護者」が次々と死亡時効果で出てくるメカによってDivine Shiledが張りっぱなし状態になる
  • 気づいたらスタッツが膨れ上がっている「ジャンクロボ」
  • 挑発ユニットを次々と産出する「警備ローバー」
  • 最後の最後に戦況をひっくり返す「ケンゴーの弟子」

対戦しててボコボコにされた相手の戦略を覚えておくのが攻略のカギとなることがよく分かった。

Beast主体

Beastで強いのは下の2ミニオン

ネズミ軍団から大量に出てきた小型ミニオンを倒しているうちにハイエナがものすごいスタッツになっていて蹂躙される。

ネズミ軍団から出てくる小型ミニオンも、以下のミニオンがいる場合は凄まじい攻撃力になってしまう。

敢えて弱点をあげるとすれば、火力重視で体力は少ない印象なので、Divine Shiledが張りっぱなし状態のMechには苦戦するかもしれない。

進め方

やはり1位を目指して中長期的な運用をしていくことが必須になる。

序盤だけ強い効果をもつヒーローは、その時点で厳しい状況になっている。

序盤

自分のヒーローとのシナジーになるミニオンを選ぶことになるが、星1のミニオンを最後まで使うことは少ないので、売る前提で序盤向けミニオンを取るのもあり。

2ターン目にはグレード2に上げるのが安定。

3ターン目の購入がかなり大事になっていて、ここで良質なグレード2ミニオンを2体買いたい(最初に買ったミニオンを売れば2体買える)

中盤

こっから力の差が出始める。

多少のダメージは覚悟しながら、長期的に勝てそうな戦略につながるユニットを選択して購入していく必要がある。

Mech主体、Beast主体であればコアミニオンはグレード2〜3のユニットになるので急いでグレードアップを目指さずにそれらの強化を続けても良さそう。

イマイチな構成のままであれば、グレード4以上にいる単体で強力なミニオンを揃えて、4位以内を目指すことにスイッチすることを仕方ないかもしれない。

終盤

とにかく高スタッツ、高シナジーのぶつけ合いになっており、猛毒ミニオンがいないと倒すのが無理な体力にまで育っている可能性もある。

基本的に死亡時能力によって高火力ミニオンが増殖する状態(Beast主体とかそう)にもなっているので、シナジーが何もない単体そこそこスタッツミニオンは役に立たずに死んでいく。

裏に隠れているコンボ系ミニオンを抹殺できるので、下記2ミニオンは優先ピックしてもいいと思う。

その他細かいルールやTips

攻略wikiを見て初めて知る知識も多かったので、こうやって情報を得ないものはカモになるのだなと改めて知らしめられた。

wiki.denfaminicogamer.jp

まとめ

勝率はまだ全く安定してなくて初期レートからあんまり変わってないけれど、色々試したことで攻略法が見えてきたので更に面白くなってきた。

ただ、これにハマって勉強の時間をあまり削らないようにしないと・・・。

「ワンナイトKPT 狂気Ver」というのを考えて試してみたら、意外と発見があった

定期的にチームでランチを食べながらボードゲームをしていて、この前やった「ワンナイト人狼 狂気ver」がとてもカオスで面白かった。

ワンナイト人狼 狂気ver とは?

まず、「ワンナイト人狼」というアナログゲームがあって、それは人狼ゲームをサクッと10分程度で終わらせるようにしたものでこれもとても面白い。

それに少しアレンジを利かせたのが狂気verで、ランダムに各プレイヤーに「狂気カード」というのが配られる機会がある。

この狂気カードが特徴的なものになっていて、以下のような効果があり、そのカードを受け取ったプレイヤーはそのルールを守らなければならない。

  • 他のプレイヤーのことを「ママ」としか呼べなくなる
  • 1分ごとに全員にハイタッチをする
  • 事実と反対のことしか言えない
  • 発言をするときは、白目を剥いてでしか話せない

などなど、傍から見たらかなりイッちゃってる集団にしか見えないヤバいルールが揃っている。(その反面、やってる側はかなり盛り上がる)

もっと詳しいルールは、こちらのサイトなどを参考。

www.comonox.com

この狂気カードによって普段の人格と異なる発言や行動をすることを強制されるため、そこが新鮮でとても面白く感じた。

そこから着想を得たワンナイトKPT 狂気verとは?

この強制ルールを、「普段のMTGや振り返りのKPTにも使ってみたらどうなるんだろう?」という好奇心が湧いてしょうがなくなってしまったので、無理を言ってエンジニアチームのKPTの時間を使って「ワンナイトKPT 狂気ver」を開催させてもらった。

ルールは割と単純で、あらかじめ話しておきたいアジェンダを決めておき、話を始める前に狂気カードを伏せて各自に配って、そのルールを各自が守って議論をするだけ。 (狂気カードは他の人は見せないこと)

今回用意した狂気カードはなるべくKPTが新鮮に感じられるようなものを想像して作ってみたけど、やってみたら想像以上にカオスな状況になったし、意外と良い議論ができるキッカケにもなったりして、いくつか発見があった。

  • 発見
    • ひたすらホワイトボードを書くルールがあると話が整理されやすかったので、やはりホワイトボードに書きながら議論するのが良いんだと実感。
    • 「社長になったつもり」など、なにか自分の中にロールがうまれると、いつもと違った考えが生まれたり発言が増える。
    • ただし、1人変な雰囲気のロールの人がいたりすると、議論が進まなくなりがち。

今回用意した狂気カードの中で、まあまあ良い効果だったものは以下の通りだった。

  • 良かったカード
    • とにかくたくさん話す。発言数1位を目指す
    • 最終的になんか1つActionを決められるように話をまとめる
    • 社長になったつもりで話す
    • CTOになったつもりで話す
    • ホワイトボードに話しの内容をずっと書く
    • かなり批判的に話す
    • めちゃくちゃポジティブになる
    • できるだけ斜め上の意見(突拍子もないこと)を言う

逆にあまり意味がなかったり、話しがやりづらくなるマイナス効果のものは以下の通りだった。

  • マイナスだったカード
    • 自分の意見や意思と逆のことを言う
    • とてもゆっくり話す
    • 英語で話す
    • 立って話す
    • 他の人がどんな感情なのかを注目し、たまに実況する(ちょっとカチンと来てる?とか)
    • ずっと誰かの目を見て話す

(マイナス効果のカードはその場ですぐに捨てた)

まとめ

まあ、正直くだらない事をやってしまったかもしれないけれど、何でも試しにやってみてそこから何かしら発見する機会にもなったので良かった。

前にバズっていた下の記事にも結構インスパイアードされているとも思う。

dailyportalz.jp

今後、「議論が進まないなぁ」とか「なんかいつもの違った空気でKPTやりたいなぁ」と思ったときは、おもむろに全員に「CTOになったつもりで話す」のカードなどを配ってみて、意識高い議論に持っていったり雑な雰囲気にさせたりするのも、個人的には良いんじゃないかなと思った。

ブクログ再登録して読んだ本を管理していく

今年初めから勉強へのモチベーションが再燃してたくさん読書もするようになった。

読んだ感想や学んだことをブログ記事にしてアウトプットしてはいるけど、まだまだ一部の本しかアウトプットに繋げられていない。

読んだという蓄積記録だけでもどこかに残しておきたいので、10年以上前に使っていて最近放置していたブクログサービスに再登録して使うことにした。

booklog.jp

とりあえずamazonの購入履歴を辿って、読み切った記憶がある本をひたすら登録(人によってはこの初期登録がかなり大変になりそう・・・)。

本棚にある本や図書館で借りた本も覚えている範囲で登録したが、まだかなり登録漏れはありそう。

ブクログを使ってた時は買ったばかりの本もすぐ登録してたけど、登録しただけで満足して読まない本が結構あったので(なんかそこで欲求満たされてる感)、今回は「読み切った本」を登録する運用ルールにしてみる。

これによって、登録するためにも読み切らなきゃ!というモチベになることを期待。

あと最近の感想として、エンジニアはみんな読書好きの印象を勝手に思っていたんだけど、意外とそうでもないんだなということも感じてきていて、読書好きというのは十分自分の強みになるんだなと分かった。

とはいえ自分も技術系の本の割合がそんなに多くないので・・・そこは頑張っていきたい。

Cousera の Machine Learningコースを受講し始めた

Qiitaでたまたま見たこちらの記事がめっちゃ面白くて、

qiita.com

この方が書いた別の記事も面白くて色々読んだ。

qiita.com

qiita.com

qiita.com

機械学習を学ぶのに最も適した教材と言われる、Machine Learning | Coursera を受講し終わりました!

機械学習に対しては自分も日々興味が湧いてきていたものの、なかなか学習へ飛び込んで行けてなかった。

機械学習を学ぶモチベーションを高める

まず、機械学習とは

機械学習 - Wikipedia

機械学習(きかいがくしゅう、(英: Machine learning、略称: ML)は、明示的な指示を用いることなく、その代わりにパターンと推論に依存して、特定の課題を効率的に実行するためにコンピュータシステムが使用するアルゴリズムおよび統計モデルの科学研究である。

という感じで、超ざっくり雑に書くと「大量のデータ使ってなんかルールを見つけようぜ」的な方法。

Netflixの「世界の今をダイジェスト」で先日、"コーディング"というエピソードが公開されていて、そこで機械学習も紹介されていた。

www.netflix.com

f:id:gidooom:20191110084840p:plain

図の右側にある紫色の四角には

といったように、従来のコーディングが発達してきた基礎要素が並んでいる。

これに対し、左上にポツンとある赤い四角が「機械学習」で、これは従来のコーディングとは全く別のアプローチでアルゴリズムを書くやり方と説明されている。

この番組を観て改めて、機械学習は新しいパラダイムのプログラミングなんだと認識し、なんか最近流行っている技術としてスルーするのは老害化への道だなと感じた。

先日参加したEOF2019でも、DMM CTOの松本さんのスライドで「機械学習がなぜ必要になってきているのか?」の言及があった。

logmi.jp

f:id:gidooom:20191110090004p:plain

んで最近、自分も興味が強くなってる心理学や脳科学統計学などの科学分野でも機械学習への機運が高くなっているので、そろそろ勉強始めてみるかと思った。

Cousera の Machine Learning 受講開始

Machine Learningは全11週コースで、今は1週目が終わって2週目に入ったところ。

f:id:gidooom:20191110081638p:plain
コーセラ進捗

講座のメインである講義動画は、日本語の字幕もついているので安心して受講できる。

小テスト等は英語だけど、3ヶ月前からやっている英語多読のおかげでまあまあ英語耐性ついてきたことを感じる。

kidooom.hatenadiary.jp

Machine Learning コース1週目で学んだこと

こちらの記事に、とてもいい感じにまとめられている。

qiita.com

1週目で登場するのは、

と、初めて知る概念だらけだし、数式も何度か出てきたけれど、講座の説明がとても丁寧で分かりやすかったので割とスムーズに学習できた。

地味に最後のおまけの行列演算講義が、Unityでも使える数学講座になっていたのでお得だった。

まとめ

機械学習について学んでいる人は今のチームや組織においてもまだそんなに多くない印象なので、これを機に仕事でも使えるスキルにして自分の価値も高めていきたい。

コース2週目からはプログラミング課題も出てくるので、プログラマーとして更に気合入れてやっていこう。

組織パターンの前提は、「信頼で結ばれた共同体」

組織パターン」を読んだのでメモ。

本書では4種類のパターン言語が説明されており、

  • プロジェクトマネジメントのためのパターン言語
  • 組織の漸進的成長のためのパターン言語
  • 組織のスタイルのためのパターン言語
  • 人とコードのためのパターン言語

(手書きの汚い図だけど・・・) どのパターン言語も、パターン同士のつながりが有向グラフで図示されている。

f:id:gidooom:20191109095118j:plain

信頼で結ばれた共同体

4つのパターン言語全てにおいて、矢印の始まりは必ず「信頼で結ばれた共同体」のパターンになっていて、これが組織の基盤となる一番重要なパターンだと示されている。

考えてみればそうで、よく言われる"心理的安全性"や"企業文化のデザイン"もこの「信頼で結ばれた共同体」を作るためのプラクティスみたいなもんで、このパターンを目指してどの組織も試行錯誤している。

お互いを信頼できてない組織は、自己弁護や自己評価・自尊心を満たすためのコミュニケーションが多くなったり、お互いがちゃんと働いているのかを監視するコストが増えてうまくいかなくなる。

前に読んでブログ記事にも書いた「ORIGINALS」という本で紹介されているブリッジウォーター社では、

「忠誠心より、真実を語ることや柔軟であることを優先せよ」

「批判的な意見を口に出していえないのなら、批判的意見をもつ権利はない」

と、強烈な企業文化を作ってそれを従業員に守らせており、これで「信頼で結ばれた共同体」パターンを作ってるかなぁと思った。

kidooom.hatenadiary.jp

あと、企業文化のデザインについては、最近読んだ下記の記事がとても面白かった。

note.mu

この記事の中で紹介されている、「優れたリーダーはどうやって行動を促すか」という動画は、組織パターンの中で登場する「目的の統一」パターンと同種の考えだと思った。

www.ted.com

「目的の統一」パターンでは、コミュニケーションのことを下記のように説明している。

コミュニケーションは目的の統一を実現するための手段にすぎないのだ。

よく、コミュニケーションが大事!コミュニケーションが重要!と聞くし、自分もそう思っちゃうけど、何のためにコミュニケーションをするのかという目的意識を改めさせてくれた。

組織パターン」では他にも大量のパターンが紹介されているけれど、有向グラフの末端にありがちな各パターンをそれぞれ適用していくよりも、まずはこの大前提となる「信頼で結ばれた共同体」パターンを目指して全力を注ぐのが大事だなと改めて感じた。

今の自分に強く印象に残ったパターン

「信頼で結ばれた共同体」パターンが一番重要だとして、他にも重要だと思ったパターンはたくさんある。

その時の組織環境や心境によって各パターンへの印象は全然変わると思うけど、とりあえず"今の自分"が読んで印象的だったパターンは下記の通り。

  • コンウェイの法則
  • 期日までのゆとり
  • 組織を細かくする
  • 段階的に人を増やす
  • 防火壁
  • 目的の統一
  • 婦長
  • 賢い愚者
  • 作業を均等に配分せよ
  • 冷水器
  • アーキテクトも実装する
  • コードの所有権

長くなってきたから、またなんかパターンに紐づく経験をしたり考えが浮かんだときに文章化しよう。

まとめ

組織構造に関する改善をしたいときや、チームの中で自分や同僚のロールをいい感じに適応していきたい時に、これらのパターンを覚えておくとアイデアの種になりやすいと思った。

今までの自分は、組織構造やチーム内ロールバランスなどにあまり気をかけず、チームの結束力・学習力を高めて個人の力も高くしていけば何となくのチームビルディングはできるんじゃないかと思いがちだったけど、組織パターンを通してチームビルディングの「語彙」が増えたのは良い学習になった。