Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

Atomのスニペットでコーディング効率がどれくらい上がるのか検証してみました

こんにちは,morivdenです.
私はAtomを使ってコーディングを行っていますが,
デフォルトで入っている補完機能を使ってコーディングの効率を上げています.
(ここでのコーディングの効率とは,コーディングにかかる時間のことを指します.)
他にも何か機能がないか調べてみたところ,どうやらAtomには補完機能だけでなく
スニペットもデフォルトで入っているようです.
私はスニペットを使ったことがないので今回を機に実際に使ってみて,
どれくらいコーディングの効率が上がるのかを検証してみました.

スニペットとは

スニペットは英語でsnippetと書き,「断片」や「切れ端」と言った意味を持ちます.
例えばC言語の場合,プログラムの中で

if (条件式) {
    ......
} else {
    ......
}
for (i = 0; i < n; i++) {
    ......
}
switch (n) {
    case 0:
        ......
        break;
    case 1:
        ......
        break;
    default:
        ......
        break;
}
while (条件式) {
    ......
}

のような表現はいくつも出てきます.
これらの表現を毎回全部手で打っていくと,
時間がかかってしまいます(タイピングがとても速い人は関係ないかもしれません).
そこでこれらの表現を塊としていつでも利用できるようにしたものがスニペットです.
例えば,forと打ってEnterを押すだけで

for (i = 0; i < n; i++) {

}

と出るようになると,全て手打ちの場合20type以上しなければなりませんが,
この場合だとたった数typeで済みます.なんだかとても便利そうですね.

実際に使ってみました

物は試しと言うことで,実際に使ってみようと思います.
早速使ってみたいのですが,まずはスニペットを追加しなければならないので
以下のサイトを参考にスニペットをいくつか登録しました.
スニペット登録| Atom講座 | [Smart]
今回,以下のようなスニペットを登録しました.
includeを入力してEnter
#include <>

mainを入力してEnter

int main(void) {
    
    return 0;
}

printfを入力してEnter
printf("", );

scanfを入力してEnter
scanf("", );

ifを入力してEnter

if () {
    
}

forを入力してEnter

for (i = 0; i < n; i++) {
    
}

例として,配列の要素を出力し,偶数である要素の2乗和を計算するプログラム
をC言語で作ってみましょう.
例 : 2 3 1 5 4 6 → 2 3 1 5 4 6 : 56

#include <stdio.h>
#define NUM 6

int main(void) {
    int arr[NUM];
    int i;
    int sum = 0;

    for (i = 0; i < NUM; i++) {
        scanf("%d", &arr[i]);

        if (arr[i] % 2 == 0) {
            sum += arr[i] * arr[i];
        }
    }

    for (i = 0; i < NUM; i++) {
        printf("%d ", arr[i]);
    }

    printf(": %d\n", sum);

    return 0;
}

このコードを全て手打ちで打った場合と
スニペットを使って打ってみた場合で比較してみます.

結果はこうなりました.
手打ち : 84秒
スニペット使用 : 64秒

かかった時間は20秒,およそ25%削減されました.
コーディングにかかった時間が減ったという意味では効率はアップしています.

次に全タイプ数と1秒あたりのタイプ数を比較してみます.

手打ち : 289type: 3.44type/sec
スニペット使用 : 186type : 2.95type/sec:

まず必要なタイプ数はおよそ35%削減されています.
しかし1秒あたりのタイプ数は0.5typeダウンしています.
この2つの観点から,スニペットを使うことで
必要となるタイプ数が減るので,コーディングにかかった時間は短縮されていますが,
スニペットで使われている変数や表現を組んでいるプログラムに合わせて変更する場合に
矢印キーを打つ必要があるので,それによってタイムロスが発生しているようです.
ですが,それを加味しても手打ちに比べると全体としての効率はおよそ30%上がっています.
今回は短いコードでしたが,長いコードでもスニペットの恩恵は受けられると思われます.

終わりに

今回スニペットを使ってコーディングをしてみましたが,
以前と比べてはるかにコーディングが楽になったように感じました.
もしAtomを使っていて,まだスニペットを使ったことがないという方がいれば,
是非ともスニペットを使ってみてはいかがでしょうか?