blog.syfm

徒然なるままに考えていることなどを書いていくブログ

Go 1.13 にアップデートするとテスト時に "flag provided but not defined" エラーが発生するケース

Go でテストを実行する際は動的に生成された main 関数がエントリポイントとなっています。 Go 1.13 からはテスト実行時のテストフラグ (-v や -coverprofile など) の登録がこの生成された main 内で行われるようになったため、 main より先に実行される in…

モノレポで Go Modules を使う

Multi-Module Repository Go Modules では Git で管理されているリポジトリ内に複数のモジュールを定義することが可能です。*1 これを利用すると、たとえばプロジェクト内で使う Go ツールの依存管理をプロジェクトのコードとは異なる go.mod で行うことがで…

オフ会

オフ会というとどことなくライトなイベントであるイメージが湧くけど、それでもオフ会という言葉が適切だと思う。 自分が春に就職し、社会人一年目となったこの歳に昔からのコミュニティと初めてオフ会をした。 当時自分は中学 1 年生だったから、実に 10 年…

ISUCON9 予選で負けた

今年も ISUCON に参加していました。メンバーは去年と変わらず @acomagu と @natumn。 去年は syfm.hatenablog.com 去年は温泉旅館に二泊三日で泊まり、中日で ISUCON をやっていて、その体験がすごく良かったので今年も旅館に泊まることにしました。 今回…

Go 1.13 に向けて知っておきたい Go Modules とそれを取り巻くエコシステム

Go

はじめに 今年の 8 月にリリースが予定されている Go 1.13 では、Go 1.11 で導入された Go modules に加え、Go module proxy といった新しいエコシステムが登場します。 そこで、そもそも Go modules は何を行っているのかや、何ができるのか、どういった要…

メルペイに新卒入社しました

正確には株式会社メルカリに入社して株式会社メルペイに出向、という形です。「株式会社メルカリに新卒入社しました」というエントリタイトルが多かったので重複を避けるためにこう書きました。 4 月に入社してちょうど 3 ヶ月が経ち、無事解雇されずに試用…

土善旅館で開発合宿してきた

最近忙しく、なかなかブログを書けなかったのでだいぶ間が空いてしまったのですが、GW 中に大学時代の友人らと土善旅館で開発合宿をしてきました。 5/1 から 2 泊 3 日、あまりお金がない友人らもいたのでエコノミー開発合宿プランでした。 他のブログでも言…

Go Conference 2019 Spring で発表してきた

先日行われた Go Conference 2019 Spring で "Fuzzy finder as a Go library" というタイトルで発表してきました。 gocon.connpass.com 発表スライドは以下。 speakerdeck.com Fuzzy finder をライブラリとしてつくる、という結構マニアックな発表にもかかわ…

GoDoc を多用している

最近は設計をする際にできる限り API 仕様を正確に記述するようにしている。このことを意識し始めた大きな要因は主に次の 2 つだと思う。 1 つ目は以前、前職で働いているときに柴田さんに API 仕様の重要性を教えてもらったことから。この時に聞いたことは…

gRPC における IDL と codec

codec gRPC は非常に柔軟に設計されていて、例えば RPC でメッセージをやりとりする際に、どういうシリアライザでエンコードするかを自由に選ぶことができます。gRPC の公式ドキュメントではシリアライザとして Protocol Buffers のみが利用されていますし、…

追い出し LT で「つよくてニューゲーム」というタイトルで発表しました

卒業式の前日に会津大学の Zli というサークルの追い出し会として LT 会が開催され、そこで「つよくてニューゲーム」*1というタイトルで発表してきました。 普段は基本的に技術寄りの話ばかりしていますが、学生生活最後の発表だったので珍しく自分語りをし…

esa、Google Cloud Functions、Hugo、Netlify で簡易 CMS をつくる

Hugo は、Markdown ファイルを元にブログポストの HTML を静的に生成することのできるツールです。Hugo で生成した HTML を Netlify や GitHub Pages にデプロイすることでブログをホストするためのサーバを用意せずにブログを公開することができます。 しか…

fzf ライクな fuzzy-finder を提供する Go ライブラリを書いた

fuzzy-finder fzf や fzy、skim などの fuzzy-search (あいまい検索) を提供する CLI ツールの登場により、コマンドラインでの操作はますます表現豊かになっています。 例えば、カレントシェルのコマンドヒストリの一覧から fuzzy-finder を使って選択したり…

fuzzy-finder で使われるスコアリングアルゴリズム

fuzzy-finder を構成するアルゴリズム fzy や fzf といった fuzzy-finder を使うと、stdin などからリストを受け取り、ユーザの入力によってマッチする行を絞り込むことができます。このとき、入力文字列の各文字は隣接している必要がありません。例えば、以…

A Philosophy of Software Design を読んだ

A Philosophy of Software Design作者: John Ousterhout出版社/メーカー: Yaknyam Press発売日: 2018/04/06メディア: ペーパーバックこの商品を含むブログを見る 170 ページくらいの洋書で、ソフトウェアの Complexity (複雑さ) について扱っている。洋書で…

一年を振り返り… (2018)

去年は syfm.hatenablog.com 1月 初日の出 高校の友人らと毎年恒例の初日の出を見に行った。 end of 就活 1月のカレンダーの予定を見てみたら毎週就活関連で東京へ行っていた。1月で全て終わったので以降はだいぶ落ち着いた。 OpenAppLab Aizu LT feat. Cyb…

dept を使った Go ツールの依存管理

はじめに ツールのバージョン管理が煩雑 ツールの統一的なインストール方法がない ktr0731/dept Go Modules におけるツールの依存管理 dept を使った依存管理 dept の実装 まとめ はじめに Go プロジェクトでは、しばしば静的解析ツールが使用されます。例え…

gRPC-Web Internals

これは Aizu Advent Calendar 2018 の 2 日目の記事です。 1 日目は @Ruto009 さんで、3 日目は @ayanoaizu さんです。 adventar.org gRPC-Web is GA! 今年の 10 月末に、gRPC-Web がついに GA (Generally Available) となり、メジャーリリースが行われまし…

就活を終えた

はじめに この記事はポエムです。 先日、内定承諾をして就活が終わった。 就活を始めたのが去年の 9 月くらいだったので、だいたい 1 年くらい就活をしていたことになる。 とはいえ、内定承諾をしたのが最近だっただけで実質的な就活は去年の年末で終わって…

技術書典 5 で Go & Kotlin 本を頒布します

技術書典 5 の「う11」で「Go & Kotlin Playground」というタイトルの本を頒布します。 以下のような本です。表紙は入稿 1 時間前につくりました。 Go & Kotlin Playground ホームページもつくりました。 gcf.syfm.me 割とニッチな章ばかりかなぁと思います…

GopherCon 2018 に Mercari BOLD Scholarship で参加・発表してきた

今年の 8 月 26 日から 9 月 1 日の間、Mercari BOLD Scholarship で Go 最大のカンファレンスである GopherCon へ参加していました。 tech.mercari.com GopherCon 2018 は希望者のみ参加できるワークショップ、3 日間に渡って行われるトークセッション、最…

ISUCON8 予選で負けた

タイトルの通りで、fail して負けました おわり #isucon— きたろー (@ktr_0731) September 16, 2018 参加メンバーは前回一緒に出た @natumn と、前回予定が合わなくて参加できなかった @acomagu です。 syfm.hatenablog.com 前回は惨敗したので ISUCON 6 と…

イケている技術、イケていない技術

たまに Twitter で「イケている技術」とか、「イケている会社」といったフレーズが流れてくることがある。そしてそのたびに違和感を覚えている。 Twitter で流れてくることにはほとんど価値はないので、それに対してなにか意見するのは不毛かもしれないけど…

自作 CLI ツールのワークフローとそれを支える技術

去年の秋頃から作っていた 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) …

gofmt を理解する

これは Aizu LT feat. CyberAgent での発表に補足を加えた記事です。 発表資料は speakerdeck.com gofmt Go には標準でさまざまなツールが揃っています。 その中でも自分が好きなものに gofmt があります。 gofmt は所謂コードフォーマッタの一つで、ソース…

一年を振り返り… (2017)

去年は 👇 syfm.hatenablog.com

Clean Architecture で Go 製の API サーバを書く

この記事は Aizu Advent Calendar の 20 日目の記事です。 adventar.org 前日は id:nktafuse の 、 nktafuse.hatenablog.com 明日は id:ywkw1717 です。 ywkw1717.hatenablog.com きっかけ 最近職場で Clean Architecture を取り入れたアプリケーションを Py…

GitHub に草を生やし続けて一年が経った

去年の今頃から毎日 GitHub に commit しようと決心し、最近 365 日を達成しました! いい感じ なぜかデフォルト表示の方の左上が白くなってますが、ちゃんと一年経っています。 意図 そもそもなぜ始めようとしたかというと、技術の習得には input と output…