怠惰のすゝめ
はじめに
この記事は 釧路高専 Advent Calendar 2019 - Adventar 16日目の記事です(5日遅れ)
遅れた言い訳としてはただの怠慢です(反省しろ)
日本語力がなさ過ぎて読みにくいかもしれませんがご了承ください.
プログラマの3大美徳
皆さんは, プログラマの3大美徳と言われるものをご存知でしょうか ?
プログラマの3大美徳 とはプログラミング言語Perl の開発者 ラリー・ウォール 氏が提唱したもので次の3つである.
一見マイナスな意味で捉えられる単語しかないがそれぞれにそれは深い深い意味がある.
全体の労力を減らすために手間を惜しまない気質.
コンピューターが怠慢な時に感じる怒り.
過剰な自尊心.
まぁ、詳しくはリンク先の解説読んでください.
怠惰と哲学
私は、この中でも特に怠惰が特に大事だと考えます.
というのも
私たちはなぜプログラムを書いているのでしょうか ?
そんな疑問を抱くことはないですか ?
恐らく, この疑問に対する答えは人それぞれでしょう.中には答えが見つけられない人も, そもそもこの疑問を抱いたことがない人もいるでしょう.
私はこの疑問を抱き, 考えました.
そして私の出した答えはこうです.
- 楽をするため!
私たちは楽をするために技術を学び, 技術を利用している.
私がが, 人々が楽をするために, 便利に暮らすために物を創る.
それが技術者であると私は自分の中で答えをだしました.
私が人々が楽をするために手間を惜しまない人が技術者である, つまり
私の中では技術者とは怠惰の塊なのです.
私がしている楽
さて, ここまでは導入です.
拙い文章で何か崇高な事を書いたような気がしますが
結局正直私が伝えたいのはこの一つに尽きます.
俺は楽をしたい.お前らも楽をしろ!!そうしたら皆幸せだ!
なので少しでも皆さんが楽をしたいと思えるように, 楽をするヒントを見つけられるように私がしている楽を紹介します.
1.講義の下準備
弊学ではプログラミング言語の講義があるのですが..
プログラミング言語の講義の時間, 課題用のディレクトリやレポート用のtxtファイルを毎回作らなきゃいけないのです.
めんどくさくない ?
私のプログラミング言語の講義を受けるときに扱うディレクトリの構成は
下のようになっています.(数字はテーマ番号)
Java
├── 01
│ ├── report01.txt
│ └── kadai.java
├── 02
│ ├── report02.txt
│ └── kadai.java
レポートの書き出しは
クラス 出席番号 番 名字 名前 テーマ番号 レポート
つまり講義の度に
$ mkdir テーマ番号
$ エディタ(vim等) テーマ番号/reportテーマ番号.txt
または
$ mkdir テーマ番号
$ touch テーマ番号/reportテーマ番号.txt
$ echo クラス 出席番号 番 名字 名前 テーマ番号 レポート
もしくは
レポートのテンプレを用意して用意して
$ mkdir テーマ番号
$ cp レポートのテンプレ テーマ番号/
これを講義の度にやるのいちいちダルイ.
ということでこんなスクリプト書きました.
あとはこのスクリプトに実行権限をあげれば
講義の下準備は
$ ./preparation.sh テーマ番号
か
$ ./preparation.sh
>テーマ番号(入力)
だけで終わるようになりとても楽になりました.
2.手を動かしたくない
GUI環境マウス操作だるくない ? 手首がダルイ.
そう思った私はマウスをトラックボールマウスに変えました.
トラックボールマウスに変えたことで手首を動かさず指だけ動かせばマウスポインタを操作できるようになりました.怠惰の極みですね.
https://www.amazon.co.jp/dp/B074Z71C2M/ref=cm_sw_r_tw_dp_U_x_wUq.DbJYNX9BR
CUI環境タイピングだるくない ?
gitコマンドとか長いしtarのオプション覚えてられないの.
エイリアスを設定して楽をした.
.bashrc
3.snipetの勧め
スニペットという機能はソースコードを登録してコーディング中に呼び出せる機能です.
プログラミングに用いるようなある程度高級なエディタには搭載されていることが多い.エディタそのものに搭載されていなくともプラグインという形で提供されていることもある.
例えばJavaの
System.out.println("");
標準出力したいだけなのに長ったらしいですよね.
これをsysoutとかprintlnとスニペットに登録すればsysoutやprintlnと打つだけで
System.out.println("");
を入力できるようになります.
まぁ、この程度ならスニペットに頼らなくても統合開発環境(IDE)等のLSP(Language Server Protocol)の搭載されたエディタを使っていれば楽をできるわけですが...
このメソッドをopenfileというキーワードだけで展開できたら楽ですよね.
これができるのがスニペットというものなのです.
4.開発環境を構築するのがめんどくさい
部活動で使うコンピュータを全部同じ状態にセットアップするのクソダルイ.
Vagrant(VirtualBox)で開発環境建てるときもシングルボードコンピュータを買ったときもだいたいたどり着く環境は同じなのにいちいちセットアップダルイ.
スクリプトを書きましょう.
https://github.com/no1fushi/ConfigFile/blob/master/sh/prov_ubuntu.sh
まぁ仮想環境ならDocker使えというお話なのですが..
ここまで4つの僕のしている楽を紹介しました
皆さんも是非楽をして、新しい楽の仕方を発見したら私に教えて下さい.