Wano Group Advent Calendar 2023 まとめ

2023年のAdvent Calendar終わりましたね。今年も、[Wano Group Advent Calendar](https://qiita.com/advent-calendar/2023/wano-group) とグループ会社のEDOCODEでも[EDOCODE Advent Calendar](https://adventar.org/calendars/8641)を行いました。
今年も無事に完走できました。素晴らしい!

去年もまとめたのですが、せっかくなので、今年もまとめていきたいと思います。

このAdvent Calendarは、[Wano Group](https://group.wano.co.jp/)のエンジニア([Wano](https://wano.co.jp/)、[TuneCore Japan](https://tunecore.co.jp/)、[EDOCODE](https://www.edocode.co.jp/))のエンジニアが中心に書いています。

## 1日目 [全エンジニアにおすすめする本「世界一流エンジニアの思考法」](https://qiita.com/masafumi330/items/43f9129a0d3a1112640f)

@masafumi330 による、牛尾剛さん著書の「[世界一流エンジニアの思考法](https://amzn.asia/d/9gOSMU3)」のレビューです。一流のエンジニアがもつ思考法。システムを構築するためには、「理解する」というのはかなり重要だと思います。現状から理想の状態にもっていくために、どういうふうに考えたら良いのか？ということに触れています。エンジニアになって間もない人は読んでみると良いかもしれませんね。

エンジニアの仕事の仕方でいうと、[なぜ、あなたの仕事は終わらないのか](https://www.amazon.co.jp/-/en/%E4%B8%AD%E5%B3%B6%E8%81%A1/dp/4905073413/)とかも良かった気がしますが、あんまり覚えてません。

## 2日目 [aws-cli のラッパースクリプトを書いて作業を超効率化する](https://qiita.com/ktat/items/6494390dec4b5b9c662b)

僕の記事です、普段落ち着いた感じでしかかかないんですが、若干煽り気味にしてみました。効果はなかったですw
AWSのManagement Console使っていたらストレスで死にそうになったので、wrapperスクリプトを書いたという話です。Management Consoleをずっと使ってるよりは、かなり効率化できているのに嘘は無いと思います。

もうちょっと真面目に設計して、設定ファイルに、コマンド定義とかできるようにして、自由度と柔軟性を高めてやったほうが良いかなーと思いました。

## 3日目 [Next.jsのチュートリアルからブログサイトを作成してみる](https://qiita.com/masafumi330/items/d601b070735b4eef765c)

@masafumi330 による、タイトルのままですが、Next.jsのチュートリアルからブログサイトを作ってみた、という記事です。
構成ぎめ、セットアップ、テンプレートからレイアウトの作成。Tailwind CSSを使ったようです。Vercelでのデプロイまでを一通り紹介しています。
バックエンドエンジニアでもフロントの知識を学ぶのは良いですね。知識の幅が広がりますし、普段の仕事にも使える発見があると思います。

## 4日目 [TypeScript自称上級者が、Rustを学んで面白いと思ったところをTypeScriptと比較しながら話す](https://qiita.com/shogoroy/items/26d9f685edffa462690d)

@shogoroyによる、TypeScript使い視点でのRustの紹介です。Rustの所有権による保たれる安全性。モジュール管理方法。structとimpl。ResultやOptionなどの特徴的な型、などをソースコードを交えて紹介しています。
僕も趣味でちょっと書いてるんですが、Rust難しいですけど、面白いですね。

## 5日目 [[個人開発]Notion APIを叩いて日本酒(のリスト)をデータベースに注ぎ込んでみた](https://qiita.com/shibe_/items/ae230e58413c6012db57)

@shibe_ による、Notion APIを使ってみた、的な記事です。今年、Wanoでは何年かぶりに開発合宿を行ったのですが、そこでの開発の成果です。Notion APIを使ったインテグレーションの作り方。DBとインテグレーションの接続方法、APIの具体的な使い方等を書いています。

Notion APIなかなか癖がありますね。いや、まぁ、あの簡単に見えるUIだけど複雑であろう実装をAPIで表現するんだからやむなしとは思いますが。

## 6日目 [TuneCore Japanのプロダクトマネージャーとして携わった3年間のサービスを振り返る](https://note.com/kentarosata/n/nd2f5694dfc50)

[@SataKentaro](https://twitter.com/SataKentaro)による、振り返りです。
TuneCore Japan 10年の歩みの簡単な紹介。Sataさんが関わってきた3年間にローンチしたサービスの紹介。
著作権の話にも触れていて勉強になります。
[Rework with 『ハナミズキ』](https://www.tunecore.co.jp/cover-wanted/rework-with-hanamizuki)とか、かなり面白い取り組みでしたね。
TuneCore Japanに興味がある方は是非、読んでみてください。

## 7日目 [Amazon Personalizeを試してみた時のメモ](https://qiita.com/iuchim/items/875b22a8a08e8a9a4ce2)

@iuchim による、機械学習のレコメンドエンジンである、Amzon Personalizeのメモです。
データセットの作り方、データセットのインポート、トレーニング、実際のリコメンドの使い方と、一通り試すためのやり方が簡潔にまとめられています。機械学習やってみたいなーという人には良いかと思います。

## 8日目 [セッションリプレイツールのススメと選定](https://qiita.com/NaotoFushimi/items/5e1207ab9216a388c0a8)

@NaotoFushimi による、ユーザーがどのように操作したのかをリプレイできる、セッションリプレイツールの比較、紹介記事です。
MicroSoft Clarity, Datadog, Sentry の3つを比較、紹介しています。セッションリプレイツールは、マーケティングツールとして先行していたという歴史があるようですね。
それぞれのサービスの特徴、メリット、デメリットがまとめられているので、気になる人は是非チェック。

## 9日目 [おじいさんエンジニアの本棚](https://qiita.com/FunyaFunya/items/60a721642ca1e836e6d4)

@FunyaFunya による本の紹介です。Wanoグループで一番の年長者なエンジニアになりますので、経験も豊富なので、紹介されている本も低レイヤーかChatGPTまで、色々です。
年末年始に読む予定に入ってる、[systemdの思想と機能](https://www.amazon.co.jp/dp/429713893X)は僕も気になってますね。[やさしいインタープリタの作り方入門](https://www.amazon.co.jp//dp/487783219X)なら読んだことありますが、[インタプリタの作り方 －言語設計／開発の基本と2つの方式による実装](https://www.amazon.co.jp/dp/4295017876)は、ガチっぽいですね。さすがです。

## 10日目 [輪読会でチームを強くする](https://qiita.com/ShingoYadomoto/items/446570c2648f35f2a73a)
@ShingoYadomoto による「輪読会」の紹介です。一般的な輪読会の紹介と、実際にTuneCore Japanで行っているやり方の具体的な紹介、実施してみての感想が書かれています。

「A Philosophy of Software Design」「［試して理解］Linuxのしくみ　―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識」、「単体テストの考え方/使い方」の3冊をどのように進めたのかが具体的に書かれています。

これは、参考になる!やってみたい。

## 11日目 [【AppSheet】会社の技術書を管理するアプリを作ってみた](https://qiita.com/gibom/items/43c1c4e7c00124458043)

@gibom による、AppSheetを使ったアプリの作り方の記事です。割と簡単な手順でアプリが作れそうです。
デザイン凝りたい人には向かないかもしれませんが、スピーディに目的を達成したい場合には、使えそうです。
共有にグループアドレス使えないのは痛いですね!

## 12日目 [ポケモンのタイプ相性を可視化する](https://qiita.com/s-kosuke/items/a07f4a6bdbd825adc33b)

@s-kosuke による、ポケモンの紹介です。違う。いや、違わないのか。ちなみに僕はポケモン全然知りません(ポケモンスリープはちょっとやってる)。
ポケモンには18タイプがある、ということで、それぞれの相性を可視化する...という感じでしょうか。
PokeAPIという、ポケモンのデータを取れるAPIを使って、実現したとのことです。有志で作ってるのか、すごいですね。ちょっとググったところ、ポケモンは1024匹いるそうです。大変そうですね...。

とりあえず、テノツツミが強いことはわかりました。

## 13日目 [【エフェクター】コンプレッサーとイコライザーをTypescriptで実装する](https://qiita.com/kotobuki5991/items/9ae4628397640b1e5c03)

@kotobuki5991 によるブラウザで動くエフェクター作ってみた、という記事です。これも開発合宿で作られたものですね。
Equalizer、Compressor自体が何をするものなのかの紹介。Web Audio APIを使った実際の実装までソースコードとともに紹介しています。ブラウザで音あそびしたい人には良いかと思います。

って、見返してたんですが、2018年のAdvent Calendarで、@tdaiki-wanoによる[Web Audio API + Faust : ブラウザベースで動くオーディオエフェクターを作る](https://qiita.com/tdaiki-wano/items/06656a04a82963e22129)という記事がありましたね。こちらもあわせてどうぞ!

## 14日目 [[ジュニアエンジニア・エンジニアを目指す人向け]フロントエンドエンジニアがよく使っているJavaScriptのメソッド9選 + 業務効率upのツール2選](https://qiita.com/nabebe2023/items/b06657622b20b21a38b8)

@nabebe2023 による、ジュニアエンジニア向けのJavaScriptの紹介記事です。僕もサーバーサイドばっかやってて、JavaScriptかけるんですけど、永遠のにわかフロントエンドなので勉強になりました。
JavaScriptの話だけではなく、業務効率アップツールとして、Fig, Raycastの紹介もされています。

## 15日目 [会社のデータ分析環境をAWSで整えた話](https://qiita.com/nijigen_plot/items/10f002a603aec559c9bd)

@nijigen_plot による、TuneCore Japanのデータ分析環境を作ったという話です。もともとあったものが使いにくい!という課題を解決するために、もともとの構成をどういう構成に変えたのか、それによって、どういう問題手なが解消されたのか等が書かれています。
新環境を構築するためにどういうことをしたのか、Tabeleau Server、BigQueryとの連携を含めて書かれています。
データ分析に課題を抱えている人には刺さるのではないでしょうか。

## 16日目 [Go x Google Calendar API x Copilot 、簡易なチーム日程調整を作ってみる](https://qiita.com/johnnytfhs/items/c4338e24d0a972210e8b)

@johnnytfhs による、Google Calendarの日程調整アプリを作ってみたという記事です。
Wanoではシャッフルランチというのをやっていて、月一回ランダムなメンバーとランチするんですが、その日程調整めんどくさいということで、開発合宿で試してみた感じですね。
GoからGoogle Calendar APIの使い方、Copilotによるコードの自動生成の紹介をしています。

## 17日目 [AWSのCodeBuildのチューニングについて](https://qiita.com/lulin/items/9aab7ff7f04a813f3564)

@lulin による、AWSのCodeBuildのチューニングについての記事です。CodeBuildのキャッシュを使うことで、ビルドにかかる時間を効率化させるというものです。ローカルキャッシュ、S3を使ったキャッシュの紹介をしています。単純に使うだけでは改善するのは難しいようで、独自のキャッシュ実装を行うことで、5分以上の短縮化を達成したとのことです。気になりますね。他の設定についても簡単に紹介されています。

## 18日目 [Go - Transformerを紐解く (google.org/x/text/transform) & テキスト置換処理の実装](https://qiita.com/_tachi_/items/a9f923ae624ab4d63d7b)

@_tachi_ による、text/transformの 解説です。使ったこと、ない、な。文字列置換以外にもテキストの変換として柔軟に使えるということのようです。記事の例では、単純なテキスト置換をどのように実装するのか、どういう仕組みなのかを紐解いてくれています。

## 19日目 [社内デザインシステムのカラーパレットにRadix Colorsを採用した経緯](https://qiita.com/exsrx97/items/aa940ce84679b845ec74)

@exsrx97 による、デザインシステムの構築、その中でカラーパレットにフォーカスしたという記事です。長く開発を続けていると、最初はよくてもじわじわ不都合がでてくるのはあるあるですね。
デザインシステムを作ることで、UIの統一感、実装における共通言語、属人化の排除を達成したいとのことです。その中で、カラーパレットにフォーカスした紹介をしています。
独自カラーパレットを作る試みが挫折して、最終的には、いくつかの候補の中から、Radix Colorsを採用したとのことです。

## 20日目 [S3互換ストレージWasabiの内容をSendGridでメール配信してみる](https://qiita.com/kotobuki5991/items/310756d1aa63ab6ad779)

@kotobuki5991 による、S3互換ストレージWasabiとSendGridの紹介です。
高速で下り無料というWasabiに保存された内容を読み取って、SendGridでメール配信する、という内容です。
Goで実装されていますが、S3互換なので、Wasabiへのアクセスは、aws-sdk-go がそのまま使えるということですね。便利そう。SendGridも12000通無料ということなら、ある程度の規模や用途によっては、良さそうですね。 

## 21日目 [Producer-Consumer Problemとふれあう](https://qiita.com/tdaiki-wano/items/2d3833212ad9de339ea5)

@tdaiki-wano による、[Producer-Consumer Problem](https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem)に関する記事です。
Wikipediaの英語版にリンクしましたが、品質に問題があるとされていますね。日本語はないようです。
記事中にも書いていますが、有限のキューに対して、アイテムを入れるProducerと、アイテムを取り出すConsumerがいて、この2つが並列に動く場合に

| Queue   | Producer | Consumer |
|---------|----------|----------|
| いっぱい | 待機      | -        |
| 空      | -        | 待機      |

という状況をどのように解決するかという問題についてのGoを使った考察記事になります。

## 22日目 [【解説付き】フロントエンドライブラリ私流選定基準](https://qiita.com/rom1000_onigiri/items/f8767d791e4769d6d4d6)

@rom1000_onigiri による、フロントエンドライブラリの選定基準の紹介です。フロントエンドと書いていますが、とくに特化した内容ではないかとは思います。npm とかは他の言語であれば、読み替えれば良い話かなと思います。
読んでいて同意するところ多数でした。参考になると思います。

## 23日目 [Lambda コンテナイメージを使ってSlackのグラフ貼り付けBOTを作る](https://qiita.com/nijigen_plot/items/34bc274ed8396bcdd8af)

@nijigen_plot による、各種データ指標をSlackで確認するためにどうやったか、という記事です。
AWS LabmbdaからAthenaのデータを取得して作成したグラフをSlackへ通知するというのをEventBridgeでスケジューリングした、という内容です。
Slackアプリの作成から、lambdaでのグラフ作成、ECRへのイメージのデプロイ、EventBrdigeのスケジュール設定と、ソースコード、スクショを交えて解説してくれています。

## 24日目 [Spotify APIで今週リリースの新譜プレイリストを作る](https://qiita.com/tutti618/items/ed4c5bc19533e4ab4dc7)

@tutti618 によるSpotify APIを使ったアプリ作成の記事です。
Spotify APIを使う準備から、PythonのSpotipyライブラリを使った、プレイリストの作成や、アーティストの検索、アルバム情報の取得方法等が、書かれています。

記事の中に、時折、音楽愛が読み取れますね。後、水曜と金曜日が何の日か知りたい人は是非。

## 25日目 [Echo(Go)のMiddlewareを理解する (Recover,CORS)](https://qiita.com/masafumi330/items/7ee7d2289b365e731064)

ラスト。@masafumi330 による、Goではよく使われているWAF、EchoのMiddlewareの仕組みを解説した記事になります。@masafumi330 3記事も書いてくれてますね。ありがたもうしわけないです！
Echoのミドルウェアは用意されているものもありますが、自分で書くことで共通処理をまとめることができたりして、とても便利ですね。
この記事では、ミドルウェアがどういうふうに動くものかの紹介と、実際に、Recoverと、CORSのミドルウェアを使ったコード例が書かれています。

## おしまい

以上、簡単に各記事を紹介しました。興味のある記事をぜひ読んでもらって、「いいね」してもらえると嬉しいです!