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

Rust でパーソナルカラーを診断できる CLI を作った

Rust でパーソナルカラーを診断できる CLI を作った

33ef4c1ebe619115b552db9a9f9a3509?s=128

sadnessOjisan

January 23, 2022
Tweet

More Decks by sadnessOjisan

Other Decks in Programming

Transcript

  1. None
  2. None
  3. None
  4. None
  5. None
  6. _⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > canvaでスライド作ると < > いい感じになるよねwww <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ https://www.canva.com/templates/EAEY6miQi00-pink-and-white-fashion-presentation/

  7. _⼈⼈⼈⼈⼈_ > 飽きた <  ̄Y^Y^Y^Y^Y^ ̄

  8. 改めて自己紹介 • @sadnessOjisan (Twitter, GitHub) • Kuso app creator •

    Iris LT 会は皆勤賞
  9. パーソナルカラーとは • その人にあう色 • 何色が似合うかではなく、ど んな色が似合うか • どんなピンクが似合う? • 青み黄みと明暗を、イエベ春

    、ブルベ夏、イエベ秋、ブル ベ冬として表現 https://personalcol0r.com/personalcolor/4season/
  10. 何を作ったか -> pasona • パーソナルカラーを診断できるCLI • パーソナルカラーとその色にあったライブラリを紹介する https://github.com/sadnessOjisan/pasona

  11. DEMO

  12. None
  13. None
  14. _⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > パーソナルカラーのロゴを持つ < > ライブラリを紹介される <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

  15. 工夫したこと • 全OSで 0deps で動作する • GitHub Actions ベースの publish

    フロー • Tag を打つと全環境に対してコンパイル • GitHub Release 上にバイナリを吐く • brew を向けることで brew 経由でインストールできる • brew tap sadnessOjisan/pasona • brew install sadnessojisan/pasona/pasona
  16. なぜRust • 全環境に対するシングルバイナリを吐き出せる • Mac, Win, Linux • クロスコンパイル •

    CLIの状態管理が容易 • Reduxみたいなのが言語に組み込まれてる • CLIパーサーが強力 • clap • --help などのオプションを生やしてくれる • Description はコメントから生成できる
  17. バイナリを吐くために • Rustではクロスコンパイルがサポート されている • cross • しかし、それに頼らず全OS上でビルド • ubuntu-latest

    上では Win のビルドできない • ⽅法はあるがビルドコンポーネントの追加 とyaml上での分岐を頑張らないといけない • GHAでは Mac, Win, Linux のインスタン スを使える • 直接そのOS上でビルドすればいいじゃん
  18. バイナリの配布 • GitHub Release • tag に対して Release Note を作

    る機能 • バイナリを登録できる • バイナリに対してURLを発行で きる • brew から向けられる • Git tag • Release を作る前に自分で tag を切っておく
  19. パッケージマネージャー • brew は自分のコマンドを インストールできる • Homebrew-${command} と いうレポジトリに Formula

    を登録 • Formula file • コマンドの設計図 • コマンドがデプロイされて いる位置の指定 • インストール時にhookして 実行する処理の登録 • ここでは zip を unzip している
  20. CLI配布するなら Rustがいいぞ! brew tap sadnessOjisan/pasona brew install sadnessojisan/pasona/pasona