モチベーションどうやっても序盤は森林を買い、周りが駅を建てるに連れて鉱山/家具工場への流れが最強な気がしているんだが、ここまで売れているゲームなのだから他の戦略もあるのだろう、と思い各カードの期待値を出してみた。鉱山の期待値が20/9というのはぶっ壊れ性能では...序盤はカフェが強い。駅が揃い始めたら建てる必要はないだろう。プレイヤー人数が増えるほど緑(自分のターンでのみ収入が得られる)カードの効果は薄まる。緑の収入全体的に増やした方が良かったのでは...?と思うくらい。標準ルールでは全ての建物を自由に選択できるので戦略が固定化されがちだが、拡張ルールでは序盤に建てられる建造物が限定化されておりランダム性が増すので、こちらで遊んだ方が楽しそう。22:43街コロの期待値を出すTweet広告を非表示にするもっと読むコメントを書く2017-03-18ゼロからReduxを学びボドゲのシミュレーターを作ったモダンなJSの開発環境とReact/Reduxを習得したくて、課題としてちょうどハマってたボドゲのシミュレーターを作った。Simulatorソースgithub.comReactとFluxは一時期趣味で触ったことがあるくらいで、記事を遡ったら既に2年前の話だった。norizabuton.hateblo.jp技術選定ビルドツールbabel/Webpackを使用。小規模なJSにbabelを使いたいだけであればbabelifyを通すだけで良さそうだが、今回はきちんと学ぶという名目なのでWebpackをちゃんと整備することにした。Modulesを試すこともできたのでこの選択は良かった。AltJS型が欲しいと思いTypeScriptかFlowで迷った。TypeScriptは現在ReactやAngularでもサポートされており、息が長そうで学ぶ価値は高そうという印象だが、既にbabel/Webpackでビルド環境を構築しており、ここからts-loaderを導入してTS用の環境を作るのが面倒だった(この時点で既にビルド環境構築に1週間ほど費やしている)ので、今回はbabel/Webpackに比較的乗せやすいFlowを選択した。テスティングフレームワークnode.jsでサーバーを立てた時にmochaでテストしていた経験はあったが、今回はReduxも推しているJestにし、assertはpower-assertを使ってみた。Jestはmochaと比較しても記法は対して変わらないので学習コストとしては大したことはなかった。デフォルトでMockになるので単体テストが容易という特徴があるらしいが、依存しているモジュールが少ないせいか今回はあまり恩恵を受けられなかった。デザイン同僚からantが綺麗で良いというオススメをもらったがmaterial-uiが使いたかった。Systemは標準では存在してなさそうで、導入したければ恐らくサードパーティのものを使う必要がありそうだった。Codeに乗り換えたのでこれで書いている。Codeで型を定義すると.tsでないと使えないぞと怒られる。すれば良いのだがあまりに場当たりっぽい。下記設定を試したところjsのコードハイライトが消えてしまったのですぐ戻した。}github.comIssueの方でも正式な解決策は無さそうで今のところは警告を無視するしかなさそうな気がしている。pagesにデプロイした。1コマンドでデプロイできめっちゃ便利である。2017年3月13日Redux所感このくらいの規模のアプリケーションであれば正直Vue.jsを使ったほうが速く書けるし設計もさして重要ではなさそうである。各レイヤーの役割を覚えるまではコードが分散するので追っていくのが大変だが、慣れてくればどこを修正すれば良いのかがすぐわかるので後のメンテナビリティは上がりそうな気はした。ModelレイヤーReduxを書き始めてすぐに気になった所は、どうやらロジックがreducerに集中してどんどんFatになっていく気がした。下記記事を参考にimmutable.jsとModelレイヤーを導入した。*2post.simplie.jpモデルにロジックが集約していくのでテスタビリティも向上し、ロジックの見通しも良くなったと思われる。2017年3月6日それとは別に、Containerなどでコレクションのフィルタリングをしているのだが、モデルの構造を意識してフィルタリングしたくなく、もっと抽象的に扱うためにファーストクラスコレクションを導入したくなった。immutable.jsのコレクションは直接拡張することはどうやら難しそうで、公式でないextendable-immutableを用いれば実現できそうな気がしたが、なんとなく依存を増やしたくなく、PureなJSで色々試していたがあまりうまくいかなかった。良い例があったら知りたい。Constantsの意味ReduxではActionとReducerはActionTypeという文字列のキーを使ってロジックを紐付けるのだが、わざわざ定数を介する意味が見えず最初は直接文字列で書いていた。途中で気になって調べたところ、下記記事からメリットが複数あることがわかった。stackoverflow.com要約すると、ActionTypeの一覧性が1つのファイルに集約するので、既存のアクションが把握しやすく名前の一貫性を保ちやすくなるIDEを使っていれば補完が効くのでタイプミスを誘発しにくくなる変数名を介してアクセスするので、minifyの効果が向上するということで、ActionTypeのファイルを設けることにした。デバッグイベントが発生後にStoreがどのように変化したかデバッグするために方法を探ったところ、redux-devtoolを見つけた。redux-devtoolはとても高機能で、Storeの状態を確認する以外にもActionのUndoやResetが可能らしいのだが、専用のComponentを導入する必要があったり、コードを多く変更する必要がある印象を受け、敷居の高さを感じ今回は見送った。それとは別にredux-loggerというものを見つけた。こちらはイベントの度にStoreの変更前と変更後をロギングしてくれ、比較的導入も楽で必要十分と感じたのでこちらを使用した。テスト公式を参考にaction/component/reducerのテストを書いてみたが、ロジックが大したことないのもあって、あまり必要性を感じなかった。Actionは外部APIを叩いたり非同期な処理が増えてくると有用性も高まるかもしれない。Componentsのテストも試しに書いてみたが、デザイン性に大きく関わる部分なのでどういう観点でテストを書けば良いのかがまだあまり掴めていない。Componentsにロジックが寄るのは恐らく設計としてあまりよろしくなさそうだし、UIについてはE2Eテストを別途設けたほうがむしろ有用ではないかという疑念が残っている。さいごにダンジョンオブマンダムは良ゲーだったので買って遊ぶと良い。11:38ゼロからReduxを学びボドゲのシミュレーターを作ったTweet広告を非表示にするもっと読むコメントを書く2016-12-302016年を振り返る今年も今日を含めてあと2日で終了するので振り返っておく。norizabuton.hateblo.jp川崎Ruby会議やったnorizabuton.hateblo.jpスタッフとスピーカーという立場で参加した。自分の中では今年一番大きなイベントだったと思われる。気になるのは来年もやるのかというところだがまだ何も決まってはいない。Kawasaki.rbは土地柄かWeb屋が少なくRuby以外で仕事してる人のほうが割合として多い*1ので、今年の川崎Ruby会議もそのカラーを前面に出し、コンテンツも特にRubyにこだわらずに実施した。次回があるのであれば、このカラーは続けていって欲しいと思うし、そんな内容でも聞いてみたいと思う人は是非参加して欲しい。kawasaki.rb公式ブログは今年からMediumに移行して絶賛継続中である。去年の4月から毎月休まず寄稿しているぞ。データの民主化とSQLハンズオン今年はやたら「データの民主化」という言葉が耳に入った年だと思う。弊社でもRe:dashが整備され、非エンジニアがデータベースにSQLを投げられる環境は整われた。環境は整備されても初めてSQLを投げるのはハードルが高く、当初はその人の席で直接SQLを教えながら手伝っていたのだが、手も回らないし全体的に基礎的な事を先に教えた方が良かろうと思いハンズオンという形式で実施した。norizabuton.hateblo.jpなおこの記事の2週間後に第2回を実施している。BYを図解込みで解説し、残りの時間で難題かと思われたサブクエリの演習をした。講習でなくハンズオンという形にしたことで、課題を解けたという達成感と実際のデータ取得に応用してみようというモチベーションに繋がったと思う。弊社SlackのSQL質問チャンネルでは既にエンジニアを介さずに質問と解答が繰り広げられていた*2。技術スタック川崎Ruby会議ではScalaについて話してみたものの、結局あまりScalaには触らず、仕事ではRubyを使うことのほうが断然多かった。ElasticBeanstalk...)と仲良くなった。LambdaとSlackは監視に使うには本当に便利で、最近ServerlessFrameworkも覚えたしどんどん活用していきたい。あとCUIツールとか今はRubyで書いちゃうんだけど、配布とか考えるとGo覚えてさくっと書けるようになりたい。まとめ気の利いたまとめを書こうと思ったが特に何も思い浮かばなかったのであえて書かない。16:272016年を振り返るTweet広告を非表示にするもっと読むコメントを書く2016-10-30社内向けにSQLハンズオンやった弊社内でRe:dashが整備され、エンジニア以外でもブラウザから気軽にSQLが叩ける用になった。気軽になったと言ってもいきなりSQLを使いこなせるわけはないので、社内向けに1時間程度のハンズオンを実施したのでここにまとめておく。目的とゴール目的はとりあえずSQL(主にSELECT文)の勘所を掴んでもらい、基本的な質問などは非エンジニア部署のメンバー間で解決できるようにしたかった。今回のハンズオンのゴールは基本的なSELECT文が叩けるRe:dashの基本的な操作ができるという点に設定した。BYHAVINGサブクエリとre:dashの簡単な解説とした。自分が前に登壇してセミナー形式にしても良かったのだが、なんとなく退屈になりそうという点と、自分たちで調べて解決したという達成感があった方が身につきやすいのではという実験的な試みから以下のようにした。4名とバランスが良かったのでうまくまわった。得られた効果セミナー形式と違って自分たちで問題を解くので、実際にSQLを叩く中でハマりやすいポイントと、細かい疑問(各句は大文字小文字どちらが良いのか、改行する意味はなんなのか、COUNT(*)に指定するカラム名はなんでも良いのかなど)も浮き彫りになり、それらを解消することができた。教え合うことで主催者の手が回らず質問できないという事象を避けることができ、無事にほぼ全員が解答まで導けることができた。なにより楽しかった、またやって欲しいという声もいただけた。BYなど、少し複雑になるケースの解説はもう少し厚くした方が良かった。テーブルのイメージを把握してもらうために多くの図解を加えるべき。JOINで結合するカラムはRailsの規則によるところがあるので、さらに多くの解説を要した)1時間でやってみたところ途中までしか終えられず、さらに解説を多く含めるのであれば何回かにパート分けした方が良さそうである。実行委員と発表をやらせていただきました。会の内容はるびまに、開催に至った経緯などは実行委員長のブログに任せるとして、個人的に実行委員になった背景を書きます。僕は2015年1月からKawasaki.rbに通い続け、その後2015年4月からKawasaki.rb公式ブログの中の人を務めるようになり、その甲斐もあってか本家Ruby会議の帰りにchezouさんに川崎Ruby会議を企画しているので手伝ってもらえないかと声を掛けられ、その後正式に依頼されたので引き受けることにしました。実行委員としてやったことこういった実行委員は初めての体験だったので、気づいたことと落ちているタスクは積極的に拾っていこうと思いながら手伝っていました。大きなものではWebページのロゴとスタッフTシャツ作成と当日のるびま用撮影担当、細かいことではミーティングのスケジュール調整やWikiのメンテ、懇親会会場の確保などをしていました。2.0」というタイトルで発表させていただきました。1.0は一度Kawasaki.rbで発表したのですが、今度は20分枠ということで、未経験者にもより丁寧にScalaの説明と魅力を伝えられるよう心がけました。参加者でScalaを触ったことあるか質問してみたところ、半数以上が手を上げた気がしたのでもう少し内容を厚くしても良かったのかもしれませんが、発表後に面白いと言ってくださった方もいたので良かったです。当初、Webサイトのロゴは用意しない流れだったのですが、折角なので妻に「kwskバザーで連想できるロゴ描いてみてくれない?」と聞いてみたら何パターンか描いてくれて、メンバーに見せたところ思いのほか好評だったので採用に至りました。その後TMIXさまからTシャツスポンサーの申し出があり、ロゴをそのままTシャツのデザインに使いまわそうとしたところ、妻に「そのまま使えるわけないだろ」とありがたいお言葉をいただき、Tシャツのデザインも新たに描き下ろしてもらいました。本当に頭が上がりません。RubyKaigiは妻によって支えられていると言っても過言ではないでしょう*1。発表のスライドの4ページ目の通りなのでこんなものをしれっと用意してあります。#kwsk01Tweet広告を非表示にするもっと読むコメントを書く2016-08-14子供の夏休みの宿題を手伝うお父さんお母さんのためのGemを作った全国のお父さん、お母さんエンジニアの皆様お待たせしました。事の始まりなんか弊社CTOが困っていた小学3年生で習っている感じ以外を使っていたら自動的に開いてくれるツールがほしい。事情はよくわからないが、恐らく子供の宿題を手伝うやなんやかやで、子供が書いたっぽい文章にしたいがために感じ漢字をよろしくしたいのであろう。無いのであれば作ればいいのである(キリッというわけで作ったgithub.com特定の学年の小学生が習っていない漢字をひらがなに変換するGem、名づけて「Furiganize」。オプションに学年を指定することができる。要YahooAppId。僕に子供はいないのでドッグフーディングはしておらず使い勝手のほどは知らない。小学三年生が書いたこのぶんしょうはちみもうりょうとするだけで子供が習っていない漢字をひらがなに変換してくれる。無駄にSTDINからも読めるようにしておいた。解説といってもなんのことはなく、Yahooのルビ振りAPIを叩いているだけである。developer.yahoo.co.jp当初は学年ごとに習う漢字の辞書とMeCabなどの形態素解析を組み合わせて作ろうとしたが、調べている内にドンピシャなサービスがあったので楽した。返ってくるのでそれらを連結しただけである。}.map(&:text).joinとしているだけ。#cmdevio2016年8月2日に実施された「実践SERVERLESS」に参加してきました。会場は目黒雅叙園にあるAmazonさんのオフィスでした。周りに珍しいポケモンはいませんでした。classmethod.connpass.com雑ですが以下参加メモ。資料は公開されしだい更新します。Confで発表されたAWS支援のOSSSwaggerHubライクAWS謹製ということでFlourishというものも近い将来にリリースされる予定です。詳細はまだ言えませんが、先ほどのChalice同様OSSとして公開される予定ですー。Gatewayサポートと言いつつ、一部APIをサポートしていないケースがあったりするのだがどうしているか実際にそのケースはある。Identity連携でより多くの機能が使える自分のビジネスに沿うやり方でサーバレスに質疑応答Emailのメッセージに日本語入れて保存できない?(会場で実際に試して)できないですね。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。