読者です 読者をやめる 読者になる 読者になる

neovimで言語ごとのインデントとかの設定をする方法

まあマニュアル読めば書いてある話ではあるんだけど、そこらへんうまいこと日本語で解説してくれてる人がいるかと思ったらあんまりいないみたいだったので自分用にメモっておく。

1. runtimeディレクトリにftpluginディレクトリを作る

Unix系のシステムでは通常これは “~/.config/nvim” になるらしい。

mkdir -p ~/.config/nvim/ftplugin

runtimeディレクトリがわかんない場合は、vim上で

:set runtimepath?

とコマンド打てば表示される。
表示された中で一番最初に出てくるパスを普通は使うものらしい。

2. さっき作ったftpluginディレクトリに “ファイルタイプ名.vim” ファイルを作る

で、そのファイルの中身には普通にinit.vim(.vimrc)みたいにインデントとかの設定を書くわけだけど、:setじゃなくて:setlocalとしておくとそのバッファだけに設定が反映されるので他のファイルタイプに影響がないようにできるらしい。

e.g.
setlocal shiftwidth=2

同様にキーマップについてもbufferローカルな設定にしとくと良いらしい。

ftplugin/javascript.vim
let maplocalleader = ","
map <buffer> <LocalLeader>A o新しい行だよ!<ESC>

上記を設定した後に.jsのファイルを開いて",A(shift+a)“とつづけて入力すると、カーソルの下の行に「新しい行だよ!」と追加されて、ノーマルモードに戻っている。

ネットカフェで勉強することの良い点悪い点

ネットカフェで勉強することの良い点悪い点

最近土日とかにネットカフェで勉強することが増えた。家にいると勉強しないから。

でもネットカフェが勉強する場所として最適というわけではない。家にいるよりは気持ちを切り替えて勉強できるんだけど勉強を阻害する要因も同時にある。それについて感じたことをメモ。

  • 良い点

    • 気持ちを切り替えられる

      家にいると勉強してる最中であっても部屋のゴミが気になったり洗濯物を始めてしまったり本を読み始めてしまったりYouTubeを観始めてしまったりしてなかなか固まった作業の時間が取れない。

      対してネットカフェだと個室なので他に注意を向ける対象がない。MacBookに集中して向き合うことができる。

    • 金がかかっているので頑張れる

      ネットカフェの利用にはカネがかかる。そこで遊んでしまったらカネが無駄になってしまうという意識が働くため、家にいて作業するより頑張ることができる。

    • 飲み物が飲める

      これは意外に良い。所詮ネカフェで飲める飲み物なんてインスタントのコーヒーとか体に悪いジュースとかだから品質が良いというわけではないんだけど、インスタントであってもコーヒーを一杯飲んでから作業を始めると集中できる。普段カフェイン絶ちをしているのでなおさら効く。

      もちろん家にいてもコーヒーくらい沸かせば良いんだけど、ボタン一つで出てくるので意識を妨げられる度合いが少ない。

    • 腹が減ったら飯を注文できる

      これも飲み物と同じで、意識を妨げられずに食事を取れるというのが良い。家で腹が減ると、買いに行くか作るかせねばならずそこで作業が中断させられる。

      しかもネカフェの飯は安価である。栄養価スコアは悪そうだけど。

    • 休憩時の気分転換アイテムがある

      マンガは豊富に揃っているし、雑誌、新聞などある。店によってはテレビとか映画とかある。色々あるんだけどやはりマンガが一番気分転換としては良い。休憩時に読みたいマンガ4、5巻取ってブースに入るといい感じだ。

  • 悪い点

    • 時間を気にしないといけない

      多くのネカフェは3時間とか6時間のコースがある。最近は自動でプラン切り替えてくれる店も多いけど、入店時にプラン決めとかないといけない店も多い。3時間コースで入って3時間を超えてしまうと延長料がバカ高くて割高になる。

      作業始めて数時間経ってから調子が出てくるので、ちょうどいいときにもう出る時間だったりする。

    • ネットが繋がらないときがある

      MacBookにはLANケーブルを刺す穴がない。無線でネットに繋がないといけないわけだが、店によっては(というか大抵の店で)Wifiの環境が良くない。席次第でブチブチ切れたり、FreeSpotしかない店もある。せっかくはるばるやってきたのにネット環境なしでは今日日何も作業できないに等しい。ネットが繋がらなくなったりしたらあとはもうマンガを読むしかなくなり勉強できない。

    • うるさいやつがいたときに殺意が湧く

      たまにエンターキーめちゃくちゃうるさく叩くやつがいると殺意が湧く。イヤホンを必ず持ち込んだほうが良い。

      また、咳払いがうるさいやつとかいびきがうるさいやつとかもいる。店によってはカラオケルームの子供がうるさいとか、ビリヤードコーナーの高校生がうるさいとかもある。本当にイヤホン必携。

    • マンガを読んでしまう

      マンガが置いてあるのはメリットでもありデメリットでもある。休憩しようと思ってマンガを読み始めると、続きが気になって結局最後まで読んでしまい、ほとんど作業が進まなかった、という経験も何回かある。長編物のマンガには気をつけたい。

まとめ

まずは家で勉強やってみて、はかどらないというときにネットカフェとかに行くと良いのかもしれない。休日家で勉強してるとせっかくの休みなのに俺は何をやってるんだろうか、とか考えてしまうけど、ネカフェに行くと適度に出かけた感も得られて精神衛生上も良い。

勉強は孤独な作業なので、その分外に出かけたりとか人と会話したりする機会を意識して作ると良いのだと思う。

ExpressでSocket.io使うとき

そもそもSocket.ioの公式サイトにも書いてあるんだけど何回やっても覚えられないので自分への戒めとして書いておく。

ExpressでSocket.io使うとき

var express = require('express');
var app = express();
var http = require('http').Server(app);

app.get('/', () => {
    // do something.
});

var port = process.env.PORT || 3000;
http.listen(port, () => { // app.listen(port, ...) じゃない!
    console.log('Listening port' + port + '...');
});

参考

プログラマーになって良かったことと悪かったこと

二年くらい前からプログラマーになった。

始めたのは31歳の頃からだ。それまでの職歴はプログラミングと全く関係ないものだった上に、プログラミングの経験は皆無だったので年食ってからプログラミングを始めたわけだが、多分自分にはこの仕事は合っているみたいでプログラミングが辛いとか思ったことは無いというかむしろ楽しい。カネ貰って楽しいことができるのだからプログラマーとはなんていい仕事なんだ、と今は思う(SIの人たちみたいにエクセルの質疑応答表作ったり上流工程から下ってくる謎の仕様と戦ったりするのはもちろん辛い)。

とはいえプログラミングの仕事は良いことばかりというわけでもない。最近プログラマーという仕事の良い点ばかりではなくデメリット的なことも感じ始めてきたので、良かったことと悪かったことをそれぞれ書いておきたいと思う。

プログラマーになって良かったこと

プログラミングが楽しい。つまり仕事が楽しい

これはまず第一にあげられる。仕事は人間が起きてる時間の大半を費やすわけで、それが楽しい時間であるに越したことはない。仕事が楽しいと単純に得してるなと思う。

プログラミングが楽しい。新しい趣味が増えた

31年も生きてきてプログラミングがこんなに楽しいものだとは知らなかったので新しい趣味が増えて得した気分だ。

手に職がついた感じがする

これまでは割りと一般的なというか事務的なこともやれば営業的なことも多少しつつ事務所のインターネット回りの世話を(素人知識で)少しするというような中小企業の若手サラリーマンが典型的に押し付けられそうな仕事をしてきただけだったので、30をすぎると応募できそうな求人とかすげー少なくて将来どうなるんだろうとか手に職があったら良いなとか思っていた。
社会福祉士の資格をとってフリースクールの先生になろうかななどと考えていたこともあったが、思わぬところで手に職がついた感じする。JavaPHPPostgreSQLJavaScript、Node.js、.NET、C#Objective-C、Swift、AndroidVimなどを経験したので多分世の中のプログラマーの求人票にはそこそこ応募できるようにはなったと思う(もちろん年食ってるのでハネられるというのはある)。

人と喋らなくていい

地味に良い。特に自分のようにお世辞とか挨拶的な会話とか営業トーク的なのがうまくない人間にはよい。たまに打ち合わせとかするときも論理的な話をすればいいので無理して会話しないといけない感じがない。

プログラマーになって悪かったこと

疲れる

これは本当に疲れる。ずーっと頭使ってるので会社から帰ってくるとyoutubeをみるくらいしかすることのない人間になってしまう。今みたいに頭しか使わない仕事というのはやったことなかったので頭脳労働と言うか専門的な技術職の大変さが少しわかった。それまでの仕事では仕事帰りに遊んで帰ったりとかは割りと平気だった。今は頭がぼーっとしてきついことがある。

腰と肩が痛くなる

これに関しては姿勢の問題とか使ってるハードウェアの問題とかもあるんだろうけど、当然座ってばっかで一日中パソコンの画面見てるわけだから腰にも肩にも悪いわな。という感じ。忙しいときに一日あたりの残業が2時間を超えてくると結構辛くなる。まあそんなに残業することめったに無いけど。

創作活動できなくなる

なんでかというと、プログラミングそのものが創作活動なので創作欲がそっちで満たされてしまうから。自分はどっちかというと音楽作ったり小説書いたりブログ書いたりして結構創作する人だったんだけどプログラミングが仕事になってからはさっぱりそれらをやらなくなった。なんか、それらをするためのエネルギーというか衝動みたいなものが沸き起こらなくなってしまった。これは結構真剣に悩んでいる。

人と喋らないので精神的におかしくなる(ことがある)

人と喋らないというのは良い点でもあるのだけど、あまりに会話が少ないと情緒に悪影響を及ぼすみたいだ。特に俺のように独身一人暮らしだと。職場に自分と同年齢くらいで同スキルくらいの同僚がいればこの点は悩みに思わないのかもしれない。自分の場合は自分と近い立場の人が会社に一人もいないので、日常的に会話する相手がいない。

まとめ

プログラミングの話ができる友達が欲しい。

AndroidのWebViewでindexedDBを使っててUncaught SecurityErrorが出る時の対処法

AndroidでWebViewでindexedDBを使っていると

I/chromium: [INFO:CONSOLE(23)] “Uncaught SecurityError: Failed to execute ‘open’ on ‘IDBFactory’: access to the Indexed Database API is denied in this context.”, source: about:blank (23)

こういうエラーがでることがある。

何が原因か調べてもわからなかったけど、なんか怪しそうなのは

webView.loadDataWithBaseURL(null, index, "text/html", "UTF8", null);

最初の引数にnullが入ってるこれだろうとあたりをつけた。

これを

webView.loadDataWithBaseURL("http://localhost", index, "text/html", "UTF8", null);

こう書き換えたらうまくいった。

考えてみれば当たり前で、ドメイン名が無いとローカルに保存した時にファイル名がつけられないから保存もできないということなのだろう。

そう考えるとlocalhostというのは多分良くない名前なので、アプリ固有の名前とかを使うと良いのかもしれない。

webView.loadDataWithBaseURL("http://application.example.com", index, "text/html", "UTF8", null);

みたいな感じで。

それでも世界が続くならのライブを観に行った

 去る12月18日、それでも世界が続くなら(以下それせか)、というバンドが佐賀でライブをすると言うので観に行った。ONE PLUS ONEというイベントだ。ジャン・リュック・ゴダールの映画と関係あるのだろうか。だいぶ昔に観たが内容は殆ど忘れてしまった。イベント自体は2時から始まっているようなのだが、それせかの出番は9時くらいで、イベントの終了は10時だから、8時間である。流石に8時間もライブハウスでライブを観るのは肉体的に無理だろうと思ったので途中から入場した。

f:id:newnakashima:20161221212300j:plain
 会場に着いたのは5時くらいだった。もっと遅く行くつもりだったのだが、佐賀ではあまりすることがなくて早めに会場に行くことにした。

 それせか以外に幾つかのバンドをみたが、特に印象に残っているのはミナワというバンドのギターの人。初期のSUGIZOが使っていたEDWARDSの変な形のギターを使っていた。ディレイかけてのグリッサンドなどもSUGIZOっぽい。ライブ後に物販のブースに座っていたボーカルキーボードの女性に聞いてみたら、やはりあのギターの人はSUGIZOが大好きであるらしい。このイベントで唯一自分が慣れ親しんだものに出会ったような気持ちになった。

 それせかの前の so far, so closeというバンド(ライブハウスの経営者でもありイベントの主催者でもあるキハラさんという方がボーカル・ギターをしている)も渋い音楽性の上にハイトーンの爽やかなボーカルが乗る特徴的なバンドで、それせかを観に来たと思しき一人でやってきたっぽい女子たちも思わず笑顔になって手を叩いて聞き惚れているようであった。

 so far, so closeの前に一曲だけということで出てきた花火文という人も印象にのこった。「〽どうして僕たちはすぐ死にたくなってしまうんだろう」というような歌を歌っていたが、腕の切り傷の痕もあらわに登場したからかやけに説得力がある。曲もシンプルでいいものだった。あの傷跡は、冬のライブでもあるし、長袖を着て隠しても良いものである。だがあえて半袖姿で登場して、その傷もろともさらけ出して歌うという意図があったのだろうと推測する。その気持ちのありかたが良いと思う。もしかしたら全然そんなこと意図してないのかもしれないけど。

 各バンド、転換と一緒にサウンドチェックもやっていたようである。多分リハをスタート前にやると、バンドの入りが限りなく早くなってしまうからであろう。

 それせかのライブが始まる頃には腰が死ぬほど痛くなっていた。多分それせかが始まったのが9時位だったろうから、もう4時間立ちっぱなしだった。常にステージを見上げているから、微妙にそり気味の姿勢になっているのも良くなかったのだろう。やはりライブを続けて観るのは2時間くらいが適度だと思う。一バンド終わるごとにサウンドチェックをするから転換に時間がかかるようであり、その度に手持ち無沙汰になってビールを飲んだ。自分でも明らかに体臭が酒臭くなっているのがわかった。多分佐賀GEILSの売上に結構貢献したと思う。

 そしてそれせかのライブだが、照明がほぼ床に置いた電球一個だけというのが独特だったし、バンドのカラーに合っている感じだった。ステージパフォーマンスが暴力的で、殺気を感じる良いバンドだ。一曲終わるとボーカルギターの人がドラムセットにギターを投げつける様なふりをする。初めてライブハウスに来たっぽい雰囲気の女子たちが若干引いた顔をしていたが、やがて慣れたようだ。

 一曲終わるごとにギター陣がチューニングを合わせていた。激しく弾くのですぐ狂うのだろう。最前列にいるのはいずれもおとなしそうな若者たちであり、みんなほとんど直立不動で聞いていた。でもそういうライブだから良いと思う。so far, so close のキハラさんがステージ上で述べていたが、はしゃいで盛り上がるだけがライブの聴き方ではない。俺も普段そういう聴き方はしない。

 しかし、それせかが最後の一曲をやったあと、メンバーが楽器を置いて去ったのだが、幕が閉じず、アンコールがいちおう予定されているのかと思った。しかしこのイベントは(多分)ライブ慣れしていない、しかも若いお客が多い。最後の曲のあとの拍手が、なんとなく収束して消えてしまった。普通のライブならトリに出るメインのバンドは鳴り止まない拍手に応えてアンコールで1,2曲やるものだ。だが拍手が消えてしまってはいくら予定していようとも出ていきようがない。あそこで観客側は拍手を意地でも続けるべきだったのだろうか。それともバンド側は特にアンコール曲みたいなものは本当に予定していなかったのだろうか。BGMがなり始めた頃、「本当にこれで終わりなの?」という顔で最前列にずっと立っていた女子たちの顔がなんとも切なかった。俺はもうおっさんなので腰が痛く、物販を買う気力もなく、さっさとライブハウスを出ていった。

 いいイベントだったので来年もまた行きたいし、このイベントに限らず佐賀や久留米にライブ観に行ったり映画観に行ったりするのも良いなと思った。今度は車で行って帰りに温泉入ったりしたい。

佐賀市に行った

 12月18日、それでも世界が続くなら、という名前のバンドのライブを観るために佐賀市へ向かった。道中SFでも読みながら行こうと思い、電車で行くことにした。

 八代駅にはかなり早く着いた。グレッグ・ベアの『ブラッド・ミュージック』を読みながら待っていると、杖を着いたおばあさんがやってきた。
「あ〜良かった、間におうた」
 こちらに笑いかけながら近づいてくる。最初は連れがいてその人に話しかけているのかと思ったが、どうやら一人のようだった。何度か文庫本に眼を落とし直したが、その様子から赤の他人の自分に話しかけているのだと気づいた。曖昧に笑って応えていると、おばあさんは身の上話を始めた。
「湯浦(ゆのうら)から来たっですよ。元々熊本におったっですけどね、娘がですね、お母さんが元気なうちに来てもらわんと困るていうて、1年半前に湯浦に行ったっですよ」
 旦那さんは30年ほど前に亡くなったそうである。一人になってからも楽しく暮らしていたというが、現在70代中盤で、60歳で定年してからも70歳まで清掃の仕事を頑張っていたそうだ。30年前に夫をなくしたと言うことは、もしかしたら娘さんがまだ嫁入する前だったかも知れなく、苦労したのかもしれない。湯浦に移ってからは友達もできず、娘の旦那の家族にも気を使うし、熊本市のカラオケ仲間とも離れ離れになって集まりに参加できないのだという。
 だが今日から熊本市のカラオケ仲間達と山鹿に2泊3日の旅行に行くのだそうだ。定期的に山鹿旅行は行っているらしい。
 そんな話を聞いているうちに電車がやってきた。
 「ならお兄ちゃん、気をつけてね」
 おばあさんは楽しみでたまらないという調子で言い、電車に乗り込んだ。

 途中荒尾で電車を乗り換え、鳥栖まで行き、そこで更に乗り換えである。JR九州は乗り換えの際の待ち時間が長い。鳥栖では30分待った。東京から大阪までの乗り換えをほとんど全て10分以内で連結させるJR東日本JR東海JR西日本の見事なダイヤ編成とは大違いである。30分の待ち時間の間に立ち食いそばを食べようかどうかかなり悩んだ。もう昼時であった。三本のホーム全てに立ち食いそば屋が設置してある。一人で立ち食いしている若い女性などもいる。鳥栖駅での立ち食いがかなり定着している証拠である。
 結局、立ち食いは我慢して長崎本線に乗った。佐賀駅までの車窓は見渡す限り畑、といった風情であった。

 佐賀駅に着いたは良いが、予約していたカプセルホテルへのチェックインまでにはまだ2時間あった。重い荷物を背負ったまま、とりあえず昼間の繁華街を見物しようと南へ向かった。
 大きな通りから一本左(東)の通りが飲み屋街に当たるらしい。昼間なので当然店は開いていない。
f:id:newnakashima:20161219233516j:plain
 ゲームバーや射撃バーというものを発見した。
f:id:newnakashima:20161219233710j:plainf:id:newnakashima:20161219233756j:plain
 異様に長いスナック街を歩くと、ようやくアーケードが見えて来る。
f:id:newnakashima:20161219234049j:plain
 腹が減っていたので、昼飯が食いたかった。飲み屋街では昼飯を食わせてくれる店がない。アーケードにならきっとあるだろうと思っていた。
f:id:newnakashima:20161219234332j:plain
 しかし日曜の昼間のアーケードがこのような状態であった。歩き疲れた成人男性にしかるべき炭水化物を含んだ白米、しかるべき脂質とタンパク質を含んだ揚げ物、しかるべき塩分を含んだ味噌汁を提供してくれる健全な飲食店は見当たらない。一軒辛麺屋を見つけたのだが、
f:id:newnakashima:20161219234808j:plain
 このような次第で、どうやらランチタイムの営業はやめてしまったらしい。行政が中心市街地起死回生の一手として建設した大型商業施設の中にランチを提供しているお店もあったようなのだが、他所からやってきた男が一人で入るには気が引ける。もっと気安い大衆的な定食屋で良いのだ。だがそういう店が全く見当たらない。
f:id:newnakashima:20161219235220j:plain
 完全なる昼飯難民としてぐるぐる歩いていると、やっと人気のある場所を見つけた。コンテナが設置してある。
f:id:newnakashima:20161220000510j:plainf:id:newnakashima:20161220000512j:plain
 どうやら親子連れが多いようだ。その直ぐ側にラーメン屋を見つけたので入った。善良そうな母娘の座るテーブルに相席させていただくことになった。子供はまだ小学生くらいに見えた。申し訳ない思いでいっぱいになり、すぐ食って立ち去ろうと思った。
 ラーメンとチャーハンを頼んだのだが、大してうまくない。食っていると、隣の母娘の会話が聞こえた。
「ねえ、お母さんて昭和何年生まれ?」
 娘がお母さんに尋ねている。そこでお母さんが答えてしまったら、間接的に隣にいる自分にもお母さんの年齢がわかってしまう。しかしこの場をごまかして娘の質問に答えないのも良くない。そもそもこの場でしか接することのないたまさか相席したに過ぎないどこの馬の骨とも分からない素性の知れない男に対して年齢がバレたところでどうということも無いはずだ。しかしお母さんは気持ち小声になり、生年を答えた。そして間髪入れず別の話題を展開した。どこの馬の骨とも分からない人間だからこそ、おいそれと知られたくない情報もある。私は、なおさらラーメンをチャーハンを早食いせねばと思い米と麺と汁をダイレクトに食道に流し込んだ。あのラーメン屋にはユニークな思い出はできたが、二度と行くことはあるまいと思う。そのお母さんは親切な人で、レンゲをとってくれたりした。

 そんなことがあったせいでラーメン屋では満足できず、口直しを探していたらカレーパンを売っているという肉屋さんを見つけた。
f:id:newnakashima:20161220002338j:plain
 カレーパンうまかった。
f:id:newnakashima:20161220002608j:plain

 そして3時にチェックインし、荷物をおいてライブハウスへ向かった。ライブそのものの感想に就いては項を改めようと思う。佐賀GEILSは完全なる住宅街にあった。
f:id:newnakashima:20161220003036j:plain
 こんな環境だったら、多分駐車場問題とかあるだろうし、近隣への配慮とか半端なくしないといけないんだろうなと思う。案の定、ライブの客は有料駐車場使えと書いてあるにも関わらず、受付で、
「このバンド終わったら出るけん車置かして」
 とか店員に無理を言っている客がいた。そういう客がつくとバンドも迷惑なんじゃないのかなと思う。また、翌朝もう一度この辺を歩いたとき、こんな看板がやっぱりあった。
f:id:newnakashima:20161220003535j:plain
 ライブハウス、スタジオの経営って大変だよな。マジで殺したくなるバンドマンとか居ると思うけど、佐賀GEILSさんには頑張って欲しい。

 夜の佐賀のイルミネーションはきれいだった。
f:id:newnakashima:20161220003909j:plain