月夜釜合戦

久しぶりのユーロスペースで、釜ヶ崎とその周辺を舞台としたドタバタ喜劇『月夜釜合戦』を見ました。前日の土曜日、渋谷美竹公園の共同炊事にスタッフの方々が大釜持参で参加されたので、ほないたろ、てなもんです。

楽しくて分かりやすくて綺麗事じゃなくて、とても良かった。自分は釜ヶ崎に行ったことはないけれど、フィクションでしか捉えられない真実を撮ったんだと思いました。とりわけおっちゃん二人組の演技が素晴らしい。

主人公格の仁吉はクストリッツァ映画に出てきそうな造形で、また『アンダーグラウンド』の本歌取りみたいなくだりもあるのだけど、『釜』は『アンダーグラウンド』と対照的に、ドタバタも暴動もおっちゃんたちも、どこかへ消えてしまって終わります。釜ヶ崎という土地に深くコミットしているスタッフたちが、ストーリーから遊離したこのシーンを最後に持ってきたということについて、昨日からうじうじ考えています。

2/27 JJUGナイトセミナー「JVM言語を作ろう! GraalVMで遊ぼう!」に登壇しました

2月27日(水)に開催したJJUGナイトセミナー「JVM言語を作ろう! GraalVMで遊ぼう!」に登壇しました。セミナーの様子についてはmike-neckさんの記事をご参考ください。無茶苦茶に楽しいイベントでした。

私が話したスライドは下記です。

だいたい次のような考えで内容を決めて行きました。

  • Graal / Truffleの話をいきなり聞いてもなんのこっちゃ分からなかろう。
  • Kink言語処理系の開発者として、Graal / Truffleに期待すること、という切り口なら導入しやすいのではないか。
  • そのためには、KinkがJVMとのマッピングに苦労するところ(オブジェクトシステム、限定継続)を話さなきゃならない。
  • つまり、JVMのオブジェクトシステムと呼び出しの実装も話題にのせる。
  • GraalはJITなので、JVMのそれら抽象が、どのような低レベルの構成物に還元されるのか見る必要がある。
  • ということは、機械語プログラムの実行と、バイトコードインタプリタによる実行を対比することになる。
  • バイトコードインタプリタはCPUをシミュレートしているんだ、という話をするには当然CPUの構成の話も要る。
  • そもそもバイトコードインタプリタのような評価器と、コンパイラの関係ってどうなの、というところについてありがちな誤解を避けねば。

これだけの分量を50分で話すのは本来無茶なのですが、そこは気合と根性で、息継ぎせずまくしたてることで乗り切りました。

私が聴きたかったGraal/Truffleの話は、じゅくちょーさんときしださんからお話いただきました。

TruffleがASTをGraalに引き渡す際、もともとのコード、アノテーションプロセッシング後のコードがどのような変換を受けるのか、というところで追いつけなくなってしまいます。SimpleLanguage処理系の実装と動きを追いかけるのがいいのかな。

懇親会では @noko_k さんから、Karaffe言語処理系の実装についてお聞きしました。Kink(典型的な動的言語)とKaraffe(典型的な静的型付け言語)はまるで性質が異なるのですが、似たような感覚を持っていることが分かって、興趣がありました。たとえば、

  • 実装は一発ではうまく行かない。前回の反省を踏まえて処理系を作り直すと、違うところでつまづいてにっちもさっちもいかなくなる。
  • どこかのタイミングで、自分よりも処理系のほうが賢くなる。
  • ホスト環境の仕組みとのマッピングは難しい。マッピングレイヤがきれいに切れないと、早晩破綻して手に負えなくなる。

2/24 天皇在位30年式典に反対する銀座デモに参加しました

グダグダしてたら遅刻して、集会会場はすでにもぬけの殻。外をウロウロしていたら、右翼の街宣が「今からここを通る非国民共がうんぬんかんぬん」と言っていたので、なるほどここかと思ってデモに飛び入りしました。シュプレヒコールが原則的で、また勢いがあって良かった。

あとで他の方と話したことについてパラフレーズ:

天皇制の体系は、他の伝統的支配の体制と同じように、その正統性に異議を唱えるものが存在しない(「日本国民の総意に基づく」)というフィクションに拠って成立する。したがって、仮に天皇制廃止が今日明日の日程に乗らないとしても、公然と異議を唱えること自体が、単なるアピールにとどまらない意義を持つ。

その式典にて:

  • 明仁「私がこれまで果たすべき務めを果たしてこられたのは、その統合の象徴であることに、誇りと喜びを持つことのできるこの国の人々の存在と、過去から今に至る長い年月に、日本人がつくり上げてきた、この国の持つ民度のお陰でした」
  • 参加者「天皇陛下万歳

実に醜悪である。

Kinkのドキュメンテーションシステム

KinkのドキュメンテーションシステムをKinkで作りました。Javadocとかgodocみたいなやつです。

いずれ 1) JSON出力 2) JSONから各種フォーマットへの変換 の2つに分けるつもりですが、今はまだJSONモジュールがないので、Sphinx用の.rstファイルを直接出力しています。

最終的な結果はこんな感じ。

http://doc.kink-lang.org/manual/api/kink-NUM.html

元となるソースは、典型的にはこんな感じ

##
# Companion mod for atomic vals.

:JAVA.require_from('kink/host_lang/java/')

:AtomicReference_class <- JAVA.class('java.util.concurrent.atomic.AtomicReference')
:Object_class <- JAVA.class('java.lang.Object')

## type atomic
#
# An atomic is a container of a single val, which provides serialization of
# data access among multiple threads,
# and atomic operations such as compare-and-set.
#
# Example:
#
#   :ATOMIC.require_from('kink/thread/')
#   :THREAD.require_from('kink/thread/')
#
#   # atomic reference with 0 as the initial val
#   :Counter <- ATOMIC.new(0)
#
#   # thread-safe counter
#   :make_uniq_num <- {()
#     [:Cur :Next] = Counter.update{(:N) N + 1 }
#     Cur
#   }
#
# get, set, and compare_and_set operations are serialized for a single atomic.
:Atomic_trait <- [

  ## Atomic.get
  #
  # Atomic.get returns the val contained in the Atomic reference.
  'get' {[:A]()
    A.Ref.call_method('get').unwrap
  }

  ...

「メソッド」や「型」に相当する要素が言語仕様上存在せず、静的解析では見出しが決定できないので、自分で書く必要があります。本文については、行頭の空白が3文字以上のブロックをコードとみなします。

他にマークアップ要素はありません。個条書きしたければ「•」とか「1)」とか自分で書いてください、という設計です。このあたりはgodocの影響を強く受けています。

データモデルはこんな感じ。

f:id:miyakawa_taku:20190204231142p:plain
Kink Doc Datamodel

Record of the year 2018: Salt Water Taffy 『Finders Keepers』

Finders Keepers

Finders Keepers

1968年に出た脳天気なソフトロックアルバム。この時期、1枚だけ素晴らしいアルバムを出してどっか行ったたくさんのグループのひとつ。有名らしいけど、僕ははじめて聴きました。

Book of the year 2018: 森鴎外『渋江抽斎』

渋江抽斎 (岩波文庫)

渋江抽斎 (岩波文庫)

幕末期津軽家の江戸詰め家臣、医師にして考証家の渋江抽斎と、その家族を題材に、当時の読書人の世界を描いた話。

抽斎に対する鴎外の共感と思い入れが楽しい。

テンギズ・アブラゼ監督『祈り』、『希望の樹』、『懺悔』

ジョージアの映画監督テンギズ・アブラゼによる三部作。いずれも下高井戸シネマで見ました。

寓話的な表現は一貫しているものの、時代をくだるごとに散文的に、また政治的に危険になっています。どの作品でも、多声合唱がふんだんに使われています。

『祈り』は1967年作品。ヴァジャ・プシャヴェラの叙事詩を、たぶんほとんどそのまま脚本化・映像化した作品。映像は奇妙で美しいものの、細部はさっぱり分からなかった。三本の中で最後に見たのですが、最初これだったらきつかったかな。

『希望の樹』は1977年作品。革命前の農村で、若者の愛が因習でもってすりつぶされる悲劇。楽しくて変てこで優しくて、これが一番好きでした。ジョージアナショナリズムが結構わかりやすく出ていると思う。

最後の『懺悔』は1984年作品 *1スターリン時代の全体主義と、その「現代」、つまりブレジネフ時代における後継者を、けっこう直接的に告発する内容。これがまだソ連が安泰と思われていた1984年に撮られたというのはすごい。

*1:オーウェル1984年です。

Java女子部「Java SE 8から11で何が起きた?一気におさらいしてみよう!」

Java女子部で、Java SE 8から11にかけての変動について喋らせていただきました。

特定の技術に限らない、Java SE全体の動向の話をするのははじめての経験だったので、大変でした。扱った話題は次のとおりです。

  • JDKのリリースサイクル変更
  • Oracleによるライセンスモデル変更
  • デスクトップJavaの後退
  • Public JREの廃止
  • OpenJDKを中心としたエコシステムの活発化
  • モジュールシステムの導入

これらの変化が、たかだか2年のあいだにドカドカっと起こって、しかも相互に関連している。「Write Once Run Anywhereの担い手としてのJavaの役割は縮小しているが、一方でサーバサイドの処理系としてはより実用的・先鋭的になって、進化を早めている」というストーリーでまとめてみたのですが、立場しだいでぜんぜん違って見えるのでしょうね。

もうひとつはじめての経験として、ハンズオンを実施しました。題材はOpenJDKとモジュールシステムです。反省点は2点。 1) 詰め込み過ぎ。結局最後まで行きつけませんでした。 2) macOSでの動作確認をしておらず、手順通りでは動かなかった。参加者の方に解決していただきました。

最後に、カメラのレンズが、その場にいたものすら体験できなかったような「現実」の一側面を映し出せることについての批評的ツイート。

里山引退

● 3-4琴鎌谷(左下手投げ)里山4-3 ○

里山左おっつけから、頭を付けてしぼりながら左差しに。後ろ褌を越すまで深くする。琴鎌谷が引っ張り込んで上手投げをうつところ、平蜘蛛で粘って下手投げを打ち返した。物言いがついてもおかしくなかったけど、とにかく勝ち越し。

この一番をもって里山が引退、佐ノ山襲名との報道がありました。

今日の一番なんか、まさに里山!という、泥臭い、死にものぐるいの、血と汗と泥が練りかたまったような相撲で、4連勝の勝ち越し。これこそ有終の美だと思います。

低く当たって潜り込んで向こう付け、なんとしてでも左を差し込んで、引きずり倒すような下手投げ、捻り、肩透かし。土俵に詰まっても伝え反りや一本背負いで、最後の瞬間まで土俵にしがみついて、相手を死地に引きずり込むという相撲でした。小兵の業師で、ここまで華麗さのない人はなかなかいないし、ここまで胸を衝く、スペシャルでダイハードな相撲を取る人も、そうそうは出てこないと思います。

2018-11-23 20:30に追記:

毎場所連日、こんな風に髷ぐしゃぐしゃで精魂使い果たして、それで37歳まで相撲取ったんですよ!