Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Denoで作るチーム開発生産性向上のためのCLIツール

 Denoで作るチーム開発生産性向上のためのCLIツール

■ イベント
TypeScriptを活用した型安全なチーム開発 2024
https://sansan.connpass.com/event/337268/

■ 発表者
技術本部 Strategic Products Engineering Unit Contract One Devグループ
伊藤 遼太

■ Contract One 開発エンジニア 採用情報
https://media.sansan-engineering.com/contractone-engineer

SansanTech

December 22, 2024
Tweet

More Decks by SansanTech

Other Decks in Technology

Transcript

  1. 写真が入ります 伊藤 遼太 - Ryota Ito - Sansan株式会社 技術本部 Contract

    One Dev グループ - 2021年11月 Sansan 入社 - Backend (Kotlin) / Frontend (TS) / Management - X: itomise0f
  2. - ドキュメントにコードがはられていたり - sql, shell など - 便利用スクリプトリポジトリが作られたり - いろんな言語で書かれたり

    - 共有しておらず、複数人が同じコードを書いていたり - ローカルで使っていたけど、どこに置いたか忘れて使えなかったり - … 周辺コードは管理が煩雑になりがち
  3. - Contract One でも、周辺コード用のリポジトリを運用していた - Ruby で書かれていたり、Go で書かれていたり - メンテがあまりされず、ドキュメントもほとんどなかったので、知る人ぞ

    知るという状態になっていた - アップデートしたりしても気づかないため、他の開発者がメリットを享受 できない 課題
  4. Contract One CLI で実際にやっていること - データ準備系 - XのデータをYの状態にする - ユニークなサンプルPDFを生成する

    - 運用系 - 機能で提供していない運用作業を自動化したスクリプト - 手順書を不要にし、全体の認知コストを下げる目的 - リリース作業 - AI生成系 - 自然言語からいい感じの変数名、クラス名を出してくれる - 要件定義のテキストから一通りのコードを生成してくれる
  5. - 現状の標準ライブラリ以外の依存関係 - @david/dax : コマンドラインを実行するためのdeno製ライブラリ - postgres : postgres

    と通信するためのdeno製ライブラリ - zod : 依存関係ゼロのバリデーション用ライブラリ 1. 標準機能の豊富さ Contract One CLI 開発環境の依存パッケージ
  6. - Deno 2.0 の Youtube 動画「Programming Should Be Simple」 -

    Node.js で同じことをやろうとすると、typescript, uuid, csv, lint, config, vitest … と多くの依存関係と設定を管理する必要が出てくる (またそれらの 噛み合わせも...) - CLIアプリのような、小さい環境で 小さく実行したい、というユースケースに はDenoが合っていると判断した 1. 標準機能の豊富さ
  7. - CLIアプリは利用側の体験が重要 - 使いにくいアプリは使われなくなる - Global Installation 機能 - 指定したファイル、モジュールを任意のコマンドでグローバルに実行可能に

    なる - ファイルを編集したりしても再インストールが必要ない - Contract One はモノレポ構成をとっているため、CLIのコードもそこに 含めて運用している - コマンドを作ってpushするだけで、開発者全員に迅速に価値を届けられる 2. Global Installation 機能
  8. - Deno 2.0, 2.1 でのアップデート内容も大きい - 標準ライブラリの多くが v1 に -

    npm 完全互換 - long term support Denoの採用理由: その他