【今日から始める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の定義を記述するための規格で、yamljsonで記述することができます。

https://www.openapis.org/

Swaggerとは?

REST APIを構築するためのツール群。 これにより、フロントエンドとサーバサイドの同時開発が可能になります。

今回の要件

  1. フロントエンドとバックエンドで直接話さなくてもAPIの仕様を確認できるようにしたい
  2. 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開発の練習のため自動生成ツールの導入は見送ることにしました。 しかし開発が進むにつれて、いくつか問題が発生しました。

  1. SwaggerのAPIドキュメントと実際のコードとの間に差分が生まれて、その修正を指摘されるなど本質的な効果が感じられなくなった
  2. VSCodeプラグイン「Swagger Viewer」がOAI v2.0のみの対応で、いくつか使えない機能がでてきた

そこで、OAI v3が使えて、コードの自動生成ができるツールを探すことにしました

選択肢

  1. go-swagger
  2. 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を使うことで要件の一つは満たすことはできそうなので、導入しても良かったと思う。

ただ、時間的制約やチームのモチベーションから導入には至らなかった。こういった知らない技術を導入する際には、

「最小構成で始めることは導入ハードルを下げるためには大事だが、違和感を持ったなるべく早い段階で、改善することも大事」

ということを意識して次から試していきたい。

参考

  1. https://rightcode.co.jp/blog/information-technology/swaggercodegen-code-generation-customize-syain
  2. https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8
  3. https://scrapbox.io/ohbarye/Go_OpenAPI_code_generation
  4. https://future-architect.github.io/articles/20200824/
  5. https://k2ss.info/archives/3297/
  6. https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8