UPSIDERでエンジニアリングマネージャーをしているMiki (@m_miki0108) です!
2024年6月8日(土)に開催されたGo Conference 2024に登壇し、Bronzeスポンサーで協賛いたしました!
Go Conferenceとは?
Go Conferenceとは、年に一度開催されるGo言語に関するカンファレンスです。
今年は数年ぶりのオフライン開催で、キャパシティ400名のところキャンセル待ちが数百人という大人気かつ大規模なイベントになりました。 当日はセッションはもちろん、オフラインならではの交流やイベントブースなど盛り沢山な内容でした!
登壇した内容
「Custom logging with slog Making Logging Fun Again!」という内容で20分の英語セッションをいたしました。こちらがスライドです。
内容は、「Goの1.21から標準ライブラリとして導入されたslogのCustom Handlerを作ってログ出力をカスタムしてみよう!」というAll Levelのセッションです。 slogを触ったことのない人も楽しめるように以下のような内容でお話ししました。
- slogの基本
- slogのアーキテクチャ
- シンプルなslogのCustom Handlerを作るデモ
- Performance関連の考慮事項
デモに関して、Custom Handlerを作るライブコーディングをやりたかったのですが今回は20分のセッションということで時間的になかなか厳しそうでした。
なので実装をステップに分けてGitの差分を見てもらいながら理解してもらう方針でやってみました。結果として「初見の人にもわかりやすい内容になったかな?」と思っています。
slogのライブコーディング良かった。 #gocon
— kazuhiro ebara | yakiniku (@yakiniku040220) 2024年6月8日
step by stepで徐々にslog handlerを実装していく感じのライブコーディング(?)が行われている。表示を細かくカスタムしたくなったらこういう感じのことしたくなるんだろうな〜 #gocon #gocon2
— やわらかエンジニア (@pudding_info) 2024年6月8日
また、今回のGo Conferenceは株式会社サイバーエージェントさんのAbema Towersを会場に使わせていただいたということで、サンプルコードにこそっとAbema.tvを忍び込ませてみました。
こういう遊び心を忘れないように日々仕事しています!
merchantのところ、ちゃんと https://t.co/toTaaeW9bo になってる。えらすぎる。
— luccafort (@luccafort) 2024年6月8日
#gocon pic.twitter.com/UJlELV3Oiq
コードサンプルにhttps://t.co/NXN1ongRzlが仕込んである #gocon
— Takayuki Miyahara (@always_allokay) 2024年6月8日
UPSIDERでの取り組み
当社ではGoで書かれたマイクロサービスがたくさん存在しています。
会社全体のGoのプロジェクトで共通的に使っているものも多いですが、各チームで持っているサービスの特性や非機能要件、作られた時期や開発者の方針によってはアーキテクチャや利用しているライブラリが違うこともよくあります。 ロギングについても同様で、現状slogを使っているプロジェクトもあれば、standard libraryのlogをカスタムして使っていたり、サードパーティのzapを使っているところもあります。
個人的にはGoのプロジェクト全体で統一・標準化して開発スピードを落とさずに、より調査しやすく必要十分なロギングが実現できるようにしたいと思っています。
slogの良いところは、標準ライブラリでありlogとの後方互換性も保たれていること、サードパーティのロギングpackageでも共通の処理(バックエンド)を利用することができることです。(セッションでお話ししたように、APIをログメッセージの必要な情報を収集するフロントエンドとそれらを処理するバックエンドに分けるような構成になっています。)
これらのメリットを踏まえつつ、全体でどういう形にするのが最適なのかはこれから模索していきたいところです!
We are hiring!
UPSIDERではGoのエンジニアの採用中です! より具体的な業務事例をNoteで発信しています。ぜひご覧ください! note.com
ご興味をもっていただいた方はぜひカジュアルにお話ししましょう! pitta.me herp.careers