yigarashiのブログ

学んだことや考えていることを書きます

webextension-polyfill-tsの型定義の自動生成がバグっていたので直した

Fix type generation for WebExtensionManifest.commands by yigarashi-9 · Pull Request #66 · Lusito/webextension-polyfill-ts 珍しくOSS活動をしたので簡単に報告記事を書く。 問題 最近ブラウザ拡張をよく触っている。同僚がmanifest.jsonをTypeScript…

AWS ECSのログを無難に見られるようになるための覚え書き

自分が関わっているサービスが徐々にECSに移転している。CloudWatchログのコンソールやチームのドキュメントにあるawslogsコマンドをなんとなく使ってログを見ていたものの、不必要なログが混ざったりして困ることがあった。テクノロジー面のモチベーション…

はじめてのエンジニア1on1メンター

ピープルマネジメントの文脈でエンジニア同士のメンタリング制度を設置しているIT企業は多いと思います。自分が勤める会社も例に漏れず、1on1によるメンタリング制度があります。エンジニアリングマネージャーを目指す若者の戦略 - yigarashiのブログ でも整…

エンジニアリングマネージャーを目指す若者の戦略

企業でWebアプリケーションエンジニアとして働き始めて2年と4ヶ月ほど経ちました。様々な仕事を経て、自分が向いていることや楽しく感じることが徐々に明らかになり、数年後になりたい像がぼんやりと浮かび上がってきました。そして、その将来像が世間的には…

チームが大きくなったらふりかえりをどうしたらよいのか

どうしたら良いんでしょうね。大きくなったら、というのは15〜20人くらいを想定しています。絶賛困っているので論点を整理するために考えていることを書き出してみます。 何に困っているか 素朴に1グループで会話すると発話できる人が減る 話題のスコープが…

なぜ俺たちはタスクを分割するのか

開発のプラクティスとして大きいタスクを小さく分割するというのがある。しかしよく考えると何が嬉しいかを的確に説明するのが難しいプラクティスだと思う。現在進行形でチームに広めようとしてうまく言葉が出なくて困っている。なぜ俺たちはタスクを分割す…

開発の導入準備おすすめ仕草3つ

最近、自分が先行して開発をして、地盤が整ったところで他のメンバーにも開発タスクをやってもらうという場面があった。特に、チームでは経験のないツールを使ったデータ基盤に関するタスクであったので、手厚く導入をすることが重要であった。その時の準備…

KPTのKがいまいち膨らまないチームに贈るパワフルな質問

ふりかえりでKPTのようなポジティブ/ネガティブな話題を出すような手法を使っていると、悪いところの掘り下げはサクサクできる一方で、良いところをうまく膨らませるのが意外と難しいように思います。書いた本人に話してもらって、ファシリテーターが「いい…

Goのcontextについて調査したり実装を読んだりしたまとめ

最近Goを勉強している。仕事でたまに使うというのもあるし、用途が広く色々とつぶしがききそうという期待もある。ちゃんと勉強してみると思ったより手触りが良いので、気になったライブラリについて調査しながら少しずつGo言語力を高めようと思う。というこ…

BigQueryっぽい小技を組み合わせてGA4のデータのページタイトルを最新の値に正規化する

Google Analytics 4(通称GA4)は最近利用できるようになったGoogle Analyticsの新しいプロパティで、全てのデータを簡単にBigQueryにエクスポートできるのが大きな特徴です。私もGA4を使ってこのブログのアクセス解析を行っており、BigQueryでナイスなビュ…

VSCodeで複数リポジトリを扱うなら結局Open Recentコマンドが最強という話

大学時代から長らくEmacsで暮らしていたのですが、最近ついにVSCodeに完全移行しました。各種設定やプラグインのエコシステムが使いやすかったり、コマンドパレットの感じがEmacsに似ていたりしていい感じです。 そんなVSCode、基本的には1フォルダ1ウィンド…

『SCRUM MASTER THE BOOK』を読んでスクラムマスターを何もわかっていないことがわかった

SCRUM MASTER THE BOOKを通して、偉大なスクラムマスターが備えるスキルやマインドを学びました。その学びをもとに、自分の振る舞いや考え方を改め、アジャイルなチームを作るための活動を進めています。

アジャイルなチームとアジャイルなデリバリーの仕組み

アジャイル開発をチームとデリバリーの仕組みという2つの切り口で論じます。これはチームが目指すべき姿を言語化するための武器になるはずで、こうした議論を通してひとつひとつのカイゼンアクションを尖らせていくことが重要だと考えます。

embulk gem installはインストールに失敗してもexit statusが0になる

embulk gemコマンドとembulk bundleコマンドは失敗してもexit statusが0になってしまいます。DockerでEmbulkを動かしている場合は、サイレントにイメージビルドが失敗するといった事故に遭う可能性があります。

embulk-input-mysqlでCommunications link failureになる時の原因と解決方法

EmbulkでMySQLからデータを読み出す際に、MySQL Connector/JのsocketTimeoutに起因するエラーが発生することがあります。本記事ではその原因と解決方法を簡潔にまとめます。

『ふりかえりガイドブック』に学ぶワンランク上のふりかえりのポイント

自分の中のふりかえりの知見を再構成するために「アジャイルなチームをつくる ふりかえりガイドブック」を読みました。全体を通してふりかえりのエッセンスが詰まっており、特に「小さく具体的なアクションから始める」「メタなふりかえりを重視する」という…

上手にカイゼンタスクを依頼してチームの自己組織化をアジャイルに進める

上手にタスクを依頼すると、依頼された側は目的に対して自律的に行動できるようになります。これは小規模な自己組織化に他なりません。スクラムチームとしての自己組織化にこの現象を応用することで、アジャイルに自己組織化を進める実験を試みています。

ふりかえりは必ずポジティブなコーナーから始める

ふりかえりは少なからず自分たちの悪いところを明らかにするプロセスを含むので、痛みを伴います。そして、チームが真面目で向上心があるほど、その痛みに立ち向かって改善を推し進めようとします。しかし痛みは痛みです。大小あれどストレスを感じて落ち込…

プルリクエストが大きくなると判断が歪むことに気付いた

僕の個人的な話で、一般の話ではありません。もし心当たりがあれば一緒に気付きましょう。 とある日、大きめの実装タスクがアサインされました。大きめというのは実営業日で1週間ちょっとかかるイメージです。内容はそこまで難しくなく、なんとなく書いて大…

『DMM.comを支えるデータ駆動戦略』を読んだ

最近はエンジニアとして事業への貢献度を高めたくなっていて、同僚が本書をオススメしていたので読んでみました。チームや社内でデータ駆動の意思決定がどんどん盛り上がっていたこともあり、データを軸にしたアジャイル開発について、一度まとまった知見を…

『正しいものを正しくつくる』を読んだ

会社の人がおすすめしていた正しいものを正しくつくるを読みました。その読書感想文です。 本書のざっくりとした主張としては、仮説検証を繰り返すことによって「正しいもの」つまりユーザーにとって価値のあるプロダクトを探索し、それを「正しく」つまり不…

GraphQL API を悪意あるクエリから守る手法

実サービスで GraphQL API をインターネットに公開する際は、悪意あるクエリに対する防衛が欠かせません。この記事における「悪意あるクエリ」とはサービスに意図的に負荷をかけるクエリのことです。GraphQL では 、木構造や再帰的な構造を利用して、一回の…

エンジニア8人チームで"効果的に"タスクをアサインするために検討した8つの軸

最近、締め切りのある大きめなプロジェクトでWebアプリケーションエンジニア兼プロジェクトマネージャーとして仕事をしました。一年目なので当然プロジェクト管理の経験はなく、本を読んで知識を得たり、チームメンバーに助けられたりと、だいぶ手探りでの挑…

見積もりの基礎知識と「ストーリーポイント vs 理想日」の考察

昨年の10月頃から締め切りのある大きなプロジェクトに参加し、部分的にではありますがプロジェクトマネジメントを担当しました。この記事では、その業務を通して得た見積もりに関する知見をまとめます。教科書的な知識は「アジャイルな見積もりと計画づくり…

【React】カスタムフックでstatefulなコンポーネントを整理する

こんにちは。最近は仕事で React を書き始めました。数年前に React を触った時は class component をせっせと書いた覚えがあるのですが、最近は functional component と react hooks を組み合わせて書くこともできるようです。react hooks の概要は公式ド…

Apollo ClientのInMemoryCacheとMutationに関する調査・考察

Apollo Client は、Apollo プラットフォームが提供する JavaScript で実装された GraphQL クライアントです。Apollo Client には InMemoryCache という強力なキャッシュ機構が用意されており、クエリの結果をキャッシュすることができます。本記事では、この…

Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜

Pythonの最も主要な処理系であるCPythonの入門記事です.はじめに,CPython で用いられているデータ構造とプログラムの実行方式について簡単に解説します.その後で,「処理系を改造して 1 + 1 = 3 にする」という課題を通して,実際に CPython のコードを読…

漸進的型付けの未来を考える

TypeScript や Python に導入されている「漸進的型付け」ですが,理論と実際の言語の間には大きなギャップが存在します.この記事では,そうしたギャップをプログラマの言葉でわかりやすく解説し,TypeScript や Python といったプログラミング言語の未来を…

型クラスを含んだ型推論を概観する 〜Typing Haskell in Haskell より〜

この記事は CAMPHOR- Advent Calendar 18日目の記事です. 「Typing Haskell in Haskell (通称 thih)」から型クラスを含んだ型推論のエッセンスを紹介したいと思います. 多少専門的な内容ですが,なるべく多くの人に理解してもらえるように頑張ります. 論…

System F をHaskellとPythonで実装した

無事夏休みに突入して時間ができたので再びTaPLを読み始めました.半年触っていなくても進行,保存の証明が書けるあたり,春の自分はずいぶんしっかりと勉強していたようです.春は22章の型再構築まで読んでいたので,ひとまず23章のSystem Fから読んでサク…