@ysn

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

コマンドラインツールを書くのにおすすめなプログラミング言語を教えて下さい

Q&A

Closed

要望

  1. テキストエディタでサクサク書けること
  2. 書きながらサクッと動作確認できること
  3. コードがポータブルであること
  4. 書いたコードをサクッとインストールできるパッケージ管理ツールを持つこと
  5. サードパーティー製になるべく依存しないで書けること

要望詳細

1. テキストエディタでサクサク書けること

心は Vimmer なので。😎

2. 書きながらサクッと動作確認できること

REPLはOKです。ビルドしてから実行をワン・コマンドでよろしくです。

コードを書く → ターミナルに戻る → 実行して確認

のライフサイクルで開発したいです。🙂

3. コードがポータブルであること

Windowsのコマンドプロンプトでも動いてほしいです。
良いツールができたらみんなにおすそ分けできるようなプログラマーになりたいからです。 😄

4. 書いたコードをサクッとインストールできるパッケージ管理ツールを持つこと

アンインストールはどこからでもできることは必須です。😤

5. サードパーティー製になるべく依存しないで書けること

コメダはネットがないんです。  😥

7 likes

6Answer

Rustは結構要望を満たしているかもしれません。
言語としてはハードル高いですが、一度慣れるととても快適だったりします。

  • テキストエディタでサクサク書けること
    vim+Language serverがちゃんと動く。

  • 書きながらサクッと動作確認できること
    cargo run一発でコンパイルから実行まで。
    別ウィンドウでcargo watchしておけば、エディタで保存するだけで自動実行。

  • コードがポータブルであること
    Linux/macOS/Windows向けにビルド可能。
    muslでシングルバイナリにしておけば、Alpine Linuxなど最小限の環境に持ち込んでも動く。

  • 書いたコードをサクッとインストールできるパッケージ管理ツールを持つこと
    cargo installでインストールできる。

  • サードパーティー製になるべく依存しないで書けること
    一度ビルドして依存ライブラリをキャッシュしておけば
    --offlineオプションでオフラインでも開発できる。

5Like

個人的にrubyで書くのが好きです!
理由としては↓の通りです

  1. thorというgemを使うと割と簡単に実装ができる
  2. gemとしてライブラリを公開しやすい
  3. Rubyなのでエディタの機能も充実してる

3Like

Rust と Ruby に一票ずつ。
(ただ,私は Rust 超初心者で,ごく簡単なものしか作ったことありません→説得力なし)

Rust コミュニティーが特に注力する分野が四つあって,その一つがコマンドラインツールです。
https://www.rust-lang.org/ja

コマンドラインツール作成の何が面倒といって,パラメーターの解析とヘルプの作成じゃないですか。いまどれが定番か知りませんが,その辺の面倒をバッチリ見てくれるライブラリーがあったと思います(まあ,他の言語でも何かしらあるでしょうけど)

一方,「自分で使うだけだから雑に書いて済ませたい」というとき Rust だと面倒かもしれませんね。

Ruby で作るときは,@getty104 さんと同じく Thor という gem を使うのがオススメ。
日々の定型作業なんかを Thor のタスクに追加していくと,めちゃ捗ります。
Ruby はややこしいことを簡潔に記述できるのがいい。

一方,Ruby の処理系がインストールされていないと動かないので,作ったツールを社内で配ったりするのが面倒です。
また,処理系が立ち上がるのにちょっと時間がかかる(条件次第; 1 秒以上かかったり)ので,打った瞬間に返してほしい用途ではイラっとしますね。

2Like

Bash で、いろんな言語を Bash Bash 叩くのが好きです。

Mac ユーザーなので PHP7, python2, Ruby がデフォルトで使えるため、bash のスクリプト内部から外部実行することに快感を覚えます。

それらをディレクトリに入れて git で管理して、GitHub のプライベート・リポジトリに突っ込んでいます。

そうすると brew でも(tap でリポジトリを追加すれば)インストールや更新ができるので楽です。

1Like

それはもうperlしかありません。perl一択。

  • テキストエディタでサクサク書けること
  • 書きながらサクッと動作確認できること

スクリプト言語なので何も問題なし。エディタと端末ソフト(あるいはDOSプロンプト)をデスクトップ上に併存させておけばどちらもサクサクです。ワンライナーも得意なので、その場合はエディタを開く必要さえありませんが。

  • コードがポータブルであること

どのOS向けにもperlのパッケージは存在します。あるいはbusyboxを使う手もあります。sedなどlinuxとBSD系(MacOSなど)で微妙にパラメータの意味が違ったりしますが、perlではそんなことはありません。その意味ではシェルスクリプトよりもさらにポータブルです。

  • 書いたコードをサクッとインストールできるパッケージ管理ツールを持つこと

これはgitで。

  • サードパーティー製になるべく依存しないで書けること

使い込んでくるといろいろライブラリが欲しくなりますが、標準セットだけでも(pure perlと呼ばれる)bash, grep, awk, sedを足して2掛けたぐらいの機能を持つので、相当ややこしいこともできます。

**の機能がないとかオブジェクト指向への対応がなっていないとかディスっているwebページが散見されますが、耳を貸す必要はありません。「機能がない」の多くは批判している人が知らないだけですし、オブジェクト指向は別に必須というわけではないですから。

1Like

なんだかんだ言ってもC言語じゃないですかね。当たり前にあるgetoptsとかのライブラリや依存関係の解決問題なんかを考えればLinuxだとCで書くのが一番な気がします。
WindowsならPower Shellでも結構書けます。

1Like

Your answer might help someone💌