どないブログ

なんでも書く

FastAPI で自動生成されるドキュメントの json を取得する

[結論]

/openapi.json にアクセスすると自動生成されたドキュメントの json が取得できる。


FastAPI では自動的に API ドキュメントを生成してくれる機能がある。

fastapi.tiangolo.com

/docs もしくは /redoc にアクセスすると自動生成されたドキュメントを確認することができる。

そうすると、この OpenAPI の json, yaml が欲しくなる。

https://github.com/tiangolo/fastapi/issues/2712

に書いてあった。

/openapi.json にアクセスすると良い。

VSCode で Pylance のエラーメッセージが日本語で表示されてしまう

MacOS を使っている。

FastAPI での開発で VSCode を使っていた。

Pylance が表示するエラーメッセージを英語で表示してほしいのに、

日本語で表示されてしまうので困っていた。

解消したのでメモ

github.com

こちらの通りに

システム環境設定 > 一般 > 言語と地域 > アプリケーション

ここに VSCode を追加し、 English に設定する。

これで解決。

Makefile の .PHONY について

まとめ

Docker を使った開発をしていていて

docker compose up etc をイチイチ書くのが面倒なので、

Makefile を使おうとしたら

make: 'hoge' is up to date と怒られちゃった時の話。

(結論)

実行したいコマンドと同名のディレクトリ, ファイルが存在している時は、

.PHONY をつけよう。

(参考) sumito.jp

ファイル構成は以下のような形

.
├── Makefile
├── backend
 |             └── Dockerfile
└── docker-compose.yml

🙅‍♀️ make backend で怒られる Makefile

up:
  docker compose up -d

backend:
  docker compose exec backend bash

🙆 make backend が通る Makefile

up:
  docker compose up -d

.PHONY: backend
backend:
  docker compose exec backend bash

詳しく

Makefile はそもそも、

[作りたいもの]: [材料]
(-----TAB-----) [作り方]

今回で言うと、 backend を作るために

docker compose exec backend bash を実行すると言う書き方。

C, C++ のプログラムのコンパイル等に使われている。

なので、 make backend とすると backend を作ろうとして

「すでにあるよ」って怒られちゃう。

(参考) omilab.naist.jp

そこで .PHONY

.PHONY は target はファイル名じゃないと言うことを示すための記法。

(参考) www.gnu.org

なので

.PHONY: backend
backend:
  docker compose exec backend bash

とすることで、 backend と言うファイルを作ろうとしているわけではない

と示すことができ、コマンドを実行することができる。

VSCode で分割した editor の group 間を移動するショートカット

PyCharmから徐々にVSCodeへの乗り換えを進めている。

開発時に左右の分割をよく使う。

↓こんな感じ

f:id:r_h_0706:20210118194756p:plain
VSCodeスクショ

分割した時に左右を移動するショートカットが見つからずに困っていた。

PyCharmで言う所の Goto Next SplitterGoto Previous Splitter

見つけたので誰かの役に立てることを願ってメモ。

View: Focus Left Editor GroupView: Focus Right Editor Group だった。

f:id:r_h_0706:20210118195126p:plain

個人的にはそれぞれ

command + shift + ;command + shift + ' をあてている。

おしまい。

httpsでcloneしたリポジトリへのpushで起きるエラーの解消

httpsを使って git clone したリポジトリへのpushでusernameとpasswordの入力を求められた。

>> git push -u origin head

Username for 'https://github.com': 
Password for 'https://donaisore@github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/donaisore/my-app.git/'

ここで GitHub の username と password を入力してもpush出来ない。

どうやら二段階認証の設定をしていると起こるっぽい。

docs.github.com

↑このページを参考に token を発行した。

>> git push -u origin head
Username: ${username}
Password: ${token}

で完了。

macでNEologdのインストール

このリンクの本を購入して勉強中。

以下でここに書いてあるサンプルコードが少し登場します。

github.com

Neologdってなに?

簡単に言えば、新語が登録されているMecab用の辞書らしい。

例えば、以下のようにMaCabで辞書を指定せずに形態素解析実行した時に

import MeCab

m_t = MeCab.Tagger('-Ochasen')
text = '機械学習が好きです。'

print(m_t.parse(test))

機械学習 という単語が上記で言う所の 新語 に当たり、 機械学習 に分けられてしまう。

そこで、NEologd を使う。

macでNEologdのインストール(本題)

github.com

ここに全部書いてあるんだけど、実行したものだけ抽出。

動作に必要なライブラリのインストール
$ brew install mecab mecab-ipadic git curl xz

NEologdのGitHubのプロジェクトをclone(よく分からないところにcloneしたくないので、 user root に移動)
$ cd
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

辞書のインストール
$ ./bin/install-mecab-ipadic-neologd
途中でyesを入力

で完了。

ちなみに

以下のコマンドでインストール時のオプション一覧が取得できる。

$ ./bin/install-mecab-ipadic-neologd -h

-p オプションを使うことで、インストール先のpathを指定出来るらしい。

↓で書いているが、毎度インストール先の確認をするもの面倒なので、指定しちゃうのはアリかも。

インストール後に困ったこと

MeCabで使う辞書を指定する時に、

import MeCab
m_t = MeCab.Tagger('-Ochasen - d {dict_path}')

と、辞書をインストールしたpathを書いて上げる必要があった。

どこか分からん...

となった。

以下のコマンドでインストール先が分かる。

$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

(出力) /usr/local/lib/mecab/dic/mecab-ipadic-neologd

pip install torchで ReadTimeoutErrorが出てしまった。

PyTorchを触ってみようと、以下の本を購入した。 環境構築でつまづいてしまったのでメモ。

やったこと

www.amazon.co.jp

pyenvで3.6.9の環境をinstall

この本には3.6のPython環境と書いてあったが、3.6.0だとtorchが1.4.0までしかinstall出来ない。

torchvisionをinstallするためにはtorch==1.7.0以降でないといけないので、3.6.9をinstallした。

その後以下のコマンド

pip install torch==1.7.0

を実行すると

raise ReadTimeoutError(self._pool, None, 'Read timed out.')

でinstallが終了せず。

原因

stackoverflow.com

pip installdefault-timeout というoptionがあるそうな。

引っ越してすぐで、光回線がまだ引けておらず、非常に遅い回線で環境構築していたのでTimeoutになってしまったようです。

f:id:r_h_0706:20201106104714p:plain
fast.comスクショ

以下のコマンドに修正することでinstall出来た。

pip install --default-timeout=500

100でもダメだったw

大きいライブラリだなw