blog.syfm

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

2019-01-01から1年間の記事一覧

一年を振り返り… (2019)

去年は syfm.hatenablog.com 去年の 6 月ごろからほとんど毎日、雑に日記をつけていたのでこの振り返りもだいぶ書きやすくなった。 journey.cloud Journey というアプリを使っている。各プラットフォーム向けにアプリがあり、Google Drive にエクスポートで…

pkg/errors から徐々に Go 1.13 errors へ移行する

Go

Go 1.13 からの新しい errors Go 1.13 からエラー処理が強化され、errors パッケージに As と Is 関数が追加されました。これにより、今までは pkg/errors のようなライブラリを使用しなければ実現するのが難しかった、型情報を保持したままの wrap/unwrap …

アプリケーションにおけるデータ不整合との戦い

これは Aizu Advent Calendar 2019 の 15 日目の記事です。14 日目は uzimaru0000 さん、16 日目は kacky__917 さんです。 はじめに 世の中には日々たくさんの価値ある Web サービスが生まれていますが、その価値を正しく提供するにはアプリケーションが正し…

Pull Request と共に GoDoc を生成してくれる GitHub Action をつくった

これは Go5 Advent Calendar 2019 の 13 日目の記事です。12 日目は shiimaxx さん、14 日目は nsega さんです。 以前、以下のような記事を書いており、その中で GoDoc を通してソフトウェアを見ることでドキュメントや仕様の質を確認しやすくなるといったメ…

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 (複雑さ) について扱っている。洋書で…