Vue Fes Japan 2023 参加記

vuefes.jp

参加のきっかけ

最近仕事で Vue2 + Vue CLI から Vue3 + Vite への移行を検討するタスクを担当していて、Vue について思いを馳せることが多くなっていました。その中で Twitter で Vue Fes Japan 2023 の告知ツイートを見て参加しようかなという気持ちになりました。

自分にとってのオフラインの Vue Fes Japan は、2019年にスタッフ参加する予定だったのが台風で中止になったときから時計の針が止まっていたので、それを解消したいという思いもありました。

感想

  • Vue3 に移行完了している人が多かった
    • Vue3 に移行した人は挙手して〜みたいな質問に対して手を挙げている人が多く、事前に持っていた印象を上回っていた
  • Volar.js 面白そうだし、何か自分もツール作ってみたい
  • スポンサーブースにスタンプラリー要素を用意するのは賢いと思った
    • 参加者がちゃんとブースを周回する動機になって、スポンサー視点嬉しい
  • 海外スピーカーのセッションを聞きに行けばよかった
    • 何も考えずにセッション選んだり、ブースを回ったりしていたら海外スピーカーのセッションが0になってしまった
    • 通訳はあるしせっかく有名人が来日しているしもったいないことをした
    • 来年も参加するならここを意識する
  • 来年のセッションは Vue3 のその先の話が中心になりそう

久々のオフラインのカンファレンスを楽しめました。オンラインと違ってオフラインだと廊下で立ち話が発生したりして楽しかったです。あと眠くならない。

イベントスタッフ、スポンサー、スピーカーの皆さんありがとうございました。

dotfiles から Ansible Playbook を削除した

Windows パソコンを購入した結果 WSL や VSCode の devcontainer 向けの dotfiles を整備する必要が出てきました。

github.com

今回の整備でやったことを紹介します。

config ファイルの配置に Ansible Playbook を使うのを辞めた

元々は .zshrc.gitconfig などの config ファイルの配置に Ansible Playbook を使用していました。

odan3240.hatenablog.com

これは当時 Ansible の勉強を兼ねて導入したものでした。しかし、GitHub Actions 上での Ansible のセットアップが遅いことと、目的に対して Ansible は解決策が大げさだったのでこれを機に辞めました。

Ansible の代わりに config ファイルの配置はシェルスクリプトln コマンドを実行してシンボリックリンクを張る方法に変更しました。

Linux 向けの CLI ツールのインストールに aqua を採用した

これまで dotfiles は macOS 前提だったので CLI ツールのインストールは Homebrew に依存していましたが、Linux 向けは aquamacOS 向けは Homebrew と使い分けるようになりました。

aqua の存在を教えてもらう様子

macOS でも aqua を導入しなかったのは、dotfiles で管理していないツールのインストールは今後も brew を使っていくことになりそうだったので、使い分けるようにしました。

約10年間契約してた「さくらのVPS」を解約した

約10年間契約していた「さくらのVPS」を解約しました。

理由はログインパスワードを忘れ ssh キーも紛失し、VPS の上で動いていたサービスもいつの間にか 503 エラーを返すようになっていたからです。

当時は高校生で、どうして契約したかははっきり覚えていません。契約してからは個人開発したサービスを動かしたり、大学のサークルで使う Slack の Bot を置いていたりしました。

あと、高校生の頃はクレジットカードを持っていなかったので、毎月コンビニで料金を支払っていました。一度支払期限ギリギリの夜23時50分頃にコンビニに駆け込んだこともありました。

どれもいい思い出です。

レンタルサーバーじゃなくて本物の Linux が動く仮想サーバーを月額1000円から借りることができたのはお金のない学生の頃は本当に助かりました。ありがとうございました。

odan.dev と blog.odan.dev を AWS から Cloudflare Pages に移動した

ただの日記です。

個人開発の一貫で運用していた2つの静的サイトを AWS から Cloudflare Pages に移動しました。

odan.dev

blog.odan.dev

AWS が嫌いになったとか AWS じゃ要件に合わないというわけではなく、単純に Cloudflare ファミリーを使うきっかけが欲しくて移動させました。

ついでに odan.dev ドメインも Namecheap で管理していたのを Google Domains に移管しました。もともとは Google Domains で管理する予定だったんだけど、.dev ドメイン販売開始直後は Google Domains が重すぎて、仕方なく Namecheap でドメインを購入したものでした。

デプロイ方法

Cloudflare Pages は GitHub Apps からデプロイすることもできましたが、今回は GitHub Actions を使用してデプロイすることにしました。こっちのほうが色々インテグレーションが便利なはず。

github.com

ダウンタイム

DNS の設定を変更してから30秒ぐらいのダウンタイムが発生しました。これをなくすることはできるんだろうか

2022年 ふりかえり

去年のやつ

odan3240.hatenablog.com

OSS 関係

https://github.com/issues?q=author%3Aodanado+archived%3Afalse+-user%3Aodanado+-user%3Aodan-sandbox を眺めて思い出深いやつをピックアップ

あんまりないかも

ipfs/kubo

去年の年末年始は go-ipfs(今は kubo) の Docker コンテナの ARM 化対応をしてました。
当時の会社で M1 マックを使いつつ、ローカルで IPFS を動かしたい要件があって、Rosetta なしにいい感じにならないかな〜って思ってやってました。

go は簡単(?)に ARM 対応できて便利ですね。

github.com

nuxt/modules 系

当時の会社では Nuxt.js を使用していたのでこの辺の感度が高かった。
あるモジュールが Nuxt.js v3 対応したことがドキュメントに反映されてなかったり、Nuxt.js v2 向けのモジュールに初歩的にバグがあるものの issues すら建てられず放置されているのを見て憤りを感じたりしてた。

github.com

github.com

仕事

色々あって転職しました

試用期間の3ヶ月が過ぎたら転職しましたエントリーを書くかもしれないです

11月入社でようやく仕事の進め方が見えてきました。ちゃんとパフォーマンス発揮できているかは試用期間が終わるまで or 最初の評価時期が終わるまでわからないので不安が続いています。

アウトプット

インタビュー

前職時代にテックリードをしていた件についてインタビューをしてもらいました。転職するとどんどん前職の記憶が薄れていくので、他の人の手で文字として記録を残してもらえるのはありがたい限りです。

Zenn のスクラップ

Zenn のスクラップにやったことをメモるのは継続していていい感じです。

来年は JSer Info の感想を書き綴るとかしていこうかなと思っています。

odanさんのスクラップ一覧 | Zenn

まとめ

今年は転職を経験したり人生の転機となる1年間でした

転職してアウトプットや OSS 活動がおろそかになっているので、来年はこの辺を意識したいです。あとそれ以外だと30代が見えてくるので健康やプライベートも充実させる方向に頑張りたいなと考えてます。

ISUCON12 予選 参加記

今年も参加しました

結果

チーム「情報処理部」で参加して、競技中のスコアの最終値は3270、結果は322位相当でした。 メンバーは id:mizdra との2人で参加しました。

やったこと

github.com

  • Datadog の導入
  • MySQL に乗っているテーブルに index を追加
    • Datadog で APM からスロークエリを列挙して上の方にあるクエリに有効なインデックスを追加
  • ID の採番を ulid にする
    • Datadog を見ると REPLACE INTO という見慣れないクエリが見えて「なんだこれ」ってなったけどよく見たら ID を採番しているだけだった
    • uuid でもいいかなと思ったけど ulid にした
  • リーダーボードを Redis に乗せる
    • リーダーボードといえば Redis かなと思ってやってみたけど間に合わなかった...
    • 解説や他の人の参加記を見ても採用しているケースは少なかったし方針が悪かったっぽい
    • 初期データで player_score に入っているデータを Redis に乗せる必要があり、その処理を POST /init で呼ぶと30秒を超えてつらかった
      • ほとんどこの対応に時間を費やして時間内に終わらなかった
      • row_num が一番大きいやつを選べばいいことはわかっていたけど、圧縮するという発想がなかった...

できなかったこと

  • テナントのロックがきつい
    • mizdra さんが MySQL に変更していて、完了すればトランザクションで排他処理ができると思って何もしてなかった
    • 今思うととりあえずアプリケーションレイヤーで RW Lock 実装すればよかった
  • billing が重たいまま
    • 方針を考える時間がなかった
    • N+1 も残ったまま
    • サマリー作れば軽くなりそうだなという気はしていた

感想

  • 自分は Redis 化、mizdra さんは SQLite => MySQL 化をやっていて、どちらも一発逆転ホームラン的な作業をしていたのが良くなかったかも
    • どちらも完了すればスコアが大きく伸びることが期待できるけど、作業が完了しなければスコアの増分は0
    • 小さく積み重ねる系のタスクも別ラインで進めたほうが良かった
  • ほぼ触ったことのない Redis をぶっつけ本番で選んでしまった
    • ↑と似てる
    • SQLite のまま進められる改善をやればよかった
      • RW Lock の実装など
  • Datadog の無料枠が終わった
    • 来年は課金して挑みます
  • SQLite という新しいミドルウェアが出てきて新鮮だった
    • MySQL v8 なのも初?
  • 今回はいつもに増して無力感が強い予選だった
    • 個人的に ISUCON の予選突破がソフトウェアエンジニアとしての1つの目標で毎年参加している
    • しかし予選突破に近づいたことがなく、あと何を学べば目標に近づけるかがわからない...

自宅の通話環境を整備した

背景

forkwell.connpass.com

このイベントに参加するにあたって通話環境を改善したときのログです。

今は普段は3000円ぐらいのヘッドセットをつけて会社のミーティングなどに参加していますが、顔の周りがゴテゴテしているのでやめたいです。理想はいい感じのマイクを買って顔出しゲーム配信者的な環境を手に入れることです。

ゴール

  • 何かしらのマイクを買って運用する
  • マイクは仕事用の MacBook Pro と私物の MacBook Pro を繋ぎ変えられるようにする
  • あまり生活音は拾わず自分の声だけ拾ってくれると嬉しい

買ったもの

マイク

マイクの予算を1万円前後と見ていたのと、ワイヤレスイヤホンは audio-technica 製のものを使用していたのでこちらを購入しました。

www.amazon.co.jp

購入したマイクがコンデンサーマイクだったので、こちらのケーブルも購入しました。 www.amazon.co.jp

ミキサー

ミキサーもマイクと同様によくわからないので、インターネットでおすすめされていたこちらを購入しました。

www.amazon.co.jp

スタンド

マイクにはスタンドが付いてないことを知らずに慌ててこちらを購入しました。

www.amazon.co.jp

最初はこのスタンドを運用してました。しかし「声が遠い」とのフィードバックをもらったのでマイクの位置を顔に近づけるためのスタンドを別途購入しました。

www.amazon.co.jp

その他ケーブル類

マイク関係のケーブルを一切持っていなかったので、適当にそれっぽいやつをたくさん購入しました。

www.amazon.co.jp

www.amazon.co.jp

www.amazon.co.jp

感想

f:id:odan3240:20220117235602j:plain

ミキサーから生えている USB Type-C のケーブルを MacBook Pro に挿せば電源が入りマイクとイヤホンが使える環境が手に入って満足です。

マイクの音は前よりはマシになったけど遠いというフィードバックをもらっています。おそらく部屋鳴りな気がするので、部屋にカーテンを導入するなどして防止することを検討しています。