鳰のような形をした僕の迂回路

My detour/diversion like a (little) grebe.

ErgoDox組立てとキーマップの話

 

この前組み立てたInfinity ErgoDoxのキーマップが固まりつつあるのでご紹介。

f:id:CydonianBanana:20160604183713j:plain

ちなみにErgoDox とはオープンソースの左右セパレート型キーボードで、名前の通りエルゴノミクスな設計により肉体への負荷を軽減してくれるキーボードであり、朝起きてから寝るまでキーボードの前に座って腱鞘炎と闘うemacser御用達の素敵アイテムであります。

ErgoDoxの優れている点は、親指という最も強靭な指を効率的に使えるように広大な親指エリアが設けられていること、ファームウェアオープンソースなので自由なキーマップがプログラムできること、あと左右セパレート型なので肩や手首への負担が軽減できること、などです。

腕を開いて胸を張った自然な姿勢で打鍵していると、これがタイピングのあるべき姿なのだという感慨がふつふつと湧いてきます。ぼくは今から予言しておきますが、今後は左右セパレート型じゃないキーボードを会社が提供した場合即労災が適用されるようになってくると思います。

ErgoDoxの入手先

現状でErgoDoxの購入先は3つくらいある。

  1. IndiegogoにてErgoDox EZ(完成品)を注文することができる。高さ調節用のチルトが付いてたり、見た目に手作り感がなくてなんとなくクォリティが高い感じがする。 
  2. FalbaTechではパーツの素材やカラーに選択の自由がある。パーツによってはかなりキューティクルな見た目のErgoDoxに仕上げることも可能。
  3. MassdropにてInfinity ErgoDoxの組み立てキットが提供されており、半田ごてを用意して自分で組み立てる必要がある。僕の場合、Massdropで注文してからkitが届くまでに2,3ヶ月かかった。Infinity ErgoDoxには上部にLCDディスプレイが付いており、ファームウェアを書き換えることでLCDの発光パターンや表示パターンを自由に設定することができる。

ファームウェアについては、ErgoDox EZは前回のPlanckキーボードと同じqmk firmwareが提供されている。Infinity ErgoDoxについてはKiiBohd controllerが提供されている(WhiteFoxも同じ。Massdrop系はこっちっぽい)。

ぼくはしばしばMassdropで買い物してる流れでInfinity ErgoDoxを購入して組み立てました。

f:id:CydonianBanana:20160527224733j:plain

f:id:CydonianBanana:20160527225348j:plain

 

ファームウェアのビルド

ファームウェアをビルドする前にdfu-utilを用意する。Macの場合はhomebrewで準備するのが楽チン。

brew install dfu-util 

オープンソースFirmwareとしてKiiBohd controllerが提供されている。使い方としては、以下のシェルスクリプトを実行すると、

./controller-master/Keyboards/ergodox.bash

以下の2つのディレクトリができる。右手部分がICED-R、左手部分がICED-Lに対応している。

./controller-master/Keyboards/ICED-L/
./controller-master/Keyboards/ICED-R/

ファームウェアを上書きするときは、右手部分・左手部分それぞれについて、ErgoDox背面のリセットボタンを押した状態で下記コマンドを打てばいい。

dfu-util -D ./controller-master/Keyboards/ICED-L/kiibohd.dfu.bin

キーマップをいじるときは、ergodox.bashでDefaultMapに指定されているファイルを編集する。

./controller-master/kll/layouts/mdergo1Overlay.kll

キーマップをいじるとこを詳しく知りたい人はKiibohd.comを読む。もし単純なキーマップで事足りるならKLL Keyboard Configuratorでバイナリファイルを生成してくれるので楽チン。でもCtrl+Alt+Deleteとかマウス操作の設定とかは多分できない。あと、LCDディスプレイの表示をいじりたいときはCustomizing the Ergodox Infinity LCD Logoが参考になる。

キーマップ

これがぼくが考えたさいきょうのキーマップだ!

# Keymap 0: Basic layer
#
# ,--------------------------------------------------.           ,--------------------------------------------------.
# | Grv    |   1  |   2  |   3  |   4  |   5  |  Esc |           | CADel|   6  |   7  |   8  |   9  |   0  |   =+   |
# |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
# | Tab    |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   -_   |
# |--------+------+------+------+------+------|  {   |           |   }  |------+------+------+------+------+--------|
# | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '"   |
# |--------+------+------+------+------+------|  (   |           |   )  |------+------+------+------+------+--------|
# | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /?  |   \|   |
# `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
#   | Hyper| RCtrl| LAlt | LGUI | MHEN |                                       | HENK | Left |  Up  | Down | Right|
#   `----------------------------------'                                       `----------------------------------'
#                                        ,-------------.       ,-------------.
#                                        |  L1  | PgUp |       | DEL  |  L2  |
#                                 ,------|------|------|       |------+------+------.
#                                 |      |      | PgDn |       | BSpc |      |      |
#                                 | Space|Lshift|------|       |------| LCtrl| Enter|
#                                 |      |      | SAlt |       | RAlt |      |      |
#                                 `--------------------'       `--------------------'

# Keymap 1: Func layer
#
# ,--------------------------------------------------.           ,--------------------------------------------------.
# |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F11 |           |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |        |
# |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
# |        |      |mouseU|      |      |      |      |           |      |      |      |      |      |      |        |
# |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
# |        |mouseL|mouseD|mouseR|      |      |------|           |------|      |      |      |      |      |        |
# |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
# |        |      |      |      |      |      |      |           |      |      |      |      |LClick|RClick|        |
# `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
#   |      |      |      |RClick|LClick|                                       |      |mouseL|mouseU|mouseD|mouseR|
#   `----------------------------------'                                       `----------------------------------'
#                                        ,-------------.       ,-------------.
#                                        |  L1  |      |       |      |  L1  |
#                                 ,------|------|------|       |------+------+------.
#                                 |      |      |      |       |      |      |      |
#                                 |      |      |------|       |------|      |      |
#                                 |      |      |      |       |      |      |      |
#                                 `--------------------'       `--------------------'

ポイントは、

  • 親指でShift, Ctrl, Alt, Enterがそれぞれ押せること。Back SpaceについてはCtrl+Hで事足りる(Windowsのときはkeyhacでemacsキーバインドを再現してる)。
  • HENKとMHENとあるのは、変換キーと無変換キーで、WindowsではこれらをIMEのOn/Offにアサインしている。このため、Macと同じ感覚で、全角/半角の切り替えができる。
  • CADelとあるのはCtrl+Alt+Delete。
  • Hyperは Ctrl+Shift+Alt+GUI。ソフト側で変なショートカットを設定したいときに使う。
  • L1とあるのはファンクションキーで、これを押している間はレイヤー1のキーマップになる。レイヤー1には試験的にマウス操作を割り当てていて、この操作感がまあ悪くない。でもトラックポイントと比べるとやっぱり使いづらい。
  • 職場のWindows用を考えているので、メディアキーの割り当てとかはしていない。

という感じ。

左手小指を酷使しなくなるだけで、左手首や肘の痛みが楽になったことを実感できる。

未来感

最近はPlanckキーボードを中央に配置して未来感を演出するのにハマってる。

f:id:CydonianBanana:20160604183237j:plain

 

こちらからは以上です。

Planckキーボードの話

 

このまえ組み立てたPlanckキーボードに指がだいぶ慣れてきたのでこのタイミングでキーマップをさらす。

f:id:CydonianBanana:20160529230345j:plain

ちなみにPlanckキーボードとは、

The Planck is a DIY compact 40% ortholinear (as opposed to staggered) keyboard kit that optimises the use of your hands in a thumb-oriented layout.

である。OLKBが設計、最近はmassdropで買える。

このPlanckキーボードは、後でレイアウトを晒すけど、EnterキーやBackSPCキーが親指で押せること、emacsで多用するLCtrlキーまでの距離が相対的に近いことなどから、指や手首への負担を大幅に軽減してくれており、今や人生に欠かせない存在となっている。

そのうえ上掲の写真のとおりキューティクルなキーキャップを装備することでたいへん可憐な見た目のキーボードとなるポテンシャルを秘めており、ぼくに至ってはエレノアという固有名詞をつけて毎日愛でているという始末である。そういうわけで皆さんにも是非おススメしたいのでこの記事を書くことにした。

キーマップ作成環境

キーレイアウトを自由に編集するために必要となるファームウェアコンパイルおよび書き換え環境を Planck Firmware Guideに沿って整える。MacOSユーザーならhomebrewでやるのが楽チン。

ファームウェアのソースは デフォルトのソース を適宜いじってやればいい。

たとえば自分のkeymap.cを

/qmk_firmware-master/keyboard/planck/keymaps/hoge/keymap.c

に作った場合は、planckキーボードの背面のボタンを押した状態で

make clean && make KEYMAP=hoge dfu 

とすればファームウェアコンパイル、書き換えができる。

キーレイアウト

ぼくがかんがえた最強のキーレイアウトは以下の通り。

/* MAC
 * ,-----------------------------------------------------------------------------------.
 * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  -   |
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 * | Ctrl |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Up   |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * | Esc  | Ctrl | Alt  | GUI  |Raise |Space |Enter |Louwer| GUI  | Left |Right | Down |
 * `-----------------------------------------------------------------------------------'
 */
[_MAC] = {
  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_MINS},
  {KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_UP},
  {KC_ESC,  KC_RCTL, KC_LALT, KC_LGUI, RAISE,   KC_SPC,  KC_ENT,  LOWER,   KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT}
},

/* Lower
 * ,-----------------------------------------------------------------------------------.
 * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |  +   |
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 * |      |      |      |      |      |      |      |      |      |   {  |   }  |  |   |
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 | Vol+ |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |  Del |      |      |      |LANG2 | Bksp | Bksp |      |      | Mute | Next | Vol- |
 * `-----------------------------------------------------------------------------------'
 */
[_LOWER] = {
  {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9),    S(KC_0),    S(KC_EQL)},
  {_______,   _______, _______, _______, _______, _______, _______, _______, _______, S(KC_LBRC), S(KC_RBRC), KC_PIPE},
  {_______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,      KC_F10,     KC_VOLU},
  {KC_DEL,    _______, _______, _______, KC_LANG2,KC_BSPC, KC_BSPC, _______, _______, KC_MUTE,    KC_VOLD,    KC_MNXT}
},

/* Raise
 * ,-----------------------------------------------------------------------------------.
 * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  =   |
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 * |      |      |      |      |      |      |      |      |      |   {  |   }  |  ¥   |
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 | Vol+ |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |  Del |      |      |      |      | Bksp | Bksp |LANG1 |      | Mute | Next | Vol- |
 * `-----------------------------------------------------------------------------------'
 */
[_RAISE] = {
  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_EQL},
  {_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS},
  {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_VOLU},
  {KC_DEL,  _______, _______, _______, _______, KC_BSPC, KC_BSPC, KC_LANG1, _______,KC_MUTE, KC_VOLD, KC_MNXT}
},

ポイントは、レイヤー1のRaiseキーとレイヤー2のLowerキーがそれぞれAppleキーボードのkanaキー(LANG1)とeisuキー(LANG2)に対応していること。これにより、日本語IMEと英数字との切り替えが、Appleワイヤレスキーボードと同じ感覚でできる1

ただ、このkanaキー(LANG1)とeisuキー(LANG2)を有効にするためにちょっとした作業が必要だった(以下)。

かなキーと英数キーを使えるようにするために

以下の経緯で改訂Rev.upされており、特に作業は発生しなくなった。

github.com

以下の議論のおかげで助かった。

Can't use KCLANG1 & KCLANG2 key

qmkfirmwareを読み解く

具体的な作業としては、

/tmk_core/protcol/lufa/descriptor.c

に対して以下の変更を加えることで、kanaキー(LANG1)とeisuキー(LANG2)が有効になる。

HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_USAGE_MAXIMUM(8, 0xFF), /* Keyboard Application */
HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8, 0xFF),

->

HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_USAGE_MAXIMUM(8, 0x68), /* Keyboard Application */
HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8, 0x68),

windowsマシンでの環境

windowsマシンで使う場合、macで言う所のcommandキーをctrlキーにしたいし、あとぼくはwindowsキーをlauncher代わりに使っているので、欲しい。そこでkeyhacを使ってキースワッピングをしている。

職場では普段HHKB Japaneseを使っているが、Planckキーボードを繋いでもErgoDoxを繋いでも、編集なしですぐ使えるように、以下のconfig.pyファイルでやっている。

# -*- mode: python; coding: utf-8-dos -*-

# coding-system: utf-8-dos
# file name:     config.py 
#

from time   import sleep
from keyhac import *

def configure(keymap):

    ########################################################################
    ## keymap-replace
    ########################################################################
    # for HHKB
    keymap.replaceKey( "(242)", "RCtrl" )
    keymap.replaceKey( "LWin",  "RCtrl" )
    # RWinと半/全の入れ替え
    keymap_global = keymap.defineWindowKeymap()
    keymap_global[ "D-(243)" ] = "RWin"
    keymap_global[ "D-(244)" ] = "RWin"
    keymap_global[ "U-(243)" ] = []
    keymap_global[ "U-(244)" ] = []

    # for Planck
    keymap.replaceKey( "RCtrl", "LWin" )# PlanckのRCtrlを、L-GUIにしてしまえば、この設定はいらない
    keymap.replaceKey( "RWin",  "RCtrl" )

    ########################################################################
    ## Basis
    ########################################################################
    # editor of config.py
    keymap.editor = "emacs"

    # True: 日本語キーボード
    # False: 英語キーボード
    is_japanese_keybord = True

    # emacs のキーバインドに"したくない"アプリケーションソフトを指定する(False を返す)
    # keyhac のメニューから「内部ログ」を ON にすると processname や classname を確認することができます
    def is_emacs_target(window):
        if window.getProcessName() in ("cmd.exe",            # cmd
                                       "mintty.exe",         # mintty
                                       "emacs.exe",          # Emacs
                                       "runemacs.exe",       # Emacs
                                       "emacs-w32.exe"):     # Emacs
            return False
        return True
    keymap_emacs = keymap.defineWindowKeymap(check_func=is_emacs_target)

    # mark がセットされると True になる
    keymap_emacs.is_marked = False

    # 検索が開始されると True になる
    keymap_emacs.is_searching = False

    # キーボードマクロの play 中 は True になる
    keymap_emacs.is_playing_kmacro = False

    # universal-argument コマンドが実行されると True になる
    keymap_emacs.is_universal_argument = False

    # digit-argument コマンドが実行されると True になる
    keymap_emacs.is_digit_argument = False

    # コマンドのリピート回数を設定する
    keymap_emacs.repeat_counter = 1

    ########################################################################
    ## IMEの切替え
    ########################################################################

    # toggling
    def toggle_input_method():
        # バルーンヘルプを表示する時間(ミリ秒)
        BALLOON_TIMEOUT_MSEC = 500
        keymap.command_InputKey("A-(25)")()
        if 1:
            if not keymap_emacs.is_playing_kmacro:
                sleep(0.05) # delay

                # IME の状態を取得する
                if keymap.wnd.getImeStatus():
                    message = "[あ]"
                else:
                    message = "[A]"

                # IMEの状態をバルーンヘルプで表示する
                keymap.popBalloon("ime_status", message, BALLOON_TIMEOUT_MSEC)
            

    # Switching
    #  @param flag      切り替えフラグ(True:IME ON / False:IME OFF)
    def switch_ime(flag):
        # バルーンヘルプを表示する時間(ミリ秒)
        BALLOON_TIMEOUT_MSEC = 500
        # if not flag:
        if flag:
            ime_status = 1
            message = u"[あ]"
        else:
            ime_status = 0
            message = u"[A]"
        # IMEのON/OFFをセット
        keymap.wnd.setImeStatus(ime_status)
        # IMEの状態をバルーンヘルプで表示
        keymap.popBalloon("ime_status", message, BALLOON_TIMEOUT_MSEC)
        
    def ime_on():
        switch_ime(True)
        
    def ime_off():
        switch_ime(False)

    ## 「IMEの切替え」のキー設定
    keymap_emacs["(28)"]  = ime_on
    keymap_emacs["(29)"]  = ime_off
    keymap_global["LC-Yen"] = toggle_input_method
#    keymap_global["LC-o"]   = toggle_input_method
(後略)

まとめると、MacでもWinでも文章を書く上で僕が一番気にするのがIMEの切り替えで、windowsの全角半角キーみたいにトグル式だと無駄に脳を使ってしまうので、がんばってAppleキーボードみたいな感じにしましたということです。

Apple Magic Trackpadとの相性f:id:CydonianBanana:20160529230432j:plain

NPKC Wooden Wrist RestsのTKL Wrist Rest: 13.98 x 2.95 in (35.5 x 7.5 cm)とMagic Trackpadとの相性が非常によく、上掲の写真の通りぴったりサイズであり、気持ちがいいのでおススメです。

  1. karabinerを使ってcommandキーワンショットでIME切り替えをするのと利便性は変わらないと思う。 ↩︎

シーラッハ『カールの降誕祭』

 

カールの降誕祭

カールの降誕祭

 

 『犯罪』 のシーラッハによる小品3点に、版画家が挿画を入れていく。体感、挿画1枚/5 ページといった頻度。挿画は文章と混然としており、黒い版画に対しては白いフォントを使うなど、画面構成が面白い。

小説の中身について。説明はせず、描写をする。小説のお手本めいているとも思う。三人称だが、その描写は登場人物の認識に寄り添って描かれており、決して逸脱しない。登場人物の所作の描写などはすばらしく、そぎ落とされた短い1文の所作によって、人物の内面に生じている異常・異変を、読者に自然に予感させる。過不足なく、最小限の描写によって人物を造形し、物語を駆動させる。端的に言って完成された小説である。

ヒトを興奮させる音楽について

音楽を聴いていて興奮することがある。音楽は音を時間軸上に配置したものだが、ヒトという生物を興奮させやすい音の配置のパターンがあるように思う。これについて体系的に論じる能力がぼくにはないので、ぼくが興奮する音楽のパターンを以下に列挙したい。そのうち体系的に整理できたらと思う。

 

満を持してドラムがくる

ドラムがくる。

www.youtube.com

 www.youtube.com

 

 

なんかよくわからないけどメッチャ速い

メッチャ速い。

www.youtube.com

www.youtube.com

www.youtube.com

 

 

 

めっちゃ高い声が伸びていく

どこまでも伸びていく。下はビデオもいい。

www.youtube.com

 

 

ボレロみたいなやつ

最小構成で始まったフレーズが繰り返されるにつれて賑やかになっていくパターン。

www.youtube.com

www.youtube.com

 

  

静かな曲調から一転して激しくなる

いきなりくる。

 www.youtube.com

 www.youtube.com

 

 

盛り上がっていって絶頂するパターン

ビクンビクンッ。

www.youtube.com

www.youtube.com

www.youtube.com

 

サビ前に打楽器がドコドコくる

ドコドコくる。

www.youtube.com

  

 

静かな曲調から徐々に盛り上がって爆発する

くるぞ……くるぞ……というパターン。

www.youtube.com

www.youtube.com

  

 

ベースがイレギュラーなフレーズを放つ

下の動画の2:04あたりで放つ。

www.youtube.com

 

 

 同じフレーズを繰り返してタメてから放つ

ずるい。

www.youtube.com

 

 

フォウ!デーッデーデ(ドコドコドコ のパターン

パターンとは言っていない。

www.youtube.com

 

  Banana, KIA.

塩田明彦『映画術』

 

 

といったわけで、映画が本当に面白いのは、今ご覧になったように、上辺で語られている物語がある一方で、それとは別の次元で、もう一つの物語がスタイルとして語られているからです。

 

僕らはよく、役者が会話するシーンや泣いているシーンなどがドラマで、銃撃戦やチャンバラが始まったらそれはアトラクションなんだ、ドラマは停止状態なんだと思いがちなんだけけども、実はぜんぜんそうじゃなくて、殺人にこそ、「動き」の連続のなかにこそ、ドラマの核心が集約されている。

 

自分がある世界なり対象なりを描くときに、どういう「動き」を捕まえてくるか。三隅研次はショットの天才だと言いましたけど、ああいうシンプルな動きーー影の中の動き、按摩として背中を揉む、殺陣の中で相手を背負うーーそういうひとつひとつの非常に単純んな動きの中で、一人の人間の生き様を見せてしまう。言わばその人物の人生を、「1分間」で捕まえる。何十年に及ぶ人生の「1分間」が、平手造酒の背中に捕まった一瞬だったり、平手造酒を背負った一瞬だったりする。そうした「動き」を組み合わせたものーーそれが映画なんです。

 

映画には映画独自の言葉遣い、話法というものがあって、これまでも語ってきたように動線だとか、衣装の美術の設計だとか光の明暗だとか、とにかくありとあらゆる演出の技術と、それから作劇の技術が相待って、一つの世界を作り出していくんですね。その作劇と演出と演技が映画史上、最も単純かつ強力な形で結びつきあっていたのが、ハリウッドの古典的な話法というもので、そうした協力関係の中では、たとえ俳優の演技がシンプルで外面的でも、映画はものすごく多くのことを観客に伝えることができたんです。

 

つまりですね、そもそも音楽とは何か、歌とは何かってことを僕なりに定義しますとね、一つの感覚なり、感情なり、体験なり、そういうものに一つの形を与えてですね、それを永遠に記憶したい、反復したい、持続させて行っていう、そういう欲望による一つの「形式」の発見というのが音楽だとして、その形式っていうのが、実はものすごく抽象的なはずなのに、一度形を持ってしまったその抽象的な形式=音の連なりっていうのが、なぜか人の心を動かす。それは本当は抽象的なはずなのに、ものすごくリアルに存在する何かになっちゃう、しかも、そんなふうに一度かたちになってしまうと、そもそも土台にあった現実との対応関係に支えられなくても、音楽は平然と存在出来てしまう。(中略)

だから演技なら演技で、その演技というものがある瞬間、現実の単なる形態模写であることを超えて、あるかたち(「形式」)を持ったとき、それが現実の反映だから力があるんじゃなくて、もはや現実を超えて、一つのかたちがかたち自身の表現としての強さによって、あるリアリティを持ってしまう……人の心を動かすことができてしまうときにね、ああ、これは音楽だって……。

 

面白いことがわかりやすい言葉で具体例を交えて書かれています。映画の技法とかそういうのに足を突っ込みたい人が最初に手にすべき本なんじゃないかな。

危険なメタファー

科学も文学も、現実に起こった事柄を一般化することはできないのだと思います。たとえば物理屋がやっていることは、「想像上の現象」を考えて、それらを一般化することです。こうして一般化された法則を足がかりにして現実の事柄を理解しようと努めるのが物理屋の仕事になります。現実の事柄をすぐ一般化する人がメディアに露出していたら、それはただの出まかせおじさんであり、科学者ではない気がします。
 
文学でも、現実の出来事を一般化することはできないのでしょう。現実にあるのは、個々の問題だけです。一般化しようとすると、詳細を取りこぼしてしまう。その詳細こそが全てであるはずなのに、です。ヘロドトスホメロスを思います。ヘロドトスは『歴史』において、現実の出来事をそのまま記述しました。そこに一般化の入る余地はなかった。これに対してホメロスには一般化の香りがします。それは、彼が詩を書いていたからでしょう。彼はフィクションという「想像上の現象」を描いていたからです。ここは先ほどの科学者のくだりと同様に、「想像上の現象」を一般化することは可能なのです。これに対して、ヘロドトスの『歴史』を一般化する試みは無謀です。
 
ホメロスは、起こりうることを書いた。それは端的に未来を書いたということでしょう。物理屋も、つねに起こりうることを考える生き物です。起こりうることから、一般化して法則を導く。この、「起こりうることを考える」という点で、物理と文学はよく似ています。物理屋であるぼくが文学に惹かれる所以です。

神の視点

人の意思が介在しない完璧に無個性な語り、いわゆる神の視点による三人称の語りを実現するにはどうすれば良いか。
 
単に三人称で、語り手の独白などを廃し、進展する事象のみを淡々と語ってみても、それは神の視点による語りにはならないだろう。なぜなら、そこにはなにを書いてなにを書かないか、どの程度細部まで書くか、どこで改行するか、という取捨選択が含まれるからだ。取捨選択は語り手(あるいは書き手)の意思に他ならない。
 
アナロジーを挟もう。たとえば映画の語りはどうか。映画の語りをつくるのはカメラとマイクだ。カメラはなにを映し、どこにズームするかというのは、先ほど言った取捨選択なのであり、そこには人(語り手、または作り手)の意思が介在しているので神の視点ではない。
 
このアナロジーを続けて、では一度動作を始めたら取捨選択をしない定点カメラがあったとしたら、それは神の視点だろうか。防犯カメラを想像してみる。いわゆる神の視点にかなり接近したように感じる。
 
小説の語りに持ち帰ろう。防犯カメラのような語りとは何か。それは改行も句点も読点もなく、ただ目に入った人やものを一切の比重なく、固定された遠近法の中にひり出していくことだろうか。だとしたら、それは神の視点による語りなのか?
お そらくこれではまだ足りない。たとえば文章のなかのカタカナと平仮名や漢字の比率であったり、文章の語意のレベルであったり、その他のあらゆる要素が読者 に語り手および書き手の存在を想像させてしまうだろう。人が文章を読むところには必ず解釈と、読み取られる意思と、架空の語り手が現われる。
 
では八方ふさがりになりそうなので反対の方向に行ってみよう。語りの中から人の意思を削って完璧な無個性をつくるのではなく、無限の個性が重ね合わされた語りを想像する。スペクトルの合成が白色をつくるように、翻ってそれは無個性にならないだろうか。
技術的な問題に注目しよう。あらゆる個性が重ね合わされたような語りとは何だろう。それはどのようにして書かれうるだろう。
 
たとえば多数の書き手が一文ずつ書き継いで一つの文章を構成するというのはどうか。これは意思が溶け合って個性が消えた神の視点による語りになりうるだろうか。
いや、そうはならない。書き手の個性が重ね合わされたとしても、語り手の個性はなお読み取られうる。読者はもちろん、書き手の側でも、それまでに書き継がれてきた文章の中に、語り手の姿を読み取ってしまうだろう。語り手の現出を止められる書き手はいない。
 

botに救いを求めるしかないのか。