ななひらとフランス

院試の前の8月上旬頃から「3ヶ月100円」の謳い文句に負けてSpotifyと契約し*1、そのままだらだら使い続けている*2のだけれど、院試前の一時期はSpotifyは延々とななひらの曲を流すのに使っていた。

で、Spotifyのななひら曲再生数一位は“Ange du Blanc Pur”というべったべたに中二な歌である(すき)。これの題は「純白の天使」という意味のフランス語だ。
open.spotify.com

また、「よくばりトゥレジュール」という甘甘で頭が溶けそうな歌もあって(最高)、この「トゥレジュール(tous les jours)」も「毎日」という意味のフランス語だし、歌の途中にフランス語なかわいい物品が列挙される。
open.spotify.com

ななひらの萌え歌にフランス語がやけに合って感じられて、萌えの波動に殺された。

わたしはどちらかというとフランスよりはドイツに惹かれてきたし、第二外国語ではロシア語を選ぶひねくれた人間だったのでそんなにフランス語とは縁がなかったのだが、昨年末にEuropa Universalis 4を買って最初にフランスでやって以来愛着が湧いてしまい*3、あと院試前であれになってる7月下旬にアンスティチュ・フランセ関西*4のカフェに友人と行ってみて、そこで「フランス政府給費留学生募集」のチラシをみて、「院試落ちたらフランス行ってチノちゃん探すぞ!!」って半ば本気で言っていた*5


結局院試に受かったのでフランス留学云々はなくなって、私費で旅行するには高いよなーと思っていたのだが、妹がスペイン留学していることがあり、いろいろあって2月に家族でスペインに行くことになった。
せっかくなのでフランスのごちうさの聖地をみたりしたいとか言っていたら、「ヨーロッパまでの航空券が高いから、せっかくだししばらくいたら」と親にいわれて、一人で少しのあいだそのへんに滞在することに。
そういうわけで、至急フランス語を勉強する必要があり本を買ったのだが、どうも進まない*6
www.amazon.co.jp

とくにフランス語は音声が大事っぽいのでCDを聞きまくれというかんじなのだけれど、いまひとつやる気がでない。
ということで今ほしいのが、ななひらがフランス語を教えてくれるドラマCDである。
めっちゃほしい。萌えの力で語学を身に付けたい*7。誰かつくって~~~。
open.spotify.com

「廊下で転ぶと鼻血が出て、人生で転ぶと涙が出るんだーー!」

*1:院試合格という目標に対しての投資として100円は安いという計算。

*2:月980円。

*3:私にこのゲームを勧めてくれた後輩曰く「当事者意識が湧く」。ほんとそれで、百年戦争なんて高校世界史でやらなかったのにめっちゃ興味が湧いたし、吉川弘文館の世界史地図帳を買って読み耽っていた。

*4:旧称「關西日佛學館」。「フランス語教育と日仏文化交流に努めるフランス政府公式文化機関」とのこと。

*5:フランス政府の思う壺である。このとき留学について人生で初めて調べた。あとで分かったが、残念ながら応募締切1ヶ月前から準備してどうこうなるようなものではなかった。

*6:私はいままでにいろいろな言語(ロシア語、ラテン語、ドイツ語)に手を出したが、まともに身に付いたためしがない。

*7:高校時代私の英語嫌いをやわらげたひとつの要因は「もえたん」であった。

キーボードにない文字を入力する方法の話

Windows

DTP関連の文献では、よく「"This" のような『まぬけ引用符』ではなく “This” のようなきちんとした引用符を使いましょう」という趣旨の記述があるが、このきちんとした引用符の入力方法として、「Altキーを押したままテンキーで0147を入力し、Altキーを離す」という方法が紹介されている。
なお、0147は左二重引用符であり、0148なら右二重引用符、0145なら左一重引用符、0146なら右一重引用符になる。

この0147などの数字はなんなのだろうと長らく思っていたのだが、この度たまたまWindows-1252 - Wikipediaの表を眺めていて「これだ!」となった。
下には

英語版のWindowsでは、Windows-1252の文字はAltキーを押下したままゼロに続けて文字の3桁10進符号をテンキーで入力することにより挿入できる (ゼロを省略する点以外同様の方法で、古いコードページ437の文字も入力できる)。

と書いてある。

が、「英語版の」と断り書きがあるように、日本語版は少し事情が異なるらしい。

例えば0182の「¶」を入力しようとしても「カ」が入力される。
で、半角カナの「カ」が182になるのは、(半角カナで察せられるように)Shift_JISである。

どうも、日本語版Windows 10(私の環境)でのAlt+0+数字による入力は基本的にShift_JISの1バイト部分に依り、Shift_JISで文字が割り当てられていない部分文字コード表 シフトJIS(Shift_JIS) の表の水色部分。128–159 と 224-255)についてはWindows-1252に依るようである。

そして、上の引用部には「Alt+0147」の形式ではなく「Alt+147」の形式ではCP437の文字が入力できるとあるが、これも日本語版WIndows 10では無効になっているらしく、0を入れた場合と同じものが出る。
ということは、引用符を出したいときは単純にタイプ数の少ない「Alt+147」の形式で十分だ。

覚えておくと便利そうな符号点

  • 145–148:上述の通り、引用符。二重引用符がU+201CとU+201D、一重引用符がU+2018とU+2019。
  • 149:ビュレット「•」(U+2022)。箇条書きに使う。中黒「・」(U+30FB)とは別。
  • 150:二分ダーシ(en-dash)「–」(U+2013)。範囲を表すときに使う。
  • 151:ダーシ(em-dash)「—」(U+2014)。英文中で括弧や関係詞のように使うやつ。
  • 233:「é」。Poincaréのé。
  • 246:「ö」。Schrödingerのö。

Linux

前述のWIndowsのAltキー入力の話については、 Alt code - Wikipedia という記事が英語版Wikipediaにある。これによると、LinuxではGUIツールキットやソフトによってUnicodeの直接入力ができるらしい。

上記では3種類の方法が紹介されているが、私が手許の環境*1で試して動いた方法は「Ctrl+Shift+Uを押して離した後、Unicode符号点を16進数で入力してEnterを押す」であった。

例えば、Ctrl+Shift+U→3042→Enter で「あ」が入力できるし、Ctrl+Shift+U→1f607→Enter で「😇」が入力できる。

……これでIMがない環境でもUnicode表さえあれば任意の文字が入力できる。便利!!!

*1:MATEデスクトップ

yaftを使う

yaft is 何

github.com

Yet Another Framebuffer Terminal の略で、フレームバッファ端末上で動く端末エミュレータ

昔からこの分野には fbterm という有名なソフトがあるが開発は止まっており、最近も更新されているものを探してみたところyaftが出てきたので使ってみた。

何に使うものなの? という人のための雑な説明

デスクトップ向けなLinuxを使っている人は Ctrl + Alt + F2 (or F3, F4, F5, F6)を押してみてほしい。黒い画面になるはずだ(戻すには Ctrl + Alt + F7)*1
こういうのを仮想コンソールといって、それぞれでログインして作業することができる。
また、X Window Systemを入れなければ、仮想コンソールで作業することになる。

なのだけれど、この仮想コンソールではふつう日本語の表示ができない。
でも表示させたいよね、という人に嬉しいソフトがfbtermやyaftである。

ビルド

りどみに書いてあるようにするだけ。C製なのでgccだけあればよさそう。

$ git clone https://github.com/uobikiemukot/yaft.git
$ cd yaft
$ make
$ sudo make install

実行

$ sudo yaft

でとりあえず動く。

一般ユーザーで起動したい場合は、フレームバッファLinuxなら標準で /dev/fb* )へのアクセス権限をユーザーに附与することが必要。

Ubuntuでは /dev/fb* を所有するグループが video なので、

$ sudo gpasswd -a $USER video

してやればよい。

フォント変更

フォントは glyph.h に埋め込まれているので、これを書き換えてビルドし直すことで変更できる。標準はmilkjf.bdfを変換したものらしい。

BDFフォント*2をglyph.hの形式に変換するプログラムが同梱されているので、BDFフォントさえ用意してやればよい。

私はufo.bdfを試してみたが、問題なく使えた。これでUnicode BMPの全文字が表示できる。
github.com

その他

  • 背景画像を表示したりとかいろいろできるらしい(README参照)。
  • Unicode対応はBMPの範囲のみ。まあ、それ以上の範囲をサポートしているBDFフォントもそうそうないけれど……
  • IMには対応していなそうなので、日本語入力はできない。
    • Emacs + ddskk で日本語文書を書くこと自体はできたので、どうしても必要になれば気合で……
    • Issueを見ると、IMを使いたい場合は mlterm-fb に誘導していそう。あくまでyaftはシンプルにということだろうか。
      • これを見て mlterm-fb も試してみたが、こちらは多機能ですごい。ちなみに、mltermはubuntuリポジトリにあるが、これを入れるとmlterm-fb(フレームバッファ版)が入らないので、自分で --witth-gui=fb を指定してビルドする必要がある。
  • (2019/11/20追記)画面の解像度が高すぎて普通のbdfフォントでは文字サイズが合わない場合、bdfresizeというツール(Debian -- jessie の bdfresize パッケージに関する詳細)でフォントを拡大するのもよいかもしれない

*1:このへんは当然設定によって変わるだろうけれど、Ubuntuあたりを普通のPCに初期設定で入れるとたぶんこうなっている。

*2:Unix系OSで使われてきたビットマップフォントの形式のひとつ。

「半分」について



〔これは雑な記事です〕

先日映画を観に行ったら、『響』という映画の予告で「天才とはわずかにわれわれと一歩を隔てたもののことである。」という文句が使われていた。
これは芥川龍之介侏儒の言葉』の一節で、「ただこの一歩を理解するためには百里の半ばを九十九里とする超数学を知らなければならぬ。」と続く*1
続きを書かずにそこだけ抜くのはどうなんだという気持ちはないでもなかったが、それはまあよくて、「百里の半ばを九十九里とする超数学」について考えていたら、「半分」という概念がわからなくなった。

「半分の点はどんな距離空間にも存在するの?」「『半分の点があること』と『空間を半分に分けることができる』は同じなの?」「中線定理はノルム空間が内積空間になる条件って聞いたけど……」等々。
それについてのメモ書き。

ボロノイ図

図のイメージはあったのだけれど、その言葉がしばらく思い出せなかった。ボロノイ図という名前であった。

距離空間内の有限部分集合 P = \{p_1, p_2, \dots, p_n\} および、距離関数d に対して

 V(p_i) = \{p\ |\ d(p, p_i) \le d(p, p_j),\  j\ne i\}

で構成される領域V(p_i) p_i のボロノイ領域と呼ぶ。また、 \{V(p_1), V(p_2), \dots, V(p_n)\}ボロノイ図と呼ぶ。

こうやってボロノイ領域を定義してやると、(全順序なので)任意の点がどこか少なくとも1つのボロノイ領域にはいる。
こういう意味で、任意の距離空間を「半分に分ける」ことはできる。

2次元ユークリッド空間で2点なら、それは垂直2等分線で分けられた領域になる。

なお、これは「等面積で半分に分ける」こととは無関係。「面積」や「体積」の概念は距離ではなく測度の上にあるものなので。
(じゃあ「等面積で半分」が必ず定義できるかといえば、例えば2点集合にそれぞれ測度1と6を与えてやると反例になる)
ユークリッド空間上で距離と面積に関係があるのは、ルベーグ測度を直方体をもとに決めたから)

まんなかの点

百里の半ばを九十九里とする」の「半ば」はつまり、両端点から等距離にある点を指している。
これはボロノイ図でいうと、複数のボロノイ領域に含まれる点に当たる(別に1つとは限らない。中点というより二等分線か。平面幾何にあわせて最小距離になるものを中点というとよさそう)。

これは必ずしも存在しない。例えば数直線上に 0,1,2,3 だけがある4点の空間に普通の距離を入れてやると、0と2との間にはまんなかの点1があるが、0と3との間には存在しない。

中線定理

内積空間の議論で出てくるベクトルの中線定理には、「中点」の概念がそもそもいらなそう。

この図では2つのベクトルの矢印が「中点」で交わっているけれど、これは単にユークリッド空間でこう描いたからたまたま起きているだけなのでは…?
f:id:suzusime:20181107204611p:plain

*1:というと嘘になる。というのもこの文句はもう一度繰り返されていて、そちらでは「同時代は常にこの一歩の千里であることを理解しない。後代はまたこの千里の一歩であることに盲目である。同時代はそのために天才を殺した。後代はまたそのために天才の前に香を焚いている」と続く。

msys2のvimでシンタックスハイライトが効かない問題

いつからかわからないがmsys2のvimシンタックスハイライトが効かなくなっていた。
しばらく放置していたが面倒になってきたので解決策を探したところ、次のサイトをみつけた。

そして、これを試してみたらその通りであった。

私の環境は、

$ pacman -Ss vim
msys/vim 8.1.0022-1 (editors) [インストール済み]
(後略)
$ vim --version
VIM - Vi IMproved 8.1 (2018 May 17, compiled May 31 2018 11:16:13)
適用済パッチ: 1-22
Compiled by <alexpux@gmail.com>
Huge 版 without GUI.  機能の一覧 有効(+)/無効(-)
+acl               +farsi             +mouse_sgr         -tag_any_white
+arabic            +file_in_path      -mouse_sysmouse    -tcl
+autocmd           +find_in_path      +mouse_urxvt       +termguicolors
-autoservername    +float             +mouse_xterm       +terminal
-balloon_eval      +folding           +multi_byte        +terminfo
+balloon_eval_term -footer            +multi_lang        +termresponse
-browse            +fork()            -mzscheme          +textobjects
++builtin_terms    +gettext           +netbeans_intg     +timers
+byte_offset       -hangul_input      +num64             +title
+channel           +iconv             +packages          -toolbar
+cindent           +insert_expand     +path_extra        +user_commands
-clientserver      +job               +perl/dyn          +vertsplit
+clipboard         +jumplist          +persistent_undo   +virtualedit
+cmdline_compl     +keymap            +postscript        +visual
+cmdline_hist      +lambda            +printer           +visualextra
+cmdline_info      +langmap           +profile           +viminfo
+comments          +libcall           +python/dyn        +vreplace
+conceal           +linebreak         +python3/dyn       +wildignore
+cryptv            +lispindent        +quickfix          +wildmenu
+cscope            +listcmds          +reltime           +windows
+cursorbind        +localmap          +rightleft         +writebackup
+cursorshape       -lua               +ruby/dyn          -X11
+dialog_con        +menu              +scrollbind        -xfontset
+diff              +mksession         +signs             -xim
+digraphs          +modify_fname      +smartindent       -xpm
-dnd               +mouse             +startuptime       -xsmp
-ebcdic            -mouseshape        +statusline        -xterm_clipboard
+emacs_tags        +mouse_dec         -sun_workshop      -xterm_save
+eval              -mouse_gpm         +syntax
+ex_extra          -mouse_jsbterm     +tag_binary
+extra_search      +mouse_netterm     +tag_old_static
      システム vimrc: "/etc/vimrc"
      ユーザー vimrc: "$HOME/.vimrc"
   第2ユーザー vimrc: "~/.vim/vimrc"
       ユーザー exrc: "$HOME/.exrc"
  デフォルトファイル: "$VIMRUNTIME/defaults.vim"
       省略時の $VIM: "/etc"
省略時の $VIMRUNTIME: "/usr/share/vim/vim81"
コンパイル: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/include/ncursesw  -march=x86-64 -mtune=generic -O2 -pipe -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
リンク: gcc   -L. -pipe -fstack-protector -pipe -Wl,--as-needed -o vim.exe        -lm    -lncursesw -liconv -lacl -lintl   -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -ldl -lcrypt

vim 8.1が入っているのに、:set runtimepathを打ってみると、その中に/usr/share/vim/vim80の文字が見えた。
この部分を/usr/share/vim/vim81に書き換えてやった後に:syntax onしてやると正常にシンタックスハイライトが働いた。

ということで、次善策ではあるがとりあえず .vimrc で

set runtimepath+=/usr/share/vim/vim81

としておけばシンタックスハイライトは働くようになる。

「ポリコレ」についての雑感

社会を覆い尽くす「ポリコレ」の動きにものすごく違和感を覚えるのだが、かといってまともに論理だててブログ記事を書けるかといえばそんなこともなさそうなので、とりあえず酒の勢いで思うところを書き留めておく。要するにぜんぶただの気持ちである。

続きを読む