仕事 昨年の振り返りで考えていた通り、今年は機能要件に多く関わる一年となりました。来年はリファクタリングをテーマに据えて取り組んでいきたいと思います。 OSS 今年は GitHub Sponsors を始めました。 tchssk.hatenablog.com ありがたいことに、Goa の…
これは KEEB_PD Advent Calendar 2024 の 13 日目の記事です。 adventar.org 昨日はぎーくらびっとさんの 2024年のKEEB_PD振り返り でした。 2023 年末、気まぐれで Keychron を購入したのをきっかけに、キーボードにハマってしまいました。 tchssk.hatenabl…
GitHub Sponsors を始めた 始めてみました。 github.com 特に明確な理由があって始めたわけではないのですが、支援してくれる人が現れることで自分の活動が認められたら嬉しいなと思っています。 お金のために OSS やってるわけじゃないけど、少なからず時間…
goaversionremover は Goa v3 のプラグインで、各生成ファイルのヘッダーから Goa のバージョンを取り除きます。 github.com プラグインの有効化 プラグインを有効にするには、下記のように goaversionremover を import します。 import ( _ "github.com/tc…
仕事 CI やデプロイ、ライブラリ更新など非機能要件に関する作業が多い一年でした。来年はもう少し機能要件にも関わっていけるといいなと思いました。 OSS 仕事に使っているライブラリに機能追加しました。 github.com 今年は Goa にたくさん Pull request …
errorswithstack はGoa v3 のプラグインで、オリジナルのサービスエラーにスタックトレースを追加します。このプラグインは github.com/cockroachdb/errors/withstack に依存しています。 github.com プラグインの有効化 プラグインを有効にするには、下記の…
autotrailingslash は Goa v3 のプラグインで、末尾スラッシュのついた HTTP リクエストをハンドリングできるようにします。 Goa v3 は、v3.13.0 でデフォルトの HTTP ルーターを chi に切り替えました。この変更により、末尾にスラッシュが付いているリクエ…
作りました。 tchssk.github.io 画面にアルファベットを 1 文字ずつ表示するだけのシンプルなアプリです。 元々、アルファベット表を 1 文字ずつ指差しながら読んであげて復唱してもらう、という遊びをやっていたのですが、何度もやっていると指差しが面倒に…
ライフイベント 息子が生まれました。 受託開発 昨年から継続しています。使っている技術について記事を書きました。 zenn.dev 自分が経験したベストプラクティスを集めた構成になっているので、一般化できる部分は今後も記事にしていきたいと思っています。…
個人での受託開発 知り合いの会社からシステム開発を依頼され、春先から個人での受託開発を始めました。日中の本業がフルタイムなので、夜間の副業として作業できる時間数で契約しています。インフラからアプリケーションまで、技術面のすべてを担当している…
ふと思い立って個人プロジェクトの GORM を v1 から v2 に移行してみました。 まずはプロジェクトに GORM v2 をインストールします。 $ go get gorm.io/gorm import を github.com/jinzhu/gorm から gorm.io/gorm に変更します。 gofmt での一括置換が便利で…
ライフイベント 娘が生まれました。 OSS Goa v3 のプラグインを作りました。 tchssk.hatenablog.com Goa v1 から v3 への design 移行をサポートするツールを公式に移譲しました。 tchssk.hatenablog.com 買い物 リングフィット アドベンチャー ヨドバシ.com…
これは Go2 Advent Calendar 2020 の 13 日目の記事です。 以前作った Goa v1 から v3 へのマイグレーションツールを Goa 公式の GitHub Organization に移譲しました。 Thank you @tchssk for contributing the Goa design upgrader tool! This tool helps …
codegendisabler は Goa v3 のプラグインで、コードジェネレータの部分的な無効化を可能にします。 github.com プラグインの有効化 プラグインを有効にするには、下記のように codegendisabler の package を import します。 import ( _ "github.com/tchssk…
昨年購入したタギロンというボードゲームが面白くて、友人が遊びに来たときによくやっています。 たぎる、論理 TAGIRON タギロン 新装版発売日: 2018/09/28メディア: おもちゃ&ホビー このゲームはターン毎にメモを取るのが大事で、今までは JELLY JELLY CA…
OSS Goa v3 がリリースされたので、仕事で Goa v1 を使っているプロジェクトを v3 に移行し始めています。使ってみると気になる挙動が見つかるので本家に Pull request を送りながら進めているのですが、 v1 の最初の頃にも同じように Pull request を送って…
これは Go3 Advent Calendar 2019 の 3 日目の記事です。 今年 2 月にリリースされた Go 1.12 において、 公式の静的解析ツールである go vet が golang.org/x/tools/go/analysis を使う形に書き直されました。 Analyzer golang.org/x/tools/go/analysis は …
前回の記事ではプリミティブ型の比較を行いましたが、今回は DSL の比較を行っていきます。各 DSL の詳細については随時追記していきます。 v1 v3 API API APIKeySecurity APIKeySecurity(APIKey)(APIKeyField) AccessCodeFlow (廃止) - Action Method Appli…
Goa v3 では design に使うプリミティブ型が v1 から変更になっています。この記事では Swagger データ型も交えながら v1 と v3 のプリミティブ型を比較してみます。 v1 のプリミティブ型 出典: https://godoc.org/gopkg.in/goadesign/goa.v1/design#pkg-con…
仕事 サーバサイドでは引き続き Go を書いていました。フロントエンドでは React を書く機会があったのが良かったです。 OSS 今年もコツコツ goa に機能追加したりしていました。 tchssk.hatenablog.com tchssk.hatenablog.com multipart/form-data でファイ…
これは Go4 Advent Calendar 2018 の 22 日目の記事です。 今年の 8 月に Go 1.11 がリリースされました。このバージョンでは Modules と呼ばれる新しいコンセプトが導入されています。これはバージョニングとパッケージ配布の仕組みで、 GOPATH 配下以外で…
Web API がエラーレスポンスを返す際にはレスポンスボディでエラーの詳細を示すのが一般的です。 goa には goa.ErrorResponse という型が組み込まれており、 controller に到達する前の処理でエラーが発生した際のレスポンスに使われています。また controll…
前回 goa で multipart/form-data を扱う方法についてご紹介しました。 tchssk.hatenablog.com multipart/form-data に関連してよく取り上げられるのがファイルアップロードですね。 HTML フォームを介したサーバへのファイル送信は多くのウェブサービスで利…
multipart/form-data という MIME タイプがあります。これは主に HTML フォームの内容をサーバに対して POST する際に用いられます。 goa の Request Context には http.Request が埋まっているので、そこから MultipartReader() や ParseMultipartForm() を…
OSS 昨年に引き続き goa にコミットしていました。 2018 年は v2 が形になるといいですね。 tchssk.hatenablog.com 勉強会 goa 勉強会で発表もしました。 tchssk.hatenablog.com 転職 2 年半勤めた前職を辞めて 11 月から Pacific Porter で働いています。引…
これは Go3 Advent Calendar 2017 の 10 日目の記事です。 小さな役割を持つサービス群でアプリケーションを構成する、いわゆる Microservices が流行して久しいですね。サービスが細かく分割されるとき、それらを取りまとめるサービスが必要になることがあ…
goa には静的ファイル配信のための DSL として Files が用意されており、以下のような定義を行うと FileServer を生成してくれます。 Files("/swagger/*filepath", "public/swagger/") 生成される FileServer は http.FileSystem という interface を通して…
goa へのプルリクエストの送り方 (バックポート編) です。 goa では互換性維持のため master と v1 を別ブランチで管理しています。そのため、プルリクエストが master にマージされたあと、その変更を v1 ブランチにバックポートするようお願いされることが…
goa へのプルリクエストの送り方 (プルリクエスト編) です。本記事の内容を実施する前に準備編を済ませておいてください。 1. リポジトリに移動 コンソールで以下のコマンドを実行します。 $ cd $GOPATH/src/github.com/goadesign/goa 2. master から新しい…
goa へのプルリクエストの送り方 (準備編) です。本記事の内容は、プルリクエストを送るための準備として最初に一回だけ行う必要があります。 1. GitHub で goa をフォーク https://github.com/goadesign/goa を開きます。 ページの右上にある Fork をクリッ…