わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

scratchについて一言いっとくか

講義で話す形式で.

日常のスクラッチ

今,出てきたscratchという言葉について,脱線してみようと思います.
辞書的な意味では,「引っかく」という意味の動詞です.名詞にもなります.引っかいてできた傷を指すこともあります.
テレビのクラブシーンなんかでですね,「キュキュッ」という,知らない人にとっては不自然な音が聞こえることがあります.あれはレコードを意図的に前後に動かすことで,針がこすれて出る音です.「スクラッチ音」とも言います.
とあるテレビゲームで,このスクラッチという操作を取り入れているものがあります.先ほど「不自然な音」と言いましたが,そのテレビゲームもそうですし,銭金は別にして来場者に楽しみを与えたいと思うDJ,ディスクジョッキーのスクラッチというのは,自然というか絶妙なタイミングで行うことになります.
日常の「スクラッチ」と言えば…スクラッチカードですかね.隠されているところを,硬貨か何かでこすったら,薄い,たいていは銀色のが取れて,当たりだの何だのが出るやつです.英語でそのままscratch cardとも言ってもいいですし,scratch ticketとなることもあります.ここでのscratchは,「引っかく」よりも「こする」という意味になります.

クラッチの熟語

我々の学科で「scratch」というのを,このような「引っかく」や「こする」といった意味で使うことは,まずありません.
学科の話に行く前に,技術者として,今から言うふたつのフレーズは,知っておいて,自分から使わなくても,他の人が言っていたら,ああそういう使い方をするのかと反応できるようになっておくといいでしょう.
一つは,from scratchという熟語です.
辞書にも載っていて,「ゼロから」という意味です.「イチから」のほうがしっくりくるかもしれません.これは0オリジン・1オリジンの論争になりそうですが,その方向への展開は避けるとします.
"from" "scratch"…熟語なので一個一個の意味を考える必要がないといえばないのですが,scratchという単語自体に,「ものの始まり」という意味があります*1.ということで,from scratchは「最初から」になる,と思えばいいでしょう.「スクラッチから」という人もいます.
もう一つの言葉は,「フルスクラッチ」です.
英語でfull-scratchと書きたいところですが,どうやらこれは和製英語のようです.
意味は,「スクラッチの状態から,ものを作りあげる」という意味で,いかにも技術者好みの言葉です.
というのもこのフルスクラッチには,出来合いの技術,既存技術を使わずに構築した,というニュアンスが含まれるからです.そうそう,「フル」に注意すると,完成させたものに対して使う表現です.*2
まあ現実には,既存技術一切なしで,ものを作るなんてできないし*3,しばしば,既存技術を活用する方が,したいことを効率良く少ないリスクで実現できるものなのですけどね.学術的な発表でも,「すべて自分でやった」よりは「なになにを用いて作った」というほうが,訴求力があります.

クラッチバッファ

さて我々の学科で知っておくべきscratchはですね,Emacsを起動したときにあります.1年生の授業で,使い方を教わりましたよね?
Emacsを起動したときのウィンドウに,いろいろ書けると思います.しかしEmacsを終了するときには,そこに書いたのは保存されません.
これがscratchバッファです.「[あ]」とか出るステータスラインに「*scratch*」と出ています.
また新たな意味のscratchでして,これは「走り書き」,「殴り書き」といった意味になります.もちろん辞書にも載っています*4
何を書いてもいいのかというと,よくありません.理由はふたつあって,一つは,さっきも言いましたが,Emacsを終了するとその中身がなくなるからです.
ファイルに保存しておけば,Emacsを起動し直してそのファイルの編集を再開できます.仮にEmacsが異常終了したときにも,recover-fileというコマンドを使って,ある程度のところまで復旧できる可能性があります.scratchバッファの内容を保存する方法も知られていますが,手間の割に効果が少ないかもしれません.
もう一つの理由は,起動時のscratchバッファは,Lispモードになっているからです.
Emacsで,このキーを押せばこう動作する,というのの大部分は,Emacs Lispという言語で書かれています.逆に言うと,Emacs Lispで自分でコードを書けば,キーの割り当てを変更したり,あるいは,一連のやりたい処理を関数として定義して,繰り返し実行したりできるのです.
そういう関数定義や何らかの式の評価を,手っ取り早く試すというのが,scratchバッファの本来の使い方です.
先日,ある授業を巡回する機会がありました.先生のほうでCのプログラムを作っていて,授業開始のときに学生が受け取り,プログラムを打ち込んで動作確認完了までの時間を測る,というものです.
そのときに何度か,そのscratchバッファで打ち込んでいて,一通り書いてから保存する,という状況を目にしました.
これではEmacsのメリットが台無しです.というのも,Emacsのそれぞれのバッファ,あバッファは編集対象くらいに思ってください,バッファには「モード」が結びつけられていて,モードに応じて,色づけや,自動でインデントする機能などが違ってくるからです.
どうすればいいかというと,まずEmacsを起動します.次に,保存したいファイル名を考え,find-fileで…Emacsではコントロールx,コントロールf*5ですね.マウス操作でもかまいませんが…そのファイル名を指定すると,真っ白な状態のバッファができます.
ファイル名が「program.c」なら,Cモードになります.Cでプログラムを書くのに適したモードです.
あとは打ち込んでいけば,自動で色づけされ,Enterキーを押すと自動でインデントしてくれます.文字列の " の付け忘れや,カッコ類の対応がおかしなのも,画面から一目瞭然となるのです.

まとめ

scratchという単語は,いろいろな意味を持っています.「引っかく」「こする」「ものの始まり」「殴り書き」を紹介しましたが,他にもありますし,from scratchのほかにup to scratchという熟語には,また別のscratchの意味が含まれているように見えます.
Emacsのscratchは,開始時に出るから「ものの始まり」かというとそうではなく,「殴り書き」の意味です.Emacs Lispの式を書いてみて評価する,という意図で設けられているバッファですし,意図的にせよ異常終了にせよ,終了するとなくなってしまいますから,先にファイル名を決めて開き,モードを確認し,快適にテキストファイルの編集をするよう,心がけましょう.

*1:例えば,Merrium-Websterで,scratch (noun)の4番目に "the starting line in a race" とあります.

*2:「〜を用いてフルスクラッチで構築した」「フルスクラッチで作っている最中なんだけど行き詰まって」という表現は不自然,ということです.私の見聞きする限りでは.

*3:大学1年で通年でとった社会学という講義の中で,規範にまったく従うことなく生きるとすれば,朝起きることから疑わなければならない,とおっしゃっていたのを思い出します.

*4:Merriam-Webster,scratch (noun)の2番目に,"scrawl, scribble" とあって,各単語にリンクが張られています.

*5:と言いますが,実際の操作は,Ctrlを押しながらX Fを押して,Ctrlを離すことになります.