Skip to content

Posts

スキーマ指向開発

最近、

  • DBのCREATE TABLE
  • OpenAPIのYAML
  • gRPCのproto
  • GraphQLのschema

この辺の定義って共通している部分が多いというか、どれか一つから相互変換ができれば管理も楽なんじゃないかなと思う。

項目の追加削除するたびに修正漏れがないか気にするのは生産的ではないなー、と。

何となく、DBの定義を基準にするのが良いような気がするのだけど、どうなんだろう。

Read more

CORS対応

openapi-generator-cliのtypescript-axiosで生成したクライアントでConfigureにaccessTokenをセットして取得APIを叩いたらうまく通信できなかった。

API側のログにはOPTIONSのリクエストが来ていて、200で返している。

chiのcors.OptionsのAllowedMethodsにOPTIONSは入っているので、これは想定通り。なのにそのあとのGETリクエストが来ていない。

Read more

WSL2その後

スリープ後にWSLが応答しなくなる現象はまだ起きていないけれど、すぐ本体が熱くなってファンが回るのは変わらず。

頻繁にSSDの警告も出るし大丈夫なのかなこれ。。

WSL2の再インストール

Windows11 22H2が降ってきたので、インストールした。

特に問題なさそうなので、WSL2を再インストールしようとしたところ

WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください

とのメッセージが。

リンク先で「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードして、実行。

Read more

Dockerfileでブレース展開

golangのベースイメージにnodejsを入れたくて、 Step by step instructions to install node and npm using Linux binaries - DEV Community 👩‍💻👨‍💻 この手順見ながらやってみていたのだけれど、

RUN cp -r ./{lib,share,include,bin} /usr

でファイル未存在のエラーになってしまった。

RUN cp -r ./lib /usr
RUN cp -r ./share /usr
RUN cp -r ./include /usr
RUN cp -r ./bin /usr

とすると通るので、ファイルが存在しないわけではなく、ブレース展開ができていないらしい。

Read more

WSL2アンインストール

いいかげん改善しないので、WSLをアンインストールしてみた。

WSLがないと使えないDocker Desktopもついでに消した。

これでしばらく運用してみて、スリープ後の負荷上昇(地味に内部の温度上昇もやばい気がしている)が落ち着けば、またインストールしなおしてみようかと。

Dockerがないとちょっとしたツールとか(openapi-generator)動かせないのが不便だけど、仕方ない。

Read more

OpenAPIとAPI Gateway

API GatewayにOpenAPIの定義を適用できる。 OpenAPI を使用した REST API の設定 - Amazon API Gateway

API Gatewayの後ろにLambdaを使えば、EC2とかでGoのコンテナ動かすより安上がりになるのではないか?という思い付き。

この場合、APIサーバーはどういう構成で作るのかイメージがわかない。

現状は、openapi-generatorで生成したmodelやらを使ってやり取りしているが、lambdaだとエントリーポイントごとにmainパッケージを用意する?

Read more

GitBashでDockerでMount

WSL2が不安定なので、開発環境をGitBash使うようにして、おおむね問題なかったのだが、Dockerでローカルをマウントして使うときに問題が。

OpenAPIのコード生成するときに

docker run --rm \
  -v ${PWD}:/local openapitools/openapi-generator-cli generate \
  -i /local/openapi.yml \
  -g go-server \
  --additional-properties=router=chi,featureCORS=true \
  -o /local/out

だと

[error] The spec file is not found: C:/Program Files/Git/local/openapi.yml
[error] Check the path of the OpenAPI spec and try again.

こんなエラーになる。

Mount volume doesn’t work on Windows 10 using git-bash · Issue #673 · docker-archive/toolboxを参考に、MSYS_NO_PATHCONV=1をつけたら動いた。

Read more