libAlexandrina.so.octopress

合掌中に何を考えるべきか

| Comments

食事の際に合掌させるなの議論をきいたとき、それでは「自分なりに合掌中に何を考えるべきか」ということを真剣に考えたことがある。至った結論は「この食事に至った人手や手間を原料に遡るまで一瞬でいいから考える」であった。

そうすれば

  • 誰がどう仕事してこうなったのか
  • 原料、材料はどこからどうやって手に入っているのか
  • その苦労は自分が請け負ってできることか

などなど、生産者や調理に関わる人を超え、この社会を構成する方々すべてへの感謝の念が自動的に湧いてくる。社会問題も見えてくる。宗教も関係ない。

年末某日、寝床に置いてあった月刊Hanada 2017年6月号の連載『日本人、最期のことば』を読んだ。小林一茶…敬称が思いつかないのでとりあえずさん付けしておく。小林一茶さんの句が紹介されていた。

耕やさずして喰ひ、織ずして着る体たらく、今まで罰のあたらぬもふしぎ也。

この時代以上に高度な社会となった今は分業が進み、衣食住を自分で作り出すことなく、作られたものがお金を通して与えられるのが当たり前になっている。それが当たり前なのか当たり前じゃないのかというのは謙虚に考えるべきだ。

食前の合掌をそのきっかけとしてみてはどうだろうか。

『ドミニオン日本語第二版』買ったぞ&やったぞ!

| Comments

ゲームスペース金沢さんにてドミニオン日本語第二版を入手した! やったぜ。

改版された要素

これまでの基本セットの、金銀銅と勝利点がドミニオン基本カードセットに近いデザインになってわかりやすくなった。さらに加えてまさかの基本落ち&新カード入りである。

基本 - ドミニオン Wiki*より引用。

IN(7枚)

名前 コスト 種別 効果概要
山賊 5 アクション-アタック 金貨を獲得、他のプレイヤーのデッキ2枚をめくり、銅貨以外の財宝カードがあれば持ち主が1枚廃棄
職人 6 アクション  5コスト以下のカードを獲得して手札に入れ、手札1枚をデッキの上に置く
衛兵 5 アクション +1ドロー+1アクション、デッキの上2枚を見て、その2枚を廃棄するか、捨て札にするか、デッキの上に戻す。
密猟者 4 アクション +1ドロー+1アクション+1金、(空のサプライの数)枚捨て札にする
前駆者 3 アクション +1ドロー+1アクション、捨て札からデッキの上に1枚だけカードを置ける
商人 3 アクション +1ドロー+1アクション、銀貨を1枚でもプレイすれば+1金
家臣 3 アクション +2金、デッキの一番上のカードを捨て、捨てたカードがアクションならプレイできる

OUT(6枚)

名前 コスト 種別 効果概要
木こり 3 アクション +1購入+2金
宰相 3 アクション +2金、デッキ全てを捨て札に置ける
祝宴 4 アクション 自身を廃棄、5コスト以下のカードを獲得
泥棒 4 アクション-アタック 他のプレイヤーのデッキ2枚をめくり、財宝カードがあれば使用者が1枚廃棄 そのターンに廃棄した財宝カードは好きな物を獲得可能
密偵 4 アクション-アタック +1ドロー+1アクション、全員デッキの一番上を公開し、それぞれ使用者が戻すか捨てるかを選ぶ
冒険者 6 アクション 財宝カード2枚が出るまでデッキを公開、公開された財宝カード2枚を手札に加え、残りを捨てる

やったゲーム

新『最初のゲーム』

とりあえずまさかの初心者2人+やりこみ勢2人卓になったので説明から。

  • 地下貯蔵庫(2)
  • 市場(5)
  • 商人(3)
  • 民兵(4)
  • 鉱山(5)
  • 堀(2)
  • 改築(4)
  • 鍛冶屋(4)
  • 村(3)
  • 工房(3)

旧と比べると『木こり(3)』が『商人になっただけ。そしてまさかの翻訳ミスで商人が「+1ドロー+1アクション」ではなく「+1ドロー+1購入」になってしまっている! 取説のカード説明は正しく「+1ドロー+1アクション」で説明があるのにね。

とりあえず今回は初心者の方が混ざってるので「印刷してあるとおりでやろう」ということになってそれで遊んだ(これはレビューするという意味では本当に良くないね)。 まぁさすがに初心者とやって負けない。『商人』の効果が間違ってるが銀貨と相性いいのはステロで強そうだった。

サイズ変形

  • 職人(6)
  • 山賊(5)
  • 役人(4)
  • 礼拝堂(2)
  • 祝祭(5)
  • 庭園(4)
  • 衛兵(5)
  • 玉座の間(4)
  • 魔女(5)
  • 工房(3)

これは2ゲームやった。1ゲーム目は工房庭園。さすがに負けない。解雇になった『泥棒』の代わりに新雇用された『山賊』では工房庭園をまったく妨害できない。そして泥棒庭園もできなくなってしまった。

2ゲーム目は『衛兵』がめちゃくちゃ強い。さすが正規兵は『見張り(海辺)』とは格が違う! 軽圧縮からの『魔女』連打で勝利。『魔女』を引くタイミングもコントロールできるのが素晴らしい。

『祝祭』+『職人』も強そうだった。祝祭連打もよし、積んでよし、みたいな。

金と銀

さすがに初心者に「勝ち方はいろいろあるんだよ」ってのを教えると混乱してしまったためか、シンプルな『属州』だけの勝利場でやろうということでこのサプライを選択。

  • 山賊(5)
  • 役人(4)
  • 礼拝堂(2)
  • 前駆者(3)
  • 研究所(5)
  • 商人(3)
  • 鉱山(5)
  • 金貸し(4)
  • 玉座の間(4)
  • 家臣(3)

さすがにこれは『前駆者』+『家臣』で、ひろって使って楽しめということだろうなーと考えてそれにのったら下家が2/5スタートで『礼拝堂』+『山賊』で、これが地獄の可能性を感じた。重圧縮して『山賊』を打つだけなんだが金貨が確実に入るので『泥棒』と違って超安定している。そして毎ターン打つことで他人に銀貨以上を握らせない! これに対抗するにはこちらも『山賊』をうつしかない。さすがに後発はツライのでなんとか『玉座の間』+『家臣』+『研究所』などで対抗しようとしたが、まー当然全く追いつけず負け。

感想

新カードはむずかしいが強い。さすがにシンプルさは抜けてしまった感がある。『木こり』や『泥棒』のいない『庭園』は違和感があるね。いぶし銀プレイができない。まーそれがわからん殺しになってよくなかったのかもしれない。なんていうか特に+1購入は最近はなんでも勝手についてきててあえて木こらないといけないとかそういうのがおもしろかったのになと寂しい。『宰相』『冒険者』なんかもドミニオンとは何かを教えてくれるよいカードだと思ってたんだけどなー。

さすがに拡張セット帝国のランドマークほど複雑ではなくガッツリとドミニオン! という感じのを遊べた。『全部新カードだとしんどい』ってのは正直あるので、またこれでブームが再燃してくれるといいんだが。

やっぱ定期プレイ会は続けたいのう。

Qiitaに『Ruby on Rails + OmniAuthでGoogleCalendarにアクセスしたい』書いた

| Comments

今日のha4go オンライン もくもく会 #15 - connpassではCode for Kanazawa(コードフォー金沢)を書いて、PharaohKJ/gcal2snsの続きを作っていた。

Google Calendarにアクセスするのがむずかしくて結局1日かかってしまった。とりあえず成果物はリポジトリとQiitaに書いた。

Ruby on Rails + OmniAuthでGoogleCalendarにアクセスしたい - Qiita

歳のせいなのかEmacsでRails書くのに体が思い出してくるのに結局1日かかった。読まなくてもスラスラかけていたドキュメントをバリバリ読み返すハメになってとっても効率が悪かった。

OS、IDE、エディタ、言語、フレームワーク、、、いろいろなコンテキストスイッチのコストが積み重なるのにお脳や体がついていけていない。全部JavaScriptで書きたい病とかの気持ちがわかってきた。少なくとも最近はMVCでもMVVMでもなんでもいいがビューレイヤとロジックレイヤが分かれており、それぞれほぼ別言語を覚えたり別ノウハウが必要になったりで結構ツライ。「餅は餅屋」なのでそれぞれ向いたテンプレートエンジン、DSLがあるというのはわかるが…。

まぁやっぱり使う環境をガッと決めて「これですべての釘を叩くぜ。」というスタイルが一番ものを作る効率がいいのであろう。

やっと『LUDIX』やったし『カタン』もやった

| Comments

2017-11-19(日)にボドゲ会を行った。なんでも年間100タイトルを目指してるそうで、その子がやったことないゲームをやろうということで3本遊んだ。次こそ『王と枢機卿』やりたい!

カタン

こ、こんなビッグタイトルをやってないだとお? まぁそういうこともあるか。俺もそうだし。そういうわけでゲームスペース金沢さんで買ったカタンをプレイ。大学生ぶりぐらい? イマイチ勝ち方がわかんねえからMtGのほうがいいなと思ってたけどやっとちょっとおもしろさがわかってきた気がする。初期配置ぐらいはちょっと教えてあげたほうがいいかもね。無謀なプレイングだと出目によっては暇で殺されるからなあ。

ハコオンナ

ハコオンナ側で勝利。ルールの把握も進んできてこれもやっと面白みがわかってきた。ちょっとまとめも書いてみた。なにやら新しい版がでてるって? 欲しいかも。

LUDIX

ただのサイコロ運ゲー。だがそれがいい。点数計算はポーカーチップを使ったらメチャ雰囲気がでてよかった。そして勝った!

鰹メガマックス

一心屋でラーメン食べて解散。

『ハコオンナ』ハコオンナ側攻略考察

| Comments

まずはハコオンナ側敗北条件と調査したい内容と戦略の整理。

脱出される

  • 場所不明
    • 鍵コード1の場所
    • 鍵コード2の場所
    • 鍵コード3の場所
    • 脱出口
  • 場所確定
    • 金庫
  • 戦略
    • 攻撃
      • 鍵を持った来客を特定し、殺す
      • 『ソノコガホシイ』で鍵を奪う
    • 防御
      • 金庫の上に乗る
      • 脱出口を探し、その上に乗る

成仏させられる

  • 場所不明
    • メリーさん人形
  • 場所知ってる
    • 亡骸
  • 戦略
    • 攻撃
      • メリーさん人形を持った来客を特定し、殺す(特定には『ワタシメリーサン』が使える)
      • 『ソノコガホシイ』でメリーさんを奪う
    • 防御
      • 亡骸の上に乗る

退治される

  • 場所不明
    • 弱点ヒント1
    • 弱点ヒント2
    • ガソリン
  • 知ってる
    • 弱点が何か
  • 戦略
    • 攻撃
      • 弱点武器を持った来客を特定し、殺す
      • 『ソノコガホシイ』で弱点武器を奪う
    • 防御
      • 弱点武器を知られないようにする
      • 弱点武器の上に乗る

全体的な戦略

『弱点武器』・『メリーさん』・『鍵』をゲームから消すのが大目標。そのために来訪者を殺すことがあります。ぐらいの戦略で行く。

最初のランダム能力はなんとか手記制限なしでも使える能力をゲットしたい。『モノガウゴク』をゲットした場合は調査がかなり楽になる。『ソノコガホシイ』も毎ターン連打することで実質調査している上に相手を追い込んでいけるので選びたい。(Q&Aに「難易度落とすなら、一番いいのは初動のチカラを弱いものを選択する」とあるぐらい、ここでとるカード次第で難易度がかわります)

『亡骸』の配置はいざというとき『モノガウゴク』が効果的になるように物陰が多い部屋に配置するのがよい。そしてハコオンナ開始場所には置かないほうがいい(これは後述、確率の問題)。

知ってること

  • 亡骸の場所

こちらも調査したいこと、重要度順

  • メリーさん人形の場所、所持者
  • 弱点武器の場所、所持者
  • 脱出口の場所
  • 鍵の所持者

来訪者が

  • 脱出口の場所を知ったか
  • 亡骸の場所を知ったか
  • 弱点武器を持ったか
  • メリーさんを持ったか
  • 弱点を知ったか
  • 金庫番号を知ったか

こちらは部屋に入れば全物陰はみて潜んでよいというルールを活用して調査を重視パターン(最初に場所を公開して能力ゲットを試みても、誰も手記を拾ってないのでゲットできない)か、どうせ開始場所はほぼバレバレなので積極的にゼツボウノジカン狙いで行くパターンか。

これは「ハコオンナ開幕部屋を決めたら、物陰は全部確認してから潜んでゲーム開始」というルールなので、そこに上記要調査事項がいくつあったか? でいいんじゃないだろうか。なので『亡骸』は開幕の部屋におかないのがいいかも。最初に把握できるアイテムの確率が上がる。

基本、適当な来訪者をストーキングしながらその来訪者が上記「こちらも調査したいこと」にあるものの物陰を覗いたら覗いたら死ぬように潜む。

相手がストーキングをうまくかいくぐってうまくアイテムを収集されたら能力も増えないので本当に大ピンチ。だが、敗北条件チップに乗って防御すれば相手が他勝利条件を探す行動に出ざるをえないのでれば事態は確実に好転する。

ゲーム終盤になれば『アナタノソバニ』『スグニイクカラ』『デンワガナル』からの『ココヲアケテ』『ウシロニイル』で積極的に殺れる。

ハコビトの運用

※ハコビトはハコオンナの下僕ではないらしいので、言うこときいてくれるかは別。

そもそも『ココヲアケテ』でハメ殺しといてその瞬間から「俺たち友達だよな?」ってのはなかなかね。協力的なら基本脱出条件の上に乗っててくれってお願いすればOK。ただし、簡単に退治されてしまうので『ソノコガホシイ』で武器持ちを執拗に狙う。ただし、乗ってるだけで動かないでってのはゲームが暇になっちゃうからかわいそうだ。

というか

基本ハコオンナ勝てるようになってるはず? あと、私はメモ帳を使わないとハコオンナできないんだが、これは許されるのだろうか? いやだってトランプの神経衰弱とかメモありだったらゲームにならんやん? いや、許されるならプレイヤーがハコオンナ見えないところで筆談もできちゃうわけだし…。

プレイしてるのは第二版。第四版がAmazonで買えそうなので買うかも。

やっぱりmapファイルができてしまう件と犯人は違ってた?

| Comments

やっぱりサイト再作成が遅い!コイツはめちゃ許せん!ていうか毎回やっぱりマップファイルできちゃってるじゃん!

とわかっていろいろやって、やっぱJekyllのバージョンあげないとダメかなあと思ってたが、静的サイトジェネレータのコードを読むのも悪くないと思ってちょろっと読んだ。最初のモチベーションは「出力OFF設定してるのにそのパラメータがなぜ伝わらないのか」を確認するつもりであった。

とりあえずいろいろなジェネレータを使ってサイト作成しているのは gems/jekyll-2.5.3/lib/jekyll/site.rb の以下だ。Jekyllのバージョンが古いのは勘弁してくれ。

1
2
3
4
5
6
7
8
# Run each of the Generators.
#
# Returns nothing.
def generate
  generators.each do |generator|
    generator.generate(self)
  end
end

んー抽象度高いので、generatorインスタンスの正体から炙り出そうと思ってこのループに p generator 加えてみたら、あきらかに遅いヤツがいる。ははーコイツだなあ。一番遅いヤツを炙り出すためちょっと詳しくログ出してみる。

1
2
3
4
5
6
7
8
9
10
11
12
# Run each of the Generators.
#
# Returns nothing.
def generate
  generators.each do |generator|
    before = Time.now
    Jekyll.logger.error ['Generate Start', generator.to_s, Time.now]
    generator.generate(self)
    after = Time.now
    Jekyll.logger.error ['Generate End', generator.to_s, Time.now, after-before]
  end
end

結果

1
2
3
4
5
6
["Generate Start", "#<Jekyll::GenerateCategories:0x007f7fcf837ce0>", 2017-11-16 13:35:09 +0900]
["Generate End", "#<Jekyll::GenerateCategories:0x007f7fcf837ce0>", 2017-11-16 13:35:14 +0900, 4.982982]
["Generate Start", "#<Jekyll::JekyllSitemap:0x007f7fcf837cb8>", 2017-11-16 13:35:14 +0900]
["Generate End", "#<Jekyll::JekyllSitemap:0x007f7fcf837cb8>", 2017-11-16 13:35:14 +0900, 0.054229]
["Generate Start", "#<Jekyll::Paginate::Pagination:0x007f7fcf837b28>", 2017-11-16 13:35:14 +0900]
["Generate End", "#<Jekyll::Paginate::Pagination:0x007f7fcf837b28>", 2017-11-16 13:35:14 +0900, 0.010508]

んんん〜カテゴリ一覧作成が5秒ぐらいかかっとるやん? 試しにカテゴリを削ってみると

1
2
3
4
5
6
["Generate Start", "#<Jekyll::GenerateCategories:0x007f7fcf837ce0>", 2017-11-16 13:38:14 +0900]
["Generate End", "#<Jekyll::GenerateCategories:0x007f7fcf837ce0>", 2017-11-16 13:38:15 +0900, 0.019338]
["Generate Start", "#<Jekyll::JekyllSitemap:0x007f7fcf837cb8>", 2017-11-16 13:38:15 +0900]
["Generate End", "#<Jekyll::JekyllSitemap:0x007f7fcf837cb8>", 2017-11-16 13:38:15 +0900, 0.009151]
["Generate Start", "#<Jekyll::Paginate::Pagination:0x007f7fcf837b28>", 2017-11-16 13:38:15 +0900]
["Generate End", "#<Jekyll::Paginate::Pagination:0x007f7fcf837b28>", 2017-11-16 13:38:15 +0900, 0.001491]

0.02秒! これは俺の求めてた速度だわ。今カテゴリはデフォルトで全カテゴリが設定されるように改造済み、そうじゃないものを消すような運用にしていたんだよね。俺が。つまり犯人は俺。

Mashup Awardsにアイデアだけ参加して予選敗退した

| Comments

2017-10-21(土)、『KANAZAWAオープンイノベーションハッカソンMashup Awards 2017 金沢予選』に参加した。

いろいろあって初日21日の夕方までの参加になってしまったんだが、アイデアは得票することができて、男子率100%プログラマー率100%という最強のチームができあがった。

そもそも『独り言が多い日は調子がいいのか、それとも、悪いのか』を知りたいと常日頃思っていた。それには独り言の録音が必要だし内容の解析もやりたくなる。加えて、私は他人…いや存在しない誰かに説明しようとしたりツイートしようとしたりして日本語化・アウトプットしていく過程でいろいろ気づいていくタイプなので、積極的に独り言をしたいのである。

そういうわけでまとまったアイデアがこちら。

9票獲得しました!

ふぁらお加藤さん(@pharaohkj)がシェアした投稿 -

総括すると、なんだかんだで当日できること調査するってのは後手後手だし、できることから要求を考えないと全然欲しいものと違うものができちゃったなという印象。それでもオチは悪くはなかった。やっぱハッカソンは勝てないなあ。

初日に手分けしていろいろ妥協して実装に至った流れは以下。

入力

感情認識ヒューマノイドロボットであるPepper (ロボット) - Wikipedia)を用いる。本来は常に聴いてストリーム処理してほしかったんだがいきなりしゃべりかけても各動作のトリガーは引けないらしい。そのため、独り言というよりはペッパーくんに語りかけるという仕様になった。

分析

ペッパーくんの顔を見ないと感情は認識できないらしく、ペッパーくんの方を向いて話さないといけないらしい。私が求めていたのは語調で感情を認識してもらいたかったのだ。真にやりたかったのは「つらい♪」というと「つらくなさそう」「つらい!」というと「つらそう」と記録されることだ。だいぶ独り言とは遠くなってきた。

語調がダメならしょうがないので日本語から分析してもらおう。これにはText Analytics API | Microsoft Azureを用いることにした。

データ保存場所

mBaaSでサーバー開発不要! | ニフティクラウド mobile backend を用いた。APIキーの発行だけでサクサク使えてとてもよかった。イベントスクリプトも実行できるので、このデータ保存をトリガーして出力部を叩こう! と思ったらこの保存をトリガーしたイベントスクリプトは設定できないとのこと。しょうがないのでペッパーくん側で分析と出力を行うようにした。

出力

感情カレンダービューはサーバが要るし、作ってる時間も間に合わななそうだ。LINEさんもいらっしゃっていたのでLINEを用いることにした。あんまり? 人気ないが実はLINEにはTwitterと同じように自分のタイムラインがあるのだ。そこに感情をポストすることで自分の感情の変化を記録できるからよかろう。

と考えてたんだがタイムラインAPIがないらしい。しょうがないのでグループチャットにした。これまた独り言とは遠くなってきた。

結果として

結果としてペッパー君と会話=独り言しているとLINEのグループチャットに感情分析が投稿されたり腹減り度が投稿されたりするので、そのグループチャット参加者は「メシに誘い出そう!」とか「今は期限悪いから話かけないほうがいいな」とか判断できて業務を円滑に進むことができる。

というものになった。動いてるところ動画とプレゼンシートをLINEでもらって確認したが悪くなった。が予選敗退してしまった。

どうして年号を覚えねばならないのかなんとなくわかってきた気がする

| Comments

長らく私の本棚を飾り続けていた楽天の三木谷浩史さんとその父親三木谷良一さんの対談本をやっと読み進めている。

第1章からケインズなど経済学の話がバンバンでてきており、なかなか手を伸ばさずにいた。最近はちょっとそういった経済学の歴史・流れ的なものを読み始めたこともあって、読み進めることができるようになってきた。

しかし移民や消費税の話題にうつってくると、意見の違いというより結果がでてしまっている議論をしてしまってないか? という気持ちになってきた。特に「メディアにおいてアベノミクス批判は許されない」の旨書かれていることが決定的だった。

発行年を見ると2013年9月に発行された本であった。

消費税が5%から8%へとあがったのは2014年4月1日で、その結果のショックは今となっては結果がわかってしまっていることだ。

移民に関しても自称イスラム国ISILが跋扈し、欧州その他が難民・移民問題で世界が大揺れになって議論も大揺れになっているのが現在だ。ISIL独立宣言は2014年だし、ブレグジット国民投票は2016年だ。

そう考えると、何もかも「〜年何月の時点では」という注意書きが必要ということがわかる。ビフォアxxxではこういう議論もあったという記録は大事だが、大事すぎて、読み手側はこれはビフォアxxxであるということがわかっていることが求められてしまう。

そういうわけで歴史の授業で年号の丸暗記なんてなんの役にも立たないやろ? とマジメに考えていたのだが、古典や古い議論にあたるときには世界の出来事の年号を覚えておかないとヘンな読み方・議論をしてしまうなとやっと気づいてきた。

30秒から0.2秒へ!isolateとintegrateとscssのマップファイル作成

| Comments

そもそもRakeタスクを眺めていたらそれっぽいのがあった。ページの生成が遅いことは承知なので最新記事だけをプレビューし

  • 残りは退避しておけ(rake isolate
  • 公開時に戻せ(rake integrate

というのがあるやないか。とりあえずRakefileをいじって俺好みにした。さてこれでどれぐらいの速度でできるのか。

1
 ...done in 7.660925 seconds.

んー、オーダーが足りん。せめて1秒台になってもらわんと…

ていうか遅いのは本当に記事作成か? とちょっと真面目に調べてみたらどうやらscssのmapファイル作成が遅いように思えてきた。ていうか config.rb では sourcemap = true 行はコメントアウトしてあるしなあ。もしかして何か前回CSSデバッグしたとき 設定の キャッシュがきいてしまって毎度出力してしまっているのでは? ls -l ./public/stylesheets/screen.css.map してタイムスタンプを確認すると明らかに毎度作成している。

# sourcemap = truesourcemap = false と明示的に指定してみたらビンゴで

1
2
3
4
5
6
7
8
9
10
11
12
[pharaohkj]$ be rake generate
## Generating Site with Jekyll
 modified config.rb
    clean source/stylesheets
   delete source/stylesheets/screen.css
    write source/stylesheets/screen.css
Configuration file: _config.yml
Configuration file: _amazon.yml
            Source: source
       Destination: public/
      Generating...
                    done.

その結果、これは早い!

1
...done in 0.198859 seconds.

30秒から0.2秒。99.3%はSCSSのコンパイル+マップ作成だったのか? 検証のためisolateをやめてみたらやっぱり23秒ぐらい(...done in 22.667441 seconds.)かかった。結局記事がたくさんあるとサイト生成遅いのは変わらない。固定して7秒ぐらいがSCSS+マップ作成にかかる時間のようだ。isolate使っていこう。