スクラムチームのプロジェクト管理にはJiraが便利

この記事ははてなエンジニアアドベントカレンダー 2023の5日目の記事です。 はてなエンジニアのカレンダー | Advent Calendar 2023 - Qiita はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog maku693です。私が現在所属しているチームではJir…

Goのmapをsetのように使う

Go言語の標準ライブラリには他言語のset型のようなものは存在しませんが、単純なものでよければ組み込みのmapをsetのように使えます。 x := map[string]struct{}{} // string型のset相当のmapを作成 x["foobar"] = struct{}{} // "foobar" を登録 _, ok := x…

Github Actionsで簡単にPuppeteerを使えるaction-puppeteer-scriptを作りました

maku693です。Github ActionsでPuppeteerを簡単に使えるCustom Actionを作りました。github.com最近Github Actions上でブラウザを動かしたくなったのですが、いちいち実行環境を整えるのも面倒なので、サクッとできないものかと調べたところ、意外とPuppetee…

goコマンドに特定のディレクトリを無視させたいときは空のgo.modファイルを置いておく

タイトルでほとんど説明しましたが、Go Modulesが有効な環境で、module-awareなコマンドに特定のディレクトリを無視させるには、無視させたいディレクトリにダミーのgo.modファイルを設置しておくとよいです。ファイルの内容は空で構いません。Githubにサン…

2022年3月現在、Docker Desktop for Macでbind mount volumeにcached, delegatedオプションを指定する意味はない

以前、Docker Desktop for Macのbind mount volumeにはcachedとdelegatedというパフォーマンスチューニング用のオプションがあったのですが、現在はもはや指定しても何も起きないようです*1。かなり前からそうだった*2ようなのですが、全く知りませんでした…

フレンドリーな単語を出力する friendly-words-cli というコマンドラインツールを作りました

1ヶ月くらい前の話なのですが、friendly-words-cliというコマンドラインツールを作りました。github.com趣味でコードを書くにあたってプロジェクト名を決めたいとき、ランダムな英単語を組み合わせた文字列が欲しいときのワンライナー - The Third Lawのよう…

Dataloaderの元になったHaskellのHaxlというライブラリがおもしろい

GraphQL APIを作るとき、素朴に実装するとN+1問題が発生しがちなので、これを解消するためにDataloaderという仕組みも実装するのが一般的です。少し前にHaskell Dayというイベントの発表資料をレビューする機会があり*1、Dataloader的な設計はGraphQL以前か…

Stylelintで無効化したいルールにはnullを指定する

タイトルでほぼ全部説明しましたが、Stylelintを使う時、既存のconfigで指定されているルールを完全にオフにするには null を使います。例えば、stylelint-config-sass-guidelinesとstylelint-config-property-sort-order-smacssを組み合わせて使いたい時、…

BuildKitがオンの時 docker build 中の標準出力をそのままホストに出力したい場合は --progress=plain オプションを使う

タイトルで全て説明していますが、BuildKitがオンの環境で、docker build 中の標準出力の内容をビルドする側で全部確認したい場合は --progress=plain オプションが使えます。 $ docker build --progress=plain . docker build するとき、BuildKitが有効化さ…

golang-migrateを使っている環境でRailsのdb/structure.sql相当のファイルを作成する方法

仕事で携わっているウェブアプリケーションでは、DBのマイグレーションにgolang-migrateを使っています。DBをマイグレーションするだけのツールとしてはこれで十分なのですが、現在のスキーマダンプ、Railsでいうところのdb/structure.sqlをダンプする機能が…

git diffにまだ一度もコミットされていないファイルを含めるにはgit add --intent-to-add

まだ一度もコミットしていないファイルを git diff で表示したい場合は、git add の --intent-to-add オプションを使うと、コミットせずとも git diff に表示できます。 $ echo 'Hello' > example.txt $ git add --intent-to-add . $ git diff diff --git a/…

Goで手軽にコード生成したいときはgomplateを使うと楽

仕事でGo言語をよく書くのですが、Goは言語機能が多くはないためボイラープレートやコピペが増えがちです。特に他の言語でいうところのgenericsがあれば解決するのに、と思うことがよくあるのですが、現在のGoにはそのような機能は存在しない*1ため、go gene…

Node.jsアプリケーションのDockerイメージのサイズを削減する方法について調べた

Next.jsアプリケーションのDockerイメージのサイズが大きくて困っていたので調べていたところ、Next.jsの公式ドキュメントにDocker Imageというセクションがあり、おすすめ設定が記載されているのを見つけました。以前はここまで詳細な記述はなかったのです…

ランダムな英単語を組み合わせた文字列が欲しいときのワンライナー

Githubのリポジトリ名サジェスト機能のように、ランダムな英単語をふたつ組み合わせて出力したくなったので、シェルスクリプトでワンライナーを書きました(macOS以外では動かないかも)。 $ cat /usr/share/dict/words | sort -R | head -2 | tr '[:upper:]…

Github Actionsでyesコマンドを使いたい時は代わりにecho yするといい

こんばんは、id:maku693です。タイトルでほぼ全部説明しましたが、Github Actionsでちょっとハマりました。Github Actionsのワークフローでは工夫しないとyesコマンドを使えないので、代わりにecho yを使うと手っ取り早いです。これに気づいたのは、[y/N]ど…

Asana APIのNode.jsクライアントを使ってタスクを作る

仕事で自分が所属しているチームではプロジェクト管理にAsanaを使っています。先日、大量のタスクを一気に登録する必要が出てきたのですが、単にタスクを追加するだけではなく、同時に説明もまとめて入力したかったため、いちいち手でやるのも面倒だったので…

TypeScriptである型の特定のプロパティの型を得る方法

type I = { func: (arg: string) => void; }; という型があった時、Iの func プロパティの型を得るには、 const f: I["func"] = (arg) => { console.log(arg); }; のように I["func"] とすると取得できます。これはGenericsを使った型でも利用可能です。 typ…

VSCodeでTS/JSの静的解析を強制的に再実行したいときはTSファイルを開いてTypeScript: Restart TS Serverコマンド

タイトルで説明終わってますが知らなかったという日記です。VSCodeにはデフォルトでTS/JS拡張が含まれており、TS/JSファイルを開くと静的解析を実行してくれますが、たまにファイルの更新に追従できていなかったり、npm installしたあとに暴走したりと挙動が…

Catalina node-gyp インストールできない 直し方

こんにちは、id:maku693 です。先日私物の Mac の OS を Catalina にアップグレードしたせいか、node-gyp を使う npm モジュール(fsevents など)がインストールできなくなっていました。 特に fsevents が利用できないと困る*1ので、直す方法はないかと調…

Go言語で画像をリサイズするツールを作ってみました

こんばんは、id:maku693です。Go言語の練習としてimgresという画像リサイズツールを作ってみました。Goの標準ライブラリにGIF, JPEG, PNGのエンコーダー・デコーダーがあるのでそれを使っています。 入力ファイル名、出力画像の幅か高さ、出力ファイル名を指…

おみくじ君というキャラでおみくじを引けるコンテンツを作りました

こんにちは、id:maku693 です。2019/12/31 - 2020/1/1 の「24時間くらいでゲーム作るやつ」で、id:noir_neoとshelf703と3人でおみくじ君というキャラの3Dモデルを使っておみくじが引けるコンテンツを作りました。吉こちらから実際にプレイできます。端末を振…

意図的に低画質で撮れるカメラアプリを作りました

こんばんは、id:maku693です。意図的に異常な低画質で撮影できるカメラアプリを作ったので紹介します。maku693.github.ioもうクリスマスはとっくに過ぎましたが、このエントリはねおりん Advent Calendar 2019 - Adventar22日目の記事です。書き終えておかな…

Fly masawada to the Moon

この記事は masawada Advent Calendar 2019 の15日目の記事です。 14日目の担当はid:yadex205さんでした。おはようございます、id:maku693です。大遅刻ですがmasawadaさんの3Dモデルを使ってゲームを作りました。プレイのようす このページ上で遊ぶ document…

WebGPUの紹介

この記事ははてなエンジニア Advent Calendar 2019 - Qiitaの4日目の記事です。昨日はid:yigarashiさんのApollo ClientのInMemoryCacheとMutationに関する調査・考察 - yigarashi のブログでした。こんにちは、はてなでWebアプリケーションエンジニアをして…

masawada Advent Calendar 2019 1日目: どこでもmasawada

この記事は masawada Advent Calendar 2019 の1日目の記事です。こんばんは、id:masawada さんの同僚の id:maku693 です。いつもお世話になっております。masawadaさんは最高なので、現実に隣にいない場合でも見守っていてほしくなる事がありますよね。 そん…

大乾杯 開発振り返り

こんばんは、id:maku693です。3/22の晩から3/23の晩にかけて、「大乾杯 THE GREAT KANPAI」という乾杯シミュレーターを開発しました。今回は「24時間でゲームを作るやつ」を始めてちょうど10本目で、今まで開発してきたゲーム達の集大成的な、クォリティの高…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

POPPO SHOOTER 2019 開発振り返り

2018/1/11の夜から24時間、私ふくめ3人のチームでPOPPO SHOOTER 2019というPC向けブラウザゲームをつくりました。 節分にちなんで(?)、鳩が豆鉄砲を打ちながら鬼を倒すというゲームです。遊び方はゲーム画面右下の「?」ボタンで確認できます。 いつも開…