ライブラリの紹介ページや GitHub のリポジトリで登場する「割と見るけど意味はよくわからない単語」をまとめてみました
誤りがあればガンガン指摘してもらえると助かります
opinionated
意味をググると「[形容詞] 自説を固執する」という謎の和訳が出てきて理解を諦める方もいるんじゃないでしょうか
opinionated については色々な記事で紹介されています
- https://qiita.com/baby-degu/items/7dc4548bf7befc2671f4#opinionated%E3%81%A8un-opinionated
- https://stackoverflow.com/questions/802050/what-is-opinionated-software
プログラミングの文脈に落とし込むと「ライブラリやフレームワークが定義したやり方に利用者(プログラマ)を従わせるような◯◯」というようなニュアンスになります
このニュアンスを掴むと、和訳の「自説を固執する」というのもなんとなくしっくりくると思います
独裁的な意味に聞こえますが別に悪いことではなく、ライブラリが用意したやり方に沿ってコーディングすればいい感じになるよ、と言ったポジティブなニュアンスです
declarative
日本語では「宣言的」という意味です。これも Qiita に解説している記事があります
簡単に言うと「やりたいことをそのまま書けば実現できる・実現したい状態を記述すればライブラリがいい感じにしてくれる」というようなニュアンスになります
まだ抽象的で分かりづらいと思うので、雑で恣意的な例を出します
「Hello world」と書かれたボタンを作りたい場合、 declarative なライブラリであれば
<Button>Hello world</Button>
とすればボタンが作れます。 declarative の対義語である imperative (命令的)なライブラリであれば
// 座標 (0, 0) から (10, 10) に矩形を描く
drawRectangle(0, 0, 10, 10);
// 座標 (0, 5) を始点にして Hello world というテキストを描画する
drawText('Hello world', 0, 5);
// 座標 (0, 0) から (10, 10) をクリック可能な領域に設定する
setClickableArea(0, 0, 10, 10);
のように書く必要があります。一長一短あるのでどちらかが圧倒的に優れている、という訳ではないと思うのですが、最近は declarative なものが好まれている傾向にあるようです
pluggable
プラグイン等の拡張機能をユーザー側が自分で作成して、独自にライブラリやツールを拡張できるような場合に使われます
out-of-the-box
初期設定や面倒なセットアップ無しでインストールするだけで使えるような場合に使われます
ready-to-use
も同義語です
-aware
「何かを理解している」「何かを知っている」という意味になります。これは具体例がないと分かりづらいと思うので「semgrep」というツールを紹介します
semgrep は紹介文に「syntax-aware semantic code pattern search for many languages: like grep」と書いてあります。
要約すると「syntax-aware grep」、つまり「構文を理解している grep」です
このツールがどのようなものなのかを知るとニュアンスが掴めるかもしれません
// file.js
function log(msg) {
var el = document.querySelector(".log");
el.innerHTML += "<p>" + msg + "</p>";
}
log("msg");
例えばこのような JavaScript コードがある場合、
semgrep --lang javascript --pattern '$ELEMENT.innerHTML' file.js
と実行すると「構文的に HTMLElement.innerHTML
となっているような箇所」を探してくれます
今回 document.querySelector
の返り値である HTMLElement
は el
という変数に格納されていますが el.innerHTML
は構文的には HTMLElement.innerHTML
であるので、semgrep はこの部分を見つけ出してくれます
このように semgrep は構文を理解している grep、つまり syntax-aware grep と言えます
semgrep に興味がある方はここから今回紹介した例と同様のデモを試すことができます
https://semgrep.live/9ze
-agnostic
これも意味をググると詰む単語で上位にランクインすると思います。「agnostic 意味」でググってしまうと「不可知論者」という訳の分からない日本語が出てきます
プログラミングの文脈では「何かに依存しない」という意味になります
例えば implementation-agnostic
と言えば「実装に依存しない◯◯」、framework-agnostic
と言えば「フレームワークに依存しない◯◯」となります。他にも protocol-agnostic
「プロトコルに依存しない」であるとか OS-agnostic
「OS に依存しない」なんかがあります
Stack Overflow に同様の質問があります
おまけ: 使うとかっこいい単語
意味は分かるけどよくでてくるものもおまけで集めてみました。英語でライブラリを公開するときなんかに紹介文でこの単語を使っておけば多分かっこよくなります
割と自由に使っても許されそうな単語
powerful
作ったものがパワフルなときに使います。明確な基準は多分無いので自分がパワフルだと思ったら積極的に採用しましょう
elegant
デザインが優雅であるとか、処理が上品であるとか、何かしらエレガントであると思えるポイントがあるときは使えます
pragmatic
これもよく見ます。「実用的」という意味です。理想論ではなくて現実的に問題を解決している場合に使えそうです
effective
日本語にすると「効果的」です。何かしら手段が省けたり、少しの手間で大きなことが実現できたりする場合に使えそうです
straightforward
結構見かけますね。「わかりやすい」とか「単純である」とか、複雑でない場合に使えそうです
ある程度根拠が必要になる単語
flexible
設定を自由に変えることができるとか、特定のユースケースに固定されないとか柔軟な感じのときに使えます。その名前とは裏腹に powerful
elegant
ほど柔軟には使えなさそうです。理由を持って何が flexible なのか説明できるようになってから名乗ったほうが良さそうです
faster
既存のツールやライブラリと比較して実行や処理が速い場合に使えます。特に比べるものが無いけど速い場合は fast
を使いましょう。ただ faster
のほうがキャッチーな感じがするので仮想敵を見つけて faster
とした方が良さそうです
lightweight
サイズが軽量であるとかメモリ使用量が少ないであるとか処理が軽量であるとか、何かしら軽いポイントがある場合に使えます。 faster
と組み合わせるとかっこいいです
state-of-the-art
「最先端」という意味です。新しい仕組みや理論を採用したときに使うことで他のライブラリと一線を画すことができます
blazing
「燃えるような」という意味ですが、ニュアンスとしては強調表現として使われています。「とても速い」と言うときは very fast ではなく blazing fast と言うとかっこよくなります
おわりに
他にも「よく使われてるけど辞書で調べても意味が分かりにくい単語」や「よく使われていてなんとなくかっこいい単語」をご存知の方いたらぜひコメント欄で教えて下さい
それニュアンス違うんじゃない?って指摘もぜひお願いします