【今日から始めるtmux入門】セッション開始〜終了
こんにちは。 今回はtmuxというソフトウェアについて調べてみて、インストールからセッションを開始〜終了する流れをまとめてみたいと思います。
動機
会社の先輩から教えてもらい存在を知りました。 「仕事の仕方が変わった」とまでいうので気になり、使ってみることにしました。 使いこなして快適に仕事ができるようになりたい!
tmuxとは
1つのターミナル上で複数のセッション、ウィンドウ、ペインに分割して利用することができるソフトウェアです。
インストール
brewを使ってインストールしました。
brew install tmux
セッション操作
セッション開始
# 新規セッション開始 tmux # セッション名を付けて新規セッション開始 tmux new -s [セッション名]
オプションのs
はSessionのs
セッションの一覧表示
tmux ls
セッションを終了
tmux kill-session # セッションを指定して削除 tmux kill-session -t [セッション名]
オプションのt
はSessionのt
以上で、セッションの開始〜終了まで行うことができました。 次回はもう少し詳しく調べて、コマンドライン操作を習得したいと思います。
参考記事
https://girigiribauer.com/tech/20200427/ https://qiita.com/nmrmsys/items/03f97f5eabec18a3a18b
Swaggerで自動生成を使わなかったら、開発が辛くなった
チーム開発でSwaggerを導入してみたのですが、ソースコードまたはドキュメントの自動生成を使わなかったところ、後から痛い目を見たという話です。
OpenAPIとは?
OpenAPI Specificationの略。
REST APIの定義を記述するための規格で、yamlやjsonで記述することができます。
Swaggerとは?
REST APIを構築するためのツール群。 これにより、フロントエンドとサーバサイドの同時開発が可能になります。
今回の要件
VSCodeでSwaggerを使ってみる(ここまではできた)
https://zenn.dev/nekoniki/articles/acd946cc349d1e
環境構築
Swagger.yamlを用意
書き方はOpenAPI Specificationを参照 以下はサンプル
# swaggerのバージョン swagger: "2.0" # 基本情報 info: version: 1.0.0 title: Swagger Practice description: | - Swagger練習用のファイルです # リクエスト方式 schemes: - "http" # ホスト host: localhost:8080 paths: /articles: get: summary: 記事一覧を取得する responses: 200: description: Hello World schema: type: array deprecated: false
VSCode上でプレビュー
Swagger ViewerというVSCodeのプラグインを使うと、OpenAPIのファイルをプレビューできます。
Code Generaterの導入
開発初期は、API開発の練習のため自動生成ツールの導入は見送ることにしました。 しかし開発が進むにつれて、いくつか問題が発生しました。
- SwaggerのAPIドキュメントと実際のコードとの間に差分が生まれて、その修正を指摘されるなど本質的な効果が感じられなくなった
- VSCodeのプラグイン「Swagger Viewer」がOAI v2.0のみの対応で、いくつか使えない機能がでてきた
そこで、OAI v3が使えて、コードの自動生成ができるツールを探すことにしました
選択肢
- go-swagger
- oapi-codegen
1つ目のgo-swaggerはOAIv2のみ、2つ目のoapi-codegenはv3対応。 よって今回の仕様にマッチしたoapi-condegenを調査することに。
oapi-codegenの導入方法
インストール
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@latest
. ├── README.md ├── docs │ ├── docs.go │ ├── swagger.json │ └── swagger.yaml ├── go.mod ├── go.sum ├── main.go ├── openapi.gen.go └── swagger └── openapi.yaml
-p
でパッケージ名を指定して実行
oapi-codegen -p petstore swagger/openapi.yaml > openapi.gen.go
APIの雛形やモデルを自動生成してくれる。 これだとAPIまで自動生成してくれるので、今回の要件にはマッチしない。
ソースコードからAPIドキュメントを自動生成
swaggo/gin-swaggerを使うと、コメントからAPIの仕様書を生成することもできる。 今回の要件では、これで生成されたドキュメント経由でフロント側との意思疎通ができるが、モデルなどの自動生成はできないのでこちらもマッチしそうではない。
今回の学び
今回の開発では、最後に紹介したgin-swaggerを使うことで要件の一つは満たすことはできそうなので、導入しても良かったと思う。
ただ、時間的制約やチームのモチベーションから導入には至らなかった。こういった知らない技術を導入する際には、
「最小構成で始めることは導入ハードルを下げるためには大事だが、違和感を持ったなるべく早い段階で、改善することも大事」
ということを意識して次から試していきたい。
参考
- https://rightcode.co.jp/blog/information-technology/swaggercodegen-code-generation-customize-syain
- https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8
- https://scrapbox.io/ohbarye/Go_OpenAPI_code_generation
- https://future-architect.github.io/articles/20200824/
- https://k2ss.info/archives/3297/
- https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8