自宅の通話環境を整備した
背景
このイベントに参加するにあたって通話環境を改善したときのログです。
今は普段は3000円ぐらいのヘッドセットをつけて会社のミーティングなどに参加していますが、顔の周りがゴテゴテしているのでやめたいです。理想はいい感じのマイクを買って顔出しゲーム配信者的な環境を手に入れることです。
ゴール
- 何かしらのマイクを買って運用する
- マイクは仕事用の MacBook Pro と私物の MacBook Pro を繋ぎ変えられるようにする
- あまり生活音は拾わず自分の声だけ拾ってくれると嬉しい
買ったもの
マイク
マイクの予算を1万円前後と見ていたのと、ワイヤレスイヤホンは audio-technica 製のものを使用していたのでこちらを購入しました。
購入したマイクがコンデンサーマイクだったので、こちらのケーブルも購入しました。 www.amazon.co.jp
ミキサー
ミキサーもマイクと同様によくわからないので、インターネットでおすすめされていたこちらを購入しました。
スタンド
マイクにはスタンドが付いてないことを知らずに慌ててこちらを購入しました。
最初はこのスタンドを運用してました。しかし「声が遠い」とのフィードバックをもらったのでマイクの位置を顔に近づけるためのスタンドを別途購入しました。
その他ケーブル類
マイク関係のケーブルを一切持っていなかったので、適当にそれっぽいやつをたくさん購入しました。
感想
ミキサーから生えている USB Type-C のケーブルを MacBook Pro に挿せば電源が入りマイクとイヤホンが使える環境が手に入って満足です。
マイクの音は前よりはマシになったけど遠いというフィードバックをもらっています。おそらく部屋鳴りな気がするので、部屋にカーテンを導入するなどして防止することを検討しています。
2021年 ふりかえり
去年のやつ
OSS 関係
https://github.com/issues?q=author%3Aodanado+archived%3Afalse+-user%3Aodanado+-user%3Aodan-sandbox を眺めて思い出深いやつをピックアップ
shibayu36/merged-pr-stat
仕事で shibayu36/merged-pr-stat を使ってリードタイムの定点観測をしている関係でいくつかプルリクを投げた
リードタイムの内訳がわかるとなにか見えてこないか?という話になって投げたやつ
リポジトリを眺めていて、図があると単語がわかりやすいよねって気付いたので README を更新したやつ github.com
nuxt/eslint-config
仕事の Nuxt.js を使っているプロジェクトで eslint 周りの設定をいじっているときに、yarn create nuxt-app
直後でも eslint のエラーが発生することに気付いたやつ
eslint の config をいじればすぐ直るのはわかってたけど、いきなりプルリク投げてもなあという気持ちになったので issue でお伺いを立てた github.com
数日過ぎたけど特に返事がなくて、他のユーザーから :+1: をもらっているのもあって、プルリクを作った。しばらく経ってからマージされた。コアチームは Nuxt.js v3 関係のタスクで忙しかったのかな github.com
aspida/pathpida
副業先で pathpida の検証を行う機会があって、検証中にバグを見つけたので報告したやつ
起票から修正まで爆速ですごかった
nulab/backlog-js
仕事で Backlog の SDK をちょっと触ることがあって issue 立てたりプルリクを投げたりした
GitHub Actions に migration する issue が生えたまま着手されてなかったので、やるだけだしやるかと思ってやった
非推奨なメソッドは @deprecated
アノテーションがあるとわかりやすいので issue でお願いしたやつ。爆速で対応してもらえた
レスポンスの型注釈が全部 any
になっているので、具体的な型がほしいと思って issue を立てたやつ。けど作業できてなくて申し訳ない...。
github.com
nuxt/vite
Vite がリリースされてから、Nuxt.js の対応はいつなんだろうってワクワクしていたので、リリース直後に趣味プロジェクトに導入してみてエラーを報告したやつ
Nuxt.js v3 の正式リリース楽しみですね
dethcrypto/TypeChain
仕事で使っていて、あれなんか型が変だなって気付いて issue 立ててからプルリクを投げたやつ
reviewdog/errorformat
reviewdog を使用して厳しい tsconfig や eslint rule を段階的に適用する方法の紹介 を書くために reviewdog を触っていてバグを見つけたので報告したやつ
errorformat
のことはよくわからないけど、再現条件と細かく書いたのでこれぐらいの情報量があれば修正されるやろ〜って思って issue を作った。実際すぐ修正されて助かりました
reviewdog のオーナーがスプラトゥーン関係の知り合いなので、見たことあるアイコンだなって思いながらコミュニケーションを取ってました
仕事
入社当初から目標にしていた役職を今年の夏に得て肩書的にも「もう新米じゃないんだな〜〜」って気持ちになった1年でした
色々大変だけど来年もがんばります
アウトプット
もともと 記事一覧 - odan blog をメンテしていく予定だったけど、Zenn のスクラップ機能がリリースされてからはスクラップに、記事の素振りのメモなどを残していくようになりました
Tweet をする感覚でどんどんコメントを書いていけるので助かってます
スプラトゥーン
今年嬉しかったことは次の3つ
- XP26達成
- 大王戦で優勝
- 固定チームを作って大会に出た
XP26達成
XP24→XP25の期間が長かっただけに、思っていたより早くXP26を踏めて嬉しかったです。他のルールもXP25を何回も踏めるようになってきたので、全体的に今年1年間でスプラはうまくなったなと実感した1年間です。
XP25前後になると対面全然勝てず試合にも勝てない、のが来年の課題で、もう一度XP26を踏んでXP27にも挑戦したいと考えています。
大王戦で優勝
スプラトゥーンの社会人コミュニティの Splathon 内部で開催されたウデマエ制限付きの大会で優勝できました。今回が第三期で、第一期が準優勝、第二期が優勝だったので今回も良い成績を収めることができてよかったです。
コミュニティ内部の大会は練習相手に何度も凸って、ステージの特性や人ごとに対面のアプローチを学習していくタイプなんですが、今回はあまり練習時間が取れずどうなることやらと思っていましたが、無事に結果に繋がりました。
次も開催されたら三連覇を目指したいです(そろそろ永世称号もらえる??)。
固定チームを作って大会に出た
↑のコミュニティ内部の知り合いを集めて固定チームを作って大会に出ました。
勝っても負けても楽しいので楽しいです。
ISUCON11 予選 参加記
結果
チーム「ひとは」で参加して、競技中のスコアの最高値は23308、結果は失格でした。
ISUCON11 オンライン予選 全てのチームのスコア(参考値) : ISUCON公式Blog
環境情報の確認に失敗: セキュリティグループへのルールの追加
:cry:
isucon-env-checker
を実行したのは最初の一回だけだったので気付くことができませんでした。セキュリティグループは netdata 用に直接ポートを開けていました。今思うと nginx でプロキシするとかすればよかった。
チームの方針
言語選択は Node.js でした。普段 Perl を書いているメンバーもいましたが TypeScript をかけるメンバーのほうが多いためこの選択になりました。
用意されているサーバ3台について、夕方まではそれぞれのメンバーが並列にタスクに取り組みスコアを改善し、夕方以降に複数台構成にスイッチすることでリソース効率を最大化する方針を採用しました。
担当領域については明確な分担はなくお互いがなんとなくタスクを取っていました。ただ、パフォーマンス改善のアイディア出しやタスクの優先度付けは自分が行うことで全体の進行を調整していました。
開発のフローは、GitHub Project でバックログを作成、変更をブランチを切ってプルリクを作成して、master にマージする流れでした。プルリクを作るのは GitHub Project の Automated kanban
のためで、特にレビューはしていません。
個人でやったタスク
- NewRelic の有効化
- 慣れてないのもあって使いこなせなかったです
- 8時間という短い競技時間でうまく使いこなせてたチームはあったんでしょうか...?
- 練習ではかなり勉強になったので良かったです
- デプロイスクリプトを書く
- いつもの
- ただテンプレ化できる作業なので、事前に準備しておきたいと思いました
- kataribe を入れる
- いつもの
- 静的ファイルを nginx から返す
- SPA なので
try_file
を使うのがコツ
- SPA なので
- 画像ファイルをローカルに保存する
- セッションの関係で単純に nginx から返すことはできなくて、アプリから返すようにしていました
- 結局スコアは改善しなかったのでマージはしませんでした
X-Accel-Redirect
については知識はあったけど、うまく引き出しから引っ張ってこれなかったのが悔やまれる...
- 複数台構成にする
ふりかえり
競技終了直後にチームメンバーでふりかえりを行いました。その内容 + 個人的なものを書いていきます。
- 担当分野を決めておく
- app 担当、ミドルウェア担当的な感じ
- 自分はもっと司令塔ポジに集中するべきだった
- 競技後半手を動かしすぎて考える時間が足りなかった
- ツール群はコマンド1つでインストールされるようにしておく
- nginx とかの config はサーバごとに Git 管理するではなく役割ごとにする
config/isucon1/nginx/nginx.conf
のように管理していましたconfig/nginx/nginx-primary.conf
を管理してデプロイ時によしなに配るほうが良さそう
- 複数台構成にするのは初手でやったほうが良かったかも?
- 1台構成と複数台構成でのスコアの出やすさは違うので、最初から複数台構成にして仮説検証のサイクルを回すほうが正確かも
- 1週間前ぐらいに一度集まって予行演習する
- コア数が2だったので pm2 を導入したほうが良かった
- そもそも pm2 の素振りもしたことがないのでやらないといけない
- 各施策の KPI をスコアにしない
- 前日はよく寝る
来年に向けて
チームメンバーは来年の参加も前向きだったので来年こそ予選突破を目標にがんばります。
2020年 ふりかえり
以前のやつ
個人開発
- 人向けに何か開発することがなかった
- 難しいしモチベーションが続かない
ブログ
- https://blog.odan.dev/ を作った
- 会社のブログにたまに記事を投稿するようになった
情報収集
- Twitter/はてぶにつきっきり
- RSS リーダーを見る習慣がほしいけど難しい
- 本は読めてない
- 試し打ち
- 気になることがあるたびに https://github.com/odan-sandbox でちょいちょい
OSS
- こっちに書いた
GitHub の草
上半期はいい感じに草を生やせていたけど、下半期はスプラトゥーンと真面目に向き合ったのが原因で枯れがちになっちゃった
来年
- 個人開発
- 必要な範囲で OSS として何か作り出せていけばいいかな
- ブログ
- ネタはあるけど書くのが面倒になって放置パターンが多いので、いい感じに頑張りたい
- OSS
- めんどくさい楽しようという方向に流されると issue 作ったりプルリク投げたりしなくなっちゃうので、いい感じに頑張りたい
- 情報収集
- RSS リーダーを自作したいと構想して2年が過ぎた、いい感じに頑張る
- 本を読む
- いい感じに読む
- 1年、記憶持たないので半年か四半期単位でふりかえりたい
- GitHub の草
- 毎日でなくてもいいけど、日々 public repository にコードを書いて残していきたい
- ネタ帳を hackmd に置いてるんだけど使いにくいし見にくいので GitHub に移す予定
2020年ブックマークランキング
odan’s diaryの2020年ブックマークランキングベスト5(累計47ブックマーク)
generated by 年間ブックマークランキングジェネレーター
2020年の OSS 活動ふりかえり
年末なので
issue
Can't lint .ts files when use vue-eslint-parser · Issue #864 · microsoft/vscode-eslint
- vscode-eslint の v2 がリリースされた次の日に発生した不具合を報告した issue
- vue-eslint-parser を使っていると
.ts
ファイルが lint されなくて困っていた- 英語がまずかったのか問題の意図を伝えるのが大変だった...
/static/bootstrap/css/bootstrap.min.css が 404 · Issue #13 · perl-users-jp/perl-users-jp.github.io
- 会社で perl-users-jp の改修やってるって話を聞いてコントリビュートしたやつ
https なサイトでプルリクの内容をプレビューしたい · Issue #24 · perl-users-jp/perl-users-jp.github.io
VTI Error: Cannot find module · Issue #1732 · vuejs/vetur
Using an index type generates an object type · Issue #646 · nestjs/swagger
- nestjs/swagger は会社で使っていて、その中であれ?って思う挙動があったので issue を立ててみたやつ
- 実際は仕様で close された
A type of web3-eth is incorrect · Issue #3483 · ethereum/web3.js
- JS だと
default export
されているクラスが、TS だとnamed export
されていて立てた issue - 明らかにバグだけど影響範囲とかあるので、このままらしい
- TS で web3.js を使うとたびたびつらい思いをする
TravisCI is failing · Issue #387 · GoogleChrome/rendertron
- prerendering を試してみたくて rendertron の素振りをしていたんだけど、どうやらずっと CI が落ちているみたいで立てた issue
- この後 CI をグリーンにするプルリクも投げた
- CI が red なまま開発する OSS もあるんだなあってちょっとびっくりした
- テストで GCP にあるプロジェクトの DB を参照していて、なるほどなとなった
- 今見たら GitHub Actions になってた
Add an option to disable repos.createCommitComment
· Issue #126 · nwtgck/actions-netlify
- actions-netlify は GitHub Actions から Netlify にデプロイするやつ
- デプロイするたびにコメントがついてメールが来ていたので、無効化するオプションがほしいと思って issue を立てた
account.hashMessage
is incorrect with non-ASCII characters · Issue #3523 · ethereum/web3.js
- ASCII に含まれない文字を関数に渡すと正しく処理されないバグ
"🤗".length
は 2 だが、Buffer.from("🤗", "utf8").length
は 4 なことに起因するバグだった- 文字コード難しいね
エラー発生時にユーザーにエラーが発生したことを伝える · Issue #20 · mak4026/splathon_ladder_web
- スプラトゥーンのコミュニティの Web アプリで、エラーが発生していることがユーザーに届かない仕組みだったので issue 立てた
- このあとプルリクも投げた
createAt/updateAt is of different types for CSR and SSR · Issue #114 · nuxt/content
- nuxt/content がリリースされて、すぐ試したらバグを踏んで issue 立てたやつ
- Date オブジェクトが JSON に変換されるときに文字列になるんだけど、その時の方式がブラウザと node.js で異なるのが原因だった気がする
generate sitemap.xml · Issue #386 · nuxt/content
- nuxt/content でブログ作っているんだけど、sitemap もいい感じに生成してほしいと思って立てた issue
- 結局機能追加とはならず、ドキュメントに sitemap 生成の例が追加されるだけになってしまった
- 自動生成については sitemap-module の方で議論が進んでいるみたい...?
commit lock file for PetAdoptions/cdk/pet_stack · Issue #28 · aws-samples/one-observability-demo
- Observability に興味があって、AWS の workshop を試していたんだけど、サンプルコードに lock file がなくて動作せず、lock file を push してくれという issue を立てたやつ
- 反応ないし、似た問題を抱えている人もいないのでみんな困ってないのかな
The Japanese translation of creating-a-composite-run-steps-action.md is wrong · Issue #751 · github/docs
- GitHub のドキュメントの日本語ページの code block とかがすごい壊れていたので issue を立てたやつ
- 手動で直してプルリクを投げようかなって思ったけど、どうやら自動翻訳らしく issue 立てるだけで良かった
- 今見ても日本語ページ壊れてるしいつ直るのかな...
truffle-v5: Some properties of Truffle.ContractInstance
are missing · Issue #315 · ethereum-ts/TypeChain
- TypeChain が生成する型のプロパティが不足していたので立てた issue
- そのうちプルリクも投げる予定
プルリク
https://github.com/issues?q=is%3Apr+author%3Aodanado+archived%3Afalse+-user%3Aodanado+-user%3Aodan-sandbox を眺める (飽きてきたのでピックアップするだけ...)
DefinitelyTyped 系
- 今年初めて DefinitelyTyped にプルリク投げたし、
@types/keccak
は初の Author な型定義になった - 今見たら週間 3000 Downloads ぐらいあるらしく嬉しい
ethereum/web3.js: Ethereum JavaScript API
- web3.js の provider は構造的部分型を考えると
send
メソッドを持っていればいいんだけど、型定義がそうじゃなかったのでプルリク投げた
feat(markdownit): add types of $md by odanado · Pull Request #376 · nuxt-community/community-modules
- 型定義がなかったので投げたやつ
- 先に issue 立ててお伺いを立ててからのほうが良かったかな
docs: add comma by odanado · Pull Request #2533 · vuejs/vetur
- Vetur の新しいバージョンがドキュメントと共にリリースされたんだけど、ドキュメント中のコードが文法的に invalid だったので修正のプルリクを投げたやつ
まとめ
第二期 大王戦のふりかえり
この記事は Splathon vol.1 Advent Calendar 2020 の11日目の記事です。
大王戦 とは
Splathon 内で開催されているウデマエ別の大会です。この大会は大王/王子王女/将軍の3つの Tier に分かれていて、自分が参加した大王 Tier は XP24 後半から XP27 後半までのメンバーが参加していました。開催期間は約3ヶ月間とちょっと長めの大会です。
この大会は、予選ではナワバリ含む全てのルールと指定8ステージで、各チームが総当りで4先の対抗戦を行い、決勝では予選リーグ1位と2位がフェスステージを含む5先の対抗戦を行い、優勝チームを決めます。
チームはウデマエが均等になるように組まれて、自分は弱陰性というチームで参加していました。
チームメンバーの紹介
わたこさん
- L3 を使う弱陰性の前衛
- 気付いたら前線キルを重ねたり、スフィアでヘイトを稼いでいることが多かった
- 大王戦途中からジェッパを克服したらしくステージに合わせて L3D を持てていてすごい
としおさん
- スシべ/ZAPを使う弱陰性の中衛
- サポートが光るいぶし銀
- イノシシになりがちな自分を「スペシャル溜まるからちょっとまって」という掛け声で引き止めてくれていた
ちゃおまるさん
- お風呂を使う弱陰性の中衛
- モズクの網上のスピナーにお風呂で撃ち勝つ謎性能
- チームが慌てていても落ち着かせてくれる精神的支柱
はやぶさコーチ
- 弱陰性のコーチ
- ナワバリ勢で、主にナワバリの勝ち方について教えてもらった
- チーム練習の俯瞰視点やフィードバックをいただきました
- 居酒屋配信によって大王戦自体を盛り上げてくれた
odan
- プライムを使う弱陰性の前衛
- ボトムと呼ばれるチームで一番 XP が低い人
- 時折イノシシモードになって簡単にデスする
チームの特徴の紹介
編成
弱陰性は L3 + プライム + スシべ or ZAP + お風呂を基本編成としていて、ほとんどのステージ、ルールでこの形でした。この編成に行き着いたのはチーム結成から1週間と他のチームと比べて早く、チームとしての練度を高めることが出来ました。この編成で行こうと強く推してくれたのははやぶさコーチだったので、その点でも感謝です。
勝ちパターン
勝ちパターンとしては、スシべとお風呂が基本的に偉い動きをしながら盤面を維持しつつ、L3 かプライムのどちらかが上振れて大きくカウントを進めることが多かったです。L3 かプライムのどちらか一方がうまく動けていなくても勝ちに繋げられていたのが、勝ちを重ねることが出来た要因じゃないかと考えています。
勝負強さ
自分で言うのはあれですが、弱陰性は勝負強いチームだったと思います。ほとんどの予選と決勝で流れを掴むために絶対に勝たなきゃいけない試合を、ルルステの運や個人の上振れなどによって取り切れていたと思っています。
予選と決勝でのふりかえりでは、この勝負強さを中心に見ていきます。
ふりかえり
やってない時もありましたが頻繁にふりかえりするチームでした。
- 練習後に俯瞰視点を Watch2Gether を使ってみんなで見る
- 「スプラノート」と呼ばれる Google Docs に練習後に非同期で練習の各試合の気になるポイントなどをお互いに書き込む
このふりかえりによって、各ステージで誰がどのタイミングでどこのポジションに入るかの共通認識が構築できて、勝ちにつながったと思っています。
予選
vs 濁点
初戦で緊張していましたが勢いで勝ちきることができた試合でした。特にナワバリで L3 の抜けから流れを掴むことができて、その後の試合もその調子良く進めることができたと思います。
vs もちココア
予選で唯一負けた試合でした。バケとホクサイの対面の圧が強くてどの試合も苦しい展開でした。
初戦のアサリと5戦目のエリアを落としたのがかなりきつかったです。初戦のアサリは最後の最後で相手にワンちゃん掴まれる動きを許してしまったのと、5戦目のエリアは長射程がいない編成えで運悪くモズクを引いてしまったのが敗因です。どっちかでも勝っていればまだワンちゃんあったのかなと思います。
vs 上振れ
初戦は落としたもののその後4本取ることができて、4-1 で勝つことができた試合でした。
ターニングポイントとなった試合は、2試合目のアジフライナワバリだと思っています。プライムで謎に裏抜けしてしまったり最後ナイス玉を抱えたりで戦犯ムーブを重ねてしまっていましたが、0.8 % 差でギリギリ勝つことができて流れに乗れました。
vs 麦わら
上振れ戦と同様に初戦のガチアサリを落としたものの、その後4本取ることができて、4-1 で勝つことができました。
3戦目のガチヤグラでモズク農園を引けたのがかなり大きかったです。もし仮にガチエリアやナワバリでモズク農園を引いていたらスプスピが暴れていただろうし、他のステージでヤグラを引いていたらバケが出てきていた可能性があり、もしその場合負けていた可能性はあったと思います。ここで、ルルステの運もあって勝つことができて、流れに乗れたと思います。
vs 母性
結果的に 4-0 とストレートで勝つことができましたが、編成的にエクキャンが可能な相手で、緊張から試合当日は会社を早退するレベルでビビってました。
4-0 で勝ち切ることができた要因はナワバリでコンブを引けたことだと思っています。試合までの1週間はバトロボさんにお願いして対キャンプの練習を繰り返していて、その中で特にコンブナワバリは重点的に練習していました。そのコンブナワバリを本番で引けたのはとても運に恵まれていたと思います。自分が L3 ベッチューを使って左通路のキャンプを抑え込めていたのはこの練習のおかげでした。
vs 7つの滞在
勝てば決勝への進出が確定する試合で、この日も緊張から会社を早退していました。結果は 4-1 で勝つことができて決勝行きを決めることができました。
この試合は、コンブナワバリとアジフライヤグラで勝ちを掴めたのが大きかったです。コンブナワバリは前日から「明日の試合でコンブナワバリを引いたら、L3 ベッチューじゃ相手のななさんの L3 に対面で勝てないだろうからプライムを持ってみよう」と考えていました。当日運良くコンブナワバリを引くことができて、狙いのプライムを持って勝つことができました。
アジフライヤグラでは延長戦で危うく逆転負けしそうになりましたが、運良く最後にヤグラに乗ることができて勝つことができました。
これらの試合のどちらかでも落としていたら危なかったと思っています。
決勝 vs もちココア
決勝の相手は予選で唯一負けていたもちココアで、予選のリベンジとなる試合でした。
勝ちの流れを掴めたのは4戦目のモズクホコでした。このモズクホコは1戦目は取れたものの、2戦目と3戦目を落として悪い流れの中の試合でした。
試合の中でも先に致命傷レベルのカウント27まで取られてしまい絶体絶命でした。しかしわたこさんの偉い動きもあって紙一重で逆転勝ちすることができました。この試合を落としていたら流れで負けもあったので、かなり大きい1勝でした。
終わりに
第二期大王戦を優勝することができました。個人的には前期の第一期大王戦は惜しくも決勝で破れていたのでそのリベンジを達成できて良かったです。 プライムとかいう塗りが弱く味方負担になりがちな武器を持たせてくれたチームメンバーに感謝です。
前回まで同様とても楽しめた大会だったので次もあれば参加したいです。