2020年を振り返る
毎年恒例。去年のふりかえりはこちら。
WFHのために自宅作業環境を整備した
2月後半あたりから外出自粛によりWFHが始まり、それ以降オフィスに行った回数も2回ほどしか無かった。そのため自宅の仕事環境整備にお金と労力を費やしていた。その時にまとめた記事がこちら。
今のところさらに買い足したものもないのだけれど、もうひと回り大きく、4K対応でtype-Cで繋げられるディスプレイとアームはあってもいいかな、と思っているので検討中。
kawasaki.rbがオンライン開催になりパーフェクトRuby読書会が完結した
こちらも外出自粛以降オンライン開催となった、引き続きブログを寄稿しているkawasaki.rbですが、7年に渡り毎月実施していたパーフェクトRuby読書会を、Part 3を読み終えたところで完結としました。お疲れさまでした!
ついに7年の歳月を経て、パーフェクトRubyをほぼ読み終えました。これでメタプログラミングもできるようになった、はず...! #kwskrb https://t.co/TdDUiX8AE0
— kawasakirb (@kawasakirb) 2020年10月28日
コミュニティ自体は引き続きオンラインで継続し、毎回Rubyに拘らないテックなトークが集まってくるのでとても楽しみにしています。
そして本日実施された91回目のkawasaki.rbのブログを書きました。セッションではGoで書いたコードをP/InvokeでC#から呼び出した話、Pythonでいい感じにバッチをprefectで作ってみた話がありました! #kwskrbhttps://t.co/8hfUNze7An
— ぺら (@Peranikov) 2020年12月23日
Ruby要素どこ
— ぺら (@Peranikov) 2020年12月23日
🍺
クラフトビール好きの同僚達に勧められリモート飲み会のお供に買うようになった。おかげですっかりHazy IPAよりのスタイルが好きになった。
ビール以外も含むログはここから確認できる。
2020年は多くのビールに出会うことができたが、お気に入りの2本を挙げようと思うと次の2つだと思う。
FairState Double Universe Hazy DIPA
はなきん pic.twitter.com/juXMo8cXPG
— ぺら (@Peranikov) 2020年11月10日
うちゅうブリューイング FRESH HOP DDH RUSTIC IPA
はなきん pic.twitter.com/zJf7vqolnL
— ぺら (@Peranikov) 2020年9月2日
投資信託を再開した
眠らせていた楽天証券のアカウントを掘り起こし、遊んでいた貯金とNISAつみたてで投資信託を再開した。以前はこの本に従って日本株&海外株を50/50で運用していたが、最近は下記の記事を参考にして先進国/新興国株で運用している。
インドア
外出自粛で家でのボドゲがやりづらくなったのでオンラインで何かできないかしばらく考えながら実践してみていた。
BoardGameArenaはずっと昔からあるオンライン上で対戦できるBGAだが、アナログ派だったのであまり使っていなかった。自粛中は使い機会が増えたので課金プレーヤーとなった。
そんなことをしていたら会社から全社イベントでGMやれって言われたりしてた。
全社員向けのオンラインボドゲ会開くからボードゲームアリーナでゲームマスターしてくれないかって依頼がボドゲ部にきた。これは月額を会社の金で払える実績解除のチャンスだろうか
— ぺら (@Peranikov) 2020年5月11日
PS4やSwitchがバカ売れしたのもあり、オンラインで遊ぶ人口が増え福岡の拠点などの離れた同僚とも気軽に遊ぶ文化ができたのは良いことだった。2020年はだいたいFall Guysか桃鉄かAmoungUsしていた。なんだかんだオンラインで遊ぶのであればコンシューマーゲームの方が楽しいというところは悲しかったりする。
アウトドア
密を避けるためというわけでもないが、年の後半はアウトドア要素が多めになった。それまではスニーカーで登山に挑んだりしていたが、ちゃんとした登山靴を購入したので来年も引き続き山に登っていきたい。撮影機材としてGoProも注文したぞ。
登山靴買いました。マムートです。 pic.twitter.com/CW1r9xcP22
— ぺら (@Peranikov) 2020年11月3日
肉を焼いていきます pic.twitter.com/F5iQPDbrmR
— ぺら (@Peranikov) 2020年11月23日
大野山登ってきた pic.twitter.com/G19L5EVZIn
— ぺら (@Peranikov) 2020年11月28日
大岳山登ってきた pic.twitter.com/kEfNiFVxid
— ぺら (@Peranikov) 2020年12月12日
滑りました pic.twitter.com/JwIQo6YaWF
— ぺら (@Peranikov) 2020年12月19日
まとめ
2020年は環境が変化し混乱も大きく大変な事も多かったが、総括としてはその環境にどう適応するかを考えながら生活すること自体に楽しみを見出だせたと思う。この混乱はまだまだ続きそうであるが、余裕と工夫を失わないようにしていきたい。
認定スクラムマスター (CSM) を取得するまで
CSMとったぞ! pic.twitter.com/td0gyU6O04
— ぺら (@Peranikov) 2020年11月22日
2020年11月21, 22日に認定スクラムマスター (CSM) セミナーを受講&取得したので記録を残しておきます。
アジャイル/スクラムと私
アジャイルやスクラムは8年前くらいからゆるく実施しながら書籍を通じて独学しており、コミュニティとしては今はもう開催されていないアジャイルサムライ横浜道場に3年ほど通っていた。
今の現場では全社的なスクラムの推進と外部アジャイルコーチのサポートもあり、チーム全体としてもスクラムのモチベーションが上がってきたのでこれを機にCSMを受けてみることにした。
申し込み
セミナーの申し込みは scrumalliance.org から行った。CSMセミナーは頻繁に行われているが、自分が申し込もうとした時は土日(10:00 ~ 16:00)開催しかなかったので3連休に組み込むことにした。
事前準備
セミナーを受ける前に下記を読んでおくこと、という案内があったので読んでおく。
スクラムガイドは受講した2020年11月に改定があったので読み直すタイミングとしてちょうどよかった。
スクラムガイド
https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese.pdf
スクラムマスターチェックシート
https://scrummasterchecklist.org/pdf/Scrum-Master-Checklist-jp.pdf
セミナー
講師は Joe Justice さんだった。オンライン開催だったためワークショップは zoom & miro を使用して行われた。基本英語だったが、通訳の方が都度翻訳してくれたので困ることはなかった。ワークショップは4人チームで編成され、内自分含む2人が経験者だった。アンケートで経験年数を書く欄があったので、おそらく経験者と未経験者がいい配分になるように組まれていたと思う。
おおまかなコンテンツの内容は以下の通り
1日目:
zoom & miro の使い方
オンライン開催なのである程度ここに時間を割く必要がある
スクラムボードについて
実際に各ワークショップをストーリーに見立て、進捗をベロシティで測っていく
スクラムの各ロールについて
PO、SM、ENについてのそれぞれの期待役割の説明を受け、ワークショップでは役割が書かれたカードをそれぞれのロールに割り当てながらディスカッションを行った。
予算確保ではなく資金調達(Founding)がPOの仕事になっていたところが質問にあがっていたが、スタートアップではPOが直接資金調達も行うことが多いことと、大きい会社ではExcectiveに掛け合うことに変わってくる、という解説をされていた。
Joeさんはメンバーそれぞれが顧客意識を持つためにロールはローテートすることをおすすめすると言っていた。下記はセミナーの中で流されたあるアメリカの量販店が行っている開発の様子だが、実際のサングラス売り場で顧客からフィードバックを得ながらその場で開発を行っている。強い。顧客もデイリースクラムに参加して意見を言っている。強い。
スクラムイベントと関係するメンバー、アウトプットについて
それぞれのスクラムイベントを矢印と図で表していくワークショップ。経験者で頭にイメージが湧いていてもそれを共同作業しながら図にしてくのは大変だったので、未経験者はだいぶ手こずったと思う。
見積もり
ロケットの組み立てを例に相対見積もりのやり方を学ぶワークショップ。普段自分たちが行っているスクラムと違ったところは、プランニングポーカーの結果を揃うまで実施するのではなくその平均値で決定するところだった。
下はCSPO(Certified Scrum Product Owner)の内容が15分でまとめられたとても良い動画。POが大事なのはNOと言えること。わかる....わかるぞ......
最後に、スクラムがビジネスに与える影響について下記記事を読んで100字程度でまとめる、という宿題が出され1日目は終了。
2日目:
Home work review
各人の宿題の答えをレビューし、各チームでサマリを書くワークショップ。
プロダクト製作体験
実際に作りたいプロダクトをチームで決め、ペルソナを想定し、魅力的な機能を定めそこからストーリーに落としていくというワークショップ。面白かったのは開発コストとしてのストーリーポイントだけでなくそのストーリーが生み出すバリューも求めて、Value / StoryPoint の式で優先順位を決めていくところだった。自分たちが回しているスクラムではSPだけを開発者が決めてValueは優先順位はPOが決めているので、ここの意識を全員が持てるとより価値の高いプロダクトを作っていける気がしている。
また、ストーリーを書く上では理由(WHY)が含まれているのが大事、とJoeさんは強く言っていた。わかる....わかるぞ.....
Sprint Review & Retrospective
スプリントレビューと振り返りについて学ぶセクションのハズだが、おそらく時間が足りなかったのでサラッと通った印象。振り返りではこのセミナーのGood/Moreを2つずつ挙げてvoteしたが、みんなmiroに苦しめられていた印象だった(わかる)
といったあたりで全行程が終了した。最後はロスタイム的にQ&Aが実施されたが、大規模な組織にたいしてどのようにスクラムを導入すれば良いかという質問が多く、ハイブリッドアジャイルという言葉も飛び交っていた。大変そう(こなみ)
試験
2日以内に試験案内についてメールが来ますということだったがその日の夜にはメールが来てたのでそのままの勢いで受けた。セミナーの中でも日本語は辛いぞ、と言われていたが興味で日本語を選択してみたら本当に辛かった。だが後日受けた同僚は英語でやったそうだがそちらでも質問形式になってなかったりとどのみち辛い、という話だったのでよくわからない。
正直このセミナーだけで試験をパスできるかは怪しいところで、ちゃんとスクラムガイドを熟読してから挑んだほうが良い(試験中も見ることは許されている)。
全体としての感想
そもそもCSMはスクラムをやり始めて少し経ったくらいに受けるとちょうど良いと思っているので、新鮮味というところだとそこまでなかったが、それでもちょいちょい疑問点は出てきたのでUnlearnして入門しなおすきっかけとしては良かったと思う。
残念というかもったいないな、と思ったところはオンライン開催なので休憩時間中はみんなマイク/カメラOFFにしてしまうので同じチームで現場のことについて雑談する時間が少なかったところ。ということを社内アジャイルコーチに言ってたらこんなイベントあるで、と教えてもらったので無事開催されるようなら覗きに行きたいと思う。
スクラムと負債とClean dayと
タイトルの元ネタ
Tl;Dr;
- ストーリーベースでスクラムをやっていると技術的負債の返済や他チームからの問い合わせ対応などが後回しになりがち
- 優先度は低いがやったほうが良いタスクを入れる箱を用意し、デイリースクラムで優先度を確認する
- それらを消化する日を定めてリズムを設け、リスクが放置される可能性を減らした
チームとスクラムについて
今のチームの構成とスクラムの進め方は以下のようになっている。
メンバー
- Product Manager: 2人
- Engineer: 5人
- QA: 1人
スプリントの長さ
- 2 week
行っているセレモニー
チームの主な業務
このチームでは主にCustomer Support(CS) member が使用する社内サービスの開発・メンテナンスを行っているため下記のような業務がある。
- 社内サービスの開発・リプレース
- CS memberからのサービスについての問い合わせ・バグフィックス対応
- 他チームからのDB -> micro serviceへの移行に伴うデータ取得先のマイグレーション対応
チームとしては1が主な目的なのでこれを積極的に推進したいが、2.3.のタスクも定常的に発生し、放っておくと他チームの業務を阻害してしまうものなので対応しなくてはならない。ただしこれらに時間を取られすぎるのもよろしくないというジレンマが発生する。
Chore Box (雑務ボックス) の用意と優先度確認のリズム
こういったタスクを放置するとのちのち大きな事故に繋がったりするリスクを恐れて、バックログとは別にChore Boxという箱を用意した。Chore という名前は弊社に来ている外部のアジャイルコーチから教えてもらった言葉で、顧客の価値に直結しないタスクやストーリーのことを指すとのこと*1 *2。
上記の2. 3. のようなタスクが発生したらこのChore Boxにいれ、翌日のデイリースクラムでスクラムメンバーにシェアする。そこで緊急性や優先度をディスカッションし、急ぎのようなら今のスプリントに差し込む。そうでなければChore Boxの中に置いといて後述のClean dayで解消するということにした。
Clean day
溜まったリファクタリングや問い合わせを処理するために、そのスプリントと関係無いことを行う日を定めてクリーンデイと名付けた。アメリカのロックバンドやカビを出すスタンドは関係ない。
— ぺら (@Peranikov) 2020年3月27日
Chore Boxに溜まったタスクを解消する日をスプリントの最初の金曜日とし Clean dayと呼ぶことにした。その日のデイリースクラム後にChore Boxの中身を振り返り、Product Ownerも交えて優先度を確認・各エンジニアにその日実施するタスクをアサインする。
金曜日とした理由はいくつかあり、まず弊社は金曜リリースが原則禁止なのでメインタスクのリリース間近などで左右されないこと、チームのミーティングが金曜に集中しているためスキマ時間を活用したい、などがある。
金曜がリリース禁止なのでClean dayで行った改修や施策もリリースできないが、それは翌週のどこかでリリースするということにした。とうぜんClean dayの1日だけでは終わらないタスクに当たることもあるが、それをClean day以外で引き続きやるかどうかは各メンバーに任せることにしている。これは一律禁止にせず、各々が考えたタスク間の優先度を尊重したい、という思いからである。
実施したみた感想
3回ほどClean dayを実施してみて良かった感じたことは以下のとおり
- 問い合わせなどを気づいた人ベースで消化していたものが、一旦チームで優先度を話し合い方針を定めるタイミングができた
- いつまでもスプリントに入ってるけど消化されず引き継がれ続けるタスクをChore BoxにいれClean dayでやってしまう、などの活用が生まれた
- Clean dayを定めたことでメインのタスクの進行を阻害せず計画的に進められるリズムができた
割り込み作業などで時間を取られ本来の優先度を見失うことやリスクが放置されることを防止したい、という本来の狙いからするとこの結果は概ねうまくいったと思っている。
Chore Box 第二のバックログ化問題
今抱えている課題としては、便利だからとあらゆるものを放り込んでいった結果Chore Boxが雑然としたタスクだらけになり管理が困難になるというところがある。今はまだそこまで健在化していないのでルールなどは定めていないが、厳しくなってきたら以下のようなことも考えていきたい。
なお本来であればプロダクトバックログをもっときちんと棚卸しするべきだが歴史が長いので確認の手が回っていない状況はある。一旦は回り始めたChore Boxの秩序を保っていきたい。
まとめ
弊チームの特徴と、それにまつわる現場の課題・解決策をまとめてみた。あまり綺麗なスクラムとは言えないと思うし改善するべき点もまだまだありそうだけどやっていき。
外出自粛によるリモートワークの生産性を上げるために買ったもの
幣チームでは昨今のコロナ禍により早くも2月の下旬からWork from Homeを行っていた。自分はある程度は自宅開発開発環境を整えていたものの、いざフルタイムで業務をしようとなると色々と足りないものがあったことに気づき、その改善を行ってきたのでその実績をここにまとめておくことにする*1。
PC周り
mac縦置きスタンド
ディスプレイは1つにまとめたいのでmacをディスプレイに繋いでいる時は基本的に閉じっぱなしのクラムシェルモードで使っているが、そのままデスクに置くと面積を食ってしまうので縦置きできるスタンドを買った。このスタンドは既に在庫切れとなってしまっているが、値段も高くなく木目調のデスクにとてもマッチしたので気に入っている。
ちなみに猫のステッカーは福岡天神にあるビアバー ビアキチ でもらったもの。
HDMI ハブ
プライベートではWindows/Ubuntuのデスクトップマシンを使用していたが、業務用のmacを持ち込んだのでディスプレイをスムーズに切り替えるために購入。リモコンも付属しているけどデスク下に置いており手が届くので使っていない。かつ入力を検知すると勝手にスイッチしてくれるので便利。
テレカン
Web camera
テレカンの度にmacを開いてカメラを起動するのが面倒だったので購入。現在だとwebcamもほとんど品切れになってしまったのでこのタイミングで買っておいてよかったと思う。macのカメラと比較すると画角が広くなったので無駄に自室が写ってしまうことと、複数人向けなのでマイクがそこまで指向性がないことを除けば特に問題はない。
自宅作業用のwebcam買ったらアーマードコアの頭部思い出した pic.twitter.com/RrxVk0fZNe
— ぺら (@Peranikov) 2020年2月28日
マイク
完全に自分に恩恵が無い趣味。3000円の割にパフォーマンスが良いと教えてもらい試しに購入。マイクから離れると音が小さくなってしまうらしいのでデスクに引っ掛けられるマイクスタンドとノリでポップガードも購入した。
それまではAirpods Proを使っていたが、常にmacと繋いでいるため切り替えをせずに済むようになったのが地味に嬉しいところ。同僚等々に検証してもらった限り音質は問題ないのだが、Google meetなどをしばらく繋いでいるとたまにザラザラとノイズが入る現象が起こってしまい、いろいろ検証した結果初期不良を疑い交換を検討中。
マイクスタンドにマイクが生えた pic.twitter.com/ooMfWreIVC
— ぺら (@Peranikov) 2020年5月3日
ネットワーク
自宅がソフトバンク光だったため、高速化狙いでIPv6を有効にするために光BBユニットオプション(月額500くらい)を付けた。ルーターも古いものを使っていてIPoEに対応していなかったので合わせて新調した。
IPv6オプション付けてルーター買い替えて無線でここまで出るようになった pic.twitter.com/JLeIdnsl7D
— ぺら (@Peranikov) 2020年4月12日
その他生産性向上のために買ったもの
iPad Pro + magic keyboard
なんとなく次新しいiPadが出たら買おうと思っていたら出たので購入。ついでにmagic keyboardも。全社向けの配信を眺めながらSlackを追ったり、テレカンしながらjamboardとApple pencilでオンラインのホワイトボードとして使ったりなどとサブ端末として地味に重宝している。
給付金が届きました pic.twitter.com/RVdWtjkxVY
— ぺら (@Peranikov) 2020年5月7日
Ankerのロボット掃除機
ルンバと迷ったがハイエンドでも値段が安く水拭きが可能、Ankerのファンといったあたりで購入。買ってから気づいたが規則的に外出することが無いためスケジュール機能を使う機会がなくなってしまった。スーパーに買物に行く前に手動で起動するというアナログな運用をしている。
届いた pic.twitter.com/3GeEIZybb5
— ぺら (@Peranikov) 2020年2月26日
PS4
高性能なDVDプレーヤー。nintendo switchが買えずどうぶつの森ができないところにFF7Rが出たので買ってみた。業務中のBGMとしてLIVE DVDを流すのにとても便利。
はいー pic.twitter.com/dwnDGXj8su
— ぺら (@Peranikov) 2020年4月17日
まくら
もともと持病に首痛があり、使っていた枕の高さが気に入っていなかったので以前Kawasaki.rbで紹介されていた首狩り族のネックピローを買ってみた。高さは気に入っており今の所満足している。名前のインパクトが強烈。
首痛が復活してしまったので以前 #kwskrb で教えてもらった首狩り族のネックピローを買ってみた pic.twitter.com/6jvOoSrySI
— ぺら (@Peranikov) 2020年4月9日
平沢進のCD * 8 / DVD * 3
今年の推しアーティスト。作業環境にはBGMが必須なため購入。PS4が来たことによりLIVE DVDを買うことにも躊躇しなくなった。
まとめ
自宅開発環境 3.0くらいになりました pic.twitter.com/UvV2aWmiQ9
— ぺら (@Peranikov) 2020年5月7日
というわけで本気でWork from Homeをやろうと思った時に感じたフラストレーションを解決すべく導入したアイテムを紹介してみた。思ったがここまで自宅を快適にしてしまうと二度とオフィスに行きたくなくなるのではという心配があり夜しか眠れない。ともあれ仕事の時間というものは人生の大半を占めるわけであり、そこに投資するということはつまり自分の人生を豊かにすることに他ならないという言い訳を思いついたのでここに残しておく。
*1:給付金を期待して購入してきたがいつのまにか10万円を超える出費になっているのは内緒だ
2019年を振り返る
毎年恒例ポスト。去年のふりかえりはこちら。
メルカリに入社して1年が経過した
本日11/1を持ちまして、入社してから丸一年が経ちました。今まで大変お世話になりました。まだお世話になります。 pic.twitter.com/hKKDu2q3Mu
— ぺら (@Peranikov) 2019年11月1日
11/1をもって無事一年が経過した。大きく分けて前半と後半が下記のアウトプットに現れている。
www.slideshare.net
メルペイ側のリリースが佳境だったので入社3ヶ月目でヘルプに行った。この時点のペイはまだスタートアップのようなカオス感があり、自分がアサインされたチームは開発を進めていくフローが整備しきれていない様子だったのでそこをまずやってた。そこで仲良くなったエンジニアとも最近ボドゲしたりしてるし結果良かったと思う。
後半はメルカリに戻ってきてやりたかったマイクロサービスをやってた。新しい技術のキャッチアップとスクラムマスターを同時にやっていたので技術的・組織的問題が同時に襲いかかってきて大変だったけどとても楽しかった。ちょうどアドベントカレンダーの募集があったのでついでにテックブログデビューした。
kawasaki.rb近況
去年時点で連続ブログ寄稿記録は途絶えてしまったが、今年は連続ではないが9本書いた。6年以上続けいてるパーフェクトRuby読書会はそろそろメタプログラミングが終わるのでそろそろ読み終わると思う。おそらく。多分。きっと。*1
ボードゲーム近況
84個だった。まだ買っても大丈夫 pic.twitter.com/LAuk9bh5gl
— ぺら (@Peranikov) 2019年12月1日
ボドゲ棚整理ついでに数えてみた。このツイート時点からさらに増えて87個になった。ついでにボドゲした回数も数えてみようと思ったけど毎週のように遊んでたので面倒くさくなってやめた。
弊社ボードゲーム部の部長を引き継いだ(二社連続)
— ぺら (@Peranikov) 2019年7月25日
ついでに言うとボドゲ部部長が育休に入るタイミングで次期部長のオファーをもらった。前職でもやっていたので経験から鑑みた抜擢だったのだと思う*2。なお部長業とテックリード業は少し似ていて別にその分野に一番詳しくなくても良い。部長業は部の運営や予算の用途方針を管理するのが主な仕事なので、どのボドゲを買うかやインスト(ルールを説明すること)を手伝ってもらう役目を持つメンバーが別にいると便利である。
さいごに
今年も襲い来るさまざまな問題に自分ができる手を打っていたら結果こうなったというアウトプットが多かったと思う。ボードゲームは100個を超えたら処分を考えていきたい*3。よいお年を。
graphql-schema-linterの結果をreviewdogに食べさせる🐶
これは kawasaki.rb #77 で発表する予定の記事です。
Tl; Dr;
- これを参考にlintの結果をformatする
- CIに設定書く
- 🐶に怒られるようになる
graphql-schema-linterを使いたかった
最近の業務では複数のマイクロサービスのレスポンスを束ねるBFF的な役割でgraphqlサーバーをフロントエンドの後ろに立てている。最近出たvvakameさんの薄い本で graphql-schema-linter が紹介されており、我々のプロダクトにも導入したいと思ったので早速実行してみた。
> ✖ 411 errors detected
こんなもの入れたらCI通るまでにいつまで掛かるかわからないだろ!いいかげんにしてください。こういうlinterを後からプロダクトに入れようと思ったらPRの差分にだけ当てたくなるのが人間ってものです*1。なのでみんな大好きreviewdogちゃんに食べさせてあげましょう。
reviewdogとは
reviewdogはPRの差分にCI上で実行したlintの結果が含まれていたらその部分にコメントを付けてくれる大変便利なツールです。プリセットとしてgolintやgovetが含まれていますが、lintの結果をformatしてあげることでどんなlintも対応することができます。
lintの結果をformatする
formatはreviewdogのInput formatを参考にします。graphql-schema-linterは結果をjsonで出力できるので、jsonを読み込んで一行ずつのフォーマットになるようにパースする下記のようなスクリプトをnode.jsで書きました。node.jsで書いたのはgraphql-schema-linterを動かすのに必要だったからで、何の言語で書いてもいいです*2。
'use strict'; // see: https://github.com/cjoudrey/graphql-schema-linter#jsonformatter // see: https://github.com/reviewdog/reviewdog#input-format const process = require('process'); process.stdin.resume(); process.stdin.setEncoding('utf8'); let input = ""; process.stdin.on('data', function(chunk){ input += chunk; }); process.stdin.on('end', function(){ const result = JSON.parse(input); result["errors"].forEach((err) => { // ex. comment_iowriter.go:11:6: exported type CommentWriter should have comment or be unexported const loc = err["location"]; console.log(`${loc["file"]}:${loc["line"]}:${loc["column"]}: ${err["message"]} (${err["rule"]})`) }); });
CIにconfigを設定する
.reviewdog.ymlに設定を追加していく。.reviewdog.ymlについてはこちらを参照。
# https://github.com/cjoudrey/graphql-schema-linter graphql-schema-linter: # これが何故か途中で出力が止まうので一度ファイルに吐き出している。恐らくpipeのバッファに引っかかっている。 # cmd: graphql-schema-linter schema/**/*.graphql -f json | node .graphql-linter/format.js cmd: graphql-schema-linter schema/**/*.graphql -f json > graphql-schema-linter.json; cat graphql-schema-linter.json | node .graphql-linter/format.js errorformat: - "%f:%l:%c: %m"
怒られてみる
以上で設定は完了です。よろしくないschemaを書いて怒られてみましょう。
無事に怒られが発生しました。ちなみにreviewdogさんはcheckstyle-formatなら直接読み込んでくれるそうで、linterがこのformatに対応しててくれると自分でパースをしなくて済みます。
ぜひお好みのlinterをreviewdogに食べさせてみてください 🐶
お邪魔者(Saboteur)4人向けバリアントルール和訳
お邪魔者という正体隠匿型の有名なゲームがあります。このゲームのプレイ可能人数は3-10人なのですが、BGGでは推奨は5-10人、ベストなのは7-8人と言っています。3-4人があまりおすすめされない理由としては、進行を妨害するお邪魔者側が1人になり不利になりがちというところが大きいと思います*1。BGGのフォーラムに4人用ルールを提案している方がいらっしゃったのを見つけたので和訳してみました*2。個人的には5-6人ルールでも適用してみると面白いかもと感じます。
ルール
- 3つ目の役割、「わがままドワーフ」を加える。「わがままドワーフ」は、自分で金を掘り当てた時だけ報酬を得られ、かつ他のプレイヤーに報酬を分けなくて良い。
- 役割の内訳は金鉱掘りが2人、お邪魔者が1、わがままドワーフが1
- 地図カードを3枚除外する
- 真ん中の財宝カードのみスタートから8枚分離す(つまり他の財宝カードから1枚のトンネルカードで到達できなくなる)
- 他のルールや勝利条件は変わらない
得点
通常のルールに則っても良いですが、次のルールをおすすめします:
- お邪魔者が勝利した場合: 3枚のランダムな金塊カードを取得する
- わがままドワーフが勝利した場合: 3枚のランダムな金塊カードを取得する
- 金鉱掘りが勝利した場合: 4枚のランダムな金塊カードを通常ルールに従って分配する(金を掘り当てたプレイヤーが1番目と3番目、そうでない金鉱掘りが2番めと最後のカードを得る)
3ラウンド終了後、もっとも金塊を多く所持していたプレイヤーの勝利。同数の場合、最も多い金塊カードを持っているプレイヤーの勝利。
- 出版社/メーカー: AMIGO
- メディア: おもちゃ&ホビー
- 購入: 8人 クリック: 26回
- この商品を含むブログ (14件) を見る