Go
個人的にほそぼそと開発をしていた ktr0731/go-fuzzyfinder を使うと fzf のような UI を持つ CLI ツールを非常に簡単につくることができます。go-fuzzyfinder では、Preview Window という、現在選択しているアイテムの詳細情報を知らせるための表示領域を…
Go を書くとき公開されている API や、そのコメントに不足や余分がないかチェックするために GoDoc を使っていた。特にプライベートパッケージはインターネットからドキュメントを参照できないため、GoDoc をローカルで起動し、チェックしていた。 syfm.hate…
これは Aizu Advent Calendar 2020 の 10 日目の記事です。9 日目は虚無さん、11 日目は虚無さんです。 curl を使って API クライアントやリクエスト・レスポンス型を自動生成したいと思ったことはありませんか?わたしはあります。ということでつくりました…
Go 1.14 で testing パッケージに新しく t.Cleanup(func()) や b.Cleanup(func()) が導入されました。 最初は今まで defer を使っていたところを置き換えられるくらいしか良いところがないかな〜と思っていましたが、想像以上に柔軟な使い方ができるので今ま…
Go 1.13 からの新しい errors Go 1.13 からエラー処理が強化され、errors パッケージに As と Is 関数が追加されました。これにより、今までは pkg/errors のようなライブラリを使用しなければ実現するのが難しかった、型情報を保持したままの wrap/unwrap …
これは Go5 Advent Calendar 2019 の 13 日目の記事です。12 日目は shiimaxx さん、14 日目は nsega さんです。 以前、以下のような記事を書いており、その中で GoDoc を通してソフトウェアを見ることでドキュメントや仕様の質を確認しやすくなるといったメ…
Go でテストを実行する際は動的に生成された main 関数がエントリポイントとなっています。 Go 1.13 からはテスト実行時のテストフラグ (-v や -coverprofile など) の登録がこの生成された main 内で行われるようになったため、 main より先に実行される in…
Multi-Module Repository Go Modules では Git で管理されているリポジトリ内に複数のモジュールを定義することが可能です。*1 これを利用すると、たとえばプロジェクト内で使う Go ツールの依存管理をプロジェクトのコードとは異なる go.mod で行うことがで…
はじめに 今年の 8 月にリリースが予定されている Go 1.13 では、Go 1.11 で導入された Go modules に加え、Go module proxy といった新しいエコシステムが登場します。 そこで、そもそも Go modules は何を行っているのかや、何ができるのか、どういった要…
先日行われた Go Conference 2019 Spring で "Fuzzy finder as a Go library" というタイトルで発表してきました。 gocon.connpass.com 発表スライドは以下。 speakerdeck.com Fuzzy finder をライブラリとしてつくる、という結構マニアックな発表にもかかわ…
最近は設計をする際にできる限り API 仕様を正確に記述するようにしている。このことを意識し始めた大きな要因は主に次の 2 つだと思う。 1 つ目は以前、前職で働いているときに柴田さんに API 仕様の重要性を教えてもらったことから。この時に聞いたことは…
codec gRPC は非常に柔軟に設計されていて、例えば RPC でメッセージをやりとりする際に、どういうシリアライザでエンコードするかを自由に選ぶことができます。gRPC の公式ドキュメントではシリアライザとして Protocol Buffers のみが利用されていますし、…
Hugo は、Markdown ファイルを元にブログポストの HTML を静的に生成することのできるツールです。Hugo で生成した HTML を Netlify や GitHub Pages にデプロイすることでブログをホストするためのサーバを用意せずにブログを公開することができます。 しか…
fuzzy-finder fzf や fzy、skim などの fuzzy-search (あいまい検索) を提供する CLI ツールの登場により、コマンドラインでの操作はますます表現豊かになっています。 例えば、カレントシェルのコマンドヒストリの一覧から fuzzy-finder を使って選択したり…
はじめに ツールのバージョン管理が煩雑 ツールの統一的なインストール方法がない ktr0731/dept Go Modules におけるツールの依存管理 dept を使った依存管理 dept の実装 まとめ はじめに Go プロジェクトでは、しばしば静的解析ツールが使用されます。例え…
技術書典 5 の「う11」で「Go & Kotlin Playground」というタイトルの本を頒布します。 以下のような本です。表紙は入稿 1 時間前につくりました。 Go & Kotlin Playground ホームページもつくりました。 gcf.syfm.me 割とニッチな章ばかりかなぁと思います…
去年の秋頃から作っていた gRPC クライアントツールである Evans が今年に入り、徐々にいろんな方々に使われ始めました。 github.com Issue や Pull Request を頂けてとてもありがたい反面、それらを反映したバグフィックスや機能追加がツールに取り込まれて…
書いたもの github.com 使用例 type Foo struct { Hoge string Fuga string piyo string } v1 := Foo{Hoge: "dummy", Fuga: "FUGA", piyo: "dummy"} v2 := Foo{Hoge: "HOGE"} ires, _ := mapstruct.Map(v1, v2) res := ires.(Foo) fmt.Println("%#v", res) …
これは Aizu LT feat. CyberAgent での発表に補足を加えた記事です。 発表資料は speakerdeck.com gofmt Go には標準でさまざまなツールが揃っています。 その中でも自分が好きなものに gofmt があります。 gofmt は所謂コードフォーマッタの一つで、ソース…
この記事は Aizu Advent Calendar の 20 日目の記事です。 adventar.org 前日は id:nktafuse の 、 nktafuse.hatenablog.com 明日は id:ywkw1717 です。 ywkw1717.hatenablog.com きっかけ 最近職場で Clean Architecture を取り入れたアプリケーションを Py…
先日の A(izu)LT 0x09 で「Evans: more expressive universal gRPC client」 というタイトルで発表してきました。 タイトルの通り、gRPC クライアントをつくった話です atnd.org ALT は、会津大学の有志によって年に二回ほど開催されている LT (Lightning T…
最近、ついに Go (golang/go) にコントリビュートしました! 正確にはレビュー中で、レビューが通ってもマージされるのは Go 1.10 なので、だいぶ先は長いですが取り敢えず自分のできることは一通り終わりました。 Go ではレビューシステムに GitHub は使っ…
動機 最近のコマンドは大抵サブコマンド形式になっています。 $ docker pull hello-world このように、コマンド名 + サブコマンド + 対象 みたいな形式。 サブコマンドには大きく2種類あって、サブコマンドに動詞を指定するタイプと、リソースを指定するタイ…
ふと iTunes をコマンドラインから操作したいなぁ…と思い、絶対あるだろうとググってみたら案の定あったのですが、いくつか気に入らないところがあるものばかりだったので作りました。 その他の理由としては、UNIX という考え方 という本を読んでいて CLI ツ…
概要 BEMANI の音ゲーの一つである SDVX や弐寺、Jubeat なんかは非公式でもスコアデータを取得するアプリなりライブラリがある。そのどれもが根強い人気を誇っているのは多分音ゲーをやっている/やっていた人ならばわかるはず。 Groove Coaster (グルコス) …
イラストの管理 自分はたまにイラストを描いたりするのですが、以前からその管理方法に苦労していました。 苦労していた点は主に次の 2 点です。 バックアップ 制作過程 Gif をつくるのが面倒くさい 強い人は、短時間でもさらっとイラストを描いてしまいます…