2018年12月15日

あおり運転:やられた側に非はあるのか

 東名高速あおり運転の死傷事故で、地裁の判決が出ました。法解釈の点からは難しさが残るんだけど、心情的には「被告は厳罰に処されるべき」と感じる人が多い事案と思います。あまりにも自己中心的だから。

 ところが、これほどひどい事案でなければ、「あおられるような運転をする方が悪い」という意見もちらほら見かけます。今日も東名高速でドアミラーを折った男が逮捕されていますが、そのニュースへのコメントにも「煽られたひとにも非がある」という書き込みがある。

 本当に「非がある」と言えるのか? なぜあなたがそれを判断できる?

 「マナーを守れ」っていうけど、自動車の運転には高度な技術が必要。マナーを守りたいと思っていても、守るだけの技術を持ってない人もいる。今日の東名高速の件、岡崎市でしょ。今回の被害者の方は違うかもしれないけど、岡崎市って下手なドライバーがめちゃくちゃ多いんですよ。そこそこの規模の地方都市なんだけど、公共交通機関が発達してないので、みんな車に乗るしかない。自動車教習所も、あんまり丁寧に技術を教えずに「まあ、こんなもんでいいんじゃない」と卒業させてしまう。それで、岡崎には東名の IC があるから、下手くそなまま高速に乗っちゃうわけですよ。東京−名古屋を長距離走る人から、三河ナンバーが蛇蝎のごとく嫌われているのはそのためだと思っています。私も迷惑かけていた一人ですが。

 下手くそな奴は高速に乗るなって? でも、車で移動するしかない人だっているじゃないですか。親の介護のために毎週週末に慣れない運転で長距離移動しないといけなくなった、でも毎週新幹線に乗る金はない、という人に、高速に乗るな、と言うんですか。いったい何の権利があってそんなことが言えるの?

 危険な車線変更するのは確かにいかんと思う。でも、技術が足りなくてそうしてしまった人は、その時点ですでに恐怖を感じてるんですよ。生まれた時から運転が上手なあなたにはわからんかもしれんけどね。そんなにしつこくあおらなくても、クラクションを一発鳴らすぐらいで十分な制裁になってますよ。

 結局、「あおられるような運転をする方にも問題がある」と主張する人は、自分の運転技術が高いことから、自分が偉くなったように勘違いをしているだけだと思います。道路は公共物なんだから、あらゆる人に開かれてないといけない。それは、自動車の運転技術が低い人に対しても同様。運転技術が低い人がいることも想定した上で、安全運転を心がけるのが本当の運転マナーというものでしょう。

 みんな、余裕がないんだろうな、と思う。うちでは、他の車がいかにもイライラした様子で幅寄せしたり車間を詰めたりしていると、「あれはウ◯コが漏れそうになって焦ってるんや」と解釈することにしています。そうすると、そんなに腹も立たない。レクサスのシートをウ◯コで汚したくないでしょうからねぇ。また、逆に高速で遅い車がいると若干イライラすることもあるけど、追い抜きざまに見ると、たいがい自分の親と同じような世代の人がハンドルを握っているわけですよ。そうすると、大目に見てあげようという気持ちにもなります。

タグ:社会
posted by toshinagata at 21:32| 日記

2018年12月02日

ジェリコの戦い

 ヒメが聞いている「ラジオ英会話」で、ある登場人物が Jericho の町を訪問した、これは世界最古の町と言われている、という会話が出てきた。えっ、Jericho ってあの、旧約聖書に出てくるジェリコですか? 今でもあるって本当かよ、と調べてみると、Wikipedia に出てました。

死海の北西部にある町。古代オリエントの中でも古い町で、紀元前8000年紀には周囲を壁で囲った集落が出現した。世界最古の町と評されることもある。世界で最も標高の低い町でもある。(Wikipedia 「エリコ」より)

 ヒメに「旧約聖書に出てくるジェリコの話、知ってるか?」と聞いたら、「知らん、どんな話?」と返されて、はたと詰まってしまった。「ジェリコの町は壁に囲まれててな、…(詰まる)…その壁が崩れるねん。」と、まるで「# 聖書の話を雑に紹介する」みたいな説明になってしまった。正しくは、ヨシュア記ですね。ジェリコの町を攻略した時に、ヨシュアが神の命によって、祭司たちに角笛を吹かせ、民に叫ばせたところ、それに応じて壁が崩れた、という話。これでもまだ雑だけど。

 この話にちなんだ「ジェリコの戦い」という黒人霊歌は有名です。楽譜と歌詞を探してみたけど、いろんなバージョンがあってよくわからない。歌詞つきの YouTube をいくつか聴いて、自分で採譜してみた。

20181202-1.png

 古い吹奏楽関係者は、モートン・グールドの「狂詩曲『ジェリコ』」をご存知でしょう。この曲には、上の黒人霊歌が重要なモチーフとして使われています。私もかつて吹奏楽で演奏しました。フルスコアが読みづらくて難儀した記憶があります。

 この曲の「壁が崩れた」あとの静かな場面で、サックスのメロディの伴奏が「アルトクラリネット2本+バスクラリネット2本+バリトン2本」だけになる部分がある。うちのバンドにはアルトクラリネットがなかったので、音が抜けたままだったのです。仕方がないので、3番クラの隣の子と2人でこっそり(?)アルトクラのパートを吹いてました。

20181202-2.png

 バリトンパートも合わせれば、抜けているのは最初の2小説の Gis 音だけなんだけど、空虚5度だから目立つじゃないですか。でも、誰も指摘しなかったんだよね。私たちが吹いているのを指揮者が気がついてたかどうかは知りません。たぶん知らなかったんじゃないかな。

タグ:音楽 社会
posted by toshinagata at 01:10| 日記

2018年11月27日

wxLuaApp でデスクトップアプリを作ってみた

 GitHub - wxLuaApp の件。デスクトップアプリを作ってみた。けっこう調子良くサクサク書ける。

 高速フーリエ変換が必要だったので、Lua のライブラリを探した。実は、ベンチマークプログラムの SciMark for Lua の FFT が十分実用的だった。LuaJIT のウェブサイトの "Performance" ページでベンチマークに使われているもの。たったこれだけ。16384 点のフーリエ変換がほぼノータイムで完了する。

function fft_bitreverse(v, n)
  local j = 0
  for i=0,2*n-4,2 do
    if i < j then
      v[i+1], v[i+2], v[j+1], v[j+2] = v[j+1], v[j+2], v[i+1], v[i+2]
    end
    local k = n
    while k <= j do j = j - k; k = k / 2 end
    j = j + k
  end
end

function fft_transform(v, n, dir)
  if n <= 1 then return end
  fft_bitreverse(v, n)
  local dual = 1
  repeat
    local dual2 = 2*dual
    for i=1,2*n-1,2*dual2 do
      local j = i+dual2
      local ir, ii = v[i], v[i+1]
      local jr, ji = v[j], v[j+1]
      v[j], v[j+1] = ir - jr, ii - ji
      v[i], v[i+1] = ir + jr, ii + ji
    end
    local theta = dir * math.pi / dual
    local s, s2 = math.sin(theta), 2.0 * math.sin(theta * 0.5)^2
    local wr, wi = 1.0, 0.0
    for a=3,dual2-1,2 do
      wr, wi = wr - s*wi - s2*wr, wi + s*wr - s2*wi
      for i=a,a+2*(n-dual2),2*dual2 do
        local j = i+dual2
        local jr, ji = v[j], v[j+1]
        local dr, di = wr*jr - wi*ji, wr*ji + wi*jr
        local ir, ii = v[i], v[i+1]
        v[j], v[j+1] = ir - dr, ii - di
        v[i], v[i+1] = ir + dr, ii + di
      end
    end
    dual = dual2
  until dual >= n
end

 その後のグラフ表示も上の動画の通りで、何の問題もない。ああもちろん、16384 点のグラフを全部真面目に描画したら重くて大変なので、画面解像度に合わせて間引きはしています。LuaJIT 楽しい。

 メモリは結構食っているようです。上の状態で、25 MB ぐらい占有している。double 型 16384×2 点を Lua の数値型で保持しているわけだから、オーバーヘッドはまあ大きいだろうな。ffi.new(double[]) みたいにすれば少し節約できるかもしれないけど、そこまでしなくてもいいかなと思う。二次元データを使うようになったら考えたほうがいいかも。

posted by toshinagata at 23:25| 日記

2018年11月24日

ナツミカン色づき始める

 今年もナツミカンが色づき始めた。30個ぐらい実ってるかな。

20181124-2.jpg

 最近雨がほとんど降ってないので、実の表面が汚れていて、カビみたいなのがつき始めているものもある。このまま放置するとたぶん腐ってしまうので、水をかけて洗ってみた。太陽の光が水滴に反射してきれいだったので、写真を撮ってみたんだけど、腕前の関係で大してきれいには見えておりません(苦笑)

20181124-1.jpg

 今年の春に収穫した実は、味は悪くなかったのだが、果汁が少なくてスカスカだった。今年の夏はなるべく潤沢に水をやったつもりだけど、出来はどうだろうか。

タグ:園芸
posted by toshinagata at 13:47| 日記

2018年11月17日

映画「ボヘミアン・ラプソディ」

 見てきました。素晴らしかった…(以下、ネタバレがあります)

 最初にクイーンが結成されるシーンからして鳥肌ものだった。フレディがブライアンとロジャーの前でアカペラで歌い出し、それに2人がコーラスをかぶせる。あの歌声はフレディ本人? それはわからないけど、インパクト十分の登場。

 「ボヘミアン・ラプソディ」が生まれる経緯は特に念入りに描かれる。その前のいくつかのシーンで、まるで予告するように、「バラード」部分のピアノのフレーズが断片的に流れる。

20181117-1.png

 そして、「テープがすり切れるまで重ねた」と伝えられる「オペラ」部分の録音。どんどんエスカレートするフレディのリクエストに、劇場では思わず笑い声が漏れていた。何かを作り出すって、こういう風に、端から見ると滑稽に見えたりするものなんだよね。映画では「オペラ」部分のフルコーラスは流れないけど、公式 Twitter がこんな動画を流しているので紹介。歌詞がきっちり追えるので面白さが増します。

 セクシュアリティに関わるいくつもの辛いエピソードを経て、ラスト21分の「ライブ・エイド」のシーンに至る。もう言葉が出ない。ストーリーのドラマチックな盛り上がりは史実とは違うらしいけど、そんなことはどうでもいい、と思わせる。最高の音楽と、最高の演出。クイーンの音楽をもっともっと聴きたくなる、そんな体験でした。

タグ:映画 音楽
posted by toshinagata at 09:54| 日記

2018年11月15日

ホークス甲斐拓也すげー

 さんざん話題になってて今さらだけど、ホークスの甲斐拓也捕手、すごいですね。

 あの二塁からの悪送球で、捕手がカバーしてるもんですかね? いや、それが野球のセオリーだというのは知ってますよ。でも、プロ野球の試合を見ていて、ああいう悪送球を捕手がカバーして二塁で走者をアウトにするシーンをあまり見た記憶がない。走者から見たら「ええっ、なんで?」と思うんじゃないか。甲斐捕手が勤勉にプレイしていることがよくわかる。

 それと、とにかくボールを捕ってから投げるまでがとてつもなく速い。盗塁を刺すときもそうだけど、バントやキャッチャーゴロの処理も速い。そして送球のコントロールがいい。見ていて爽快感がある。捕手として守備だけで客を呼べる選手はなかなかいないだろう。

 この選手が「育成ドラフト6位」ですからね。ホークスのスカウトの目利きぶりは大したものだ。同期の千賀投手とともに、究極の「下剋上」でしょう。今年の日本シリーズで甲斐捕手がMVPをとったとき、王貞治さんが「他の選手の励みになる」とコメントされていた。これは本当に王さんらしい、下積みで頑張っている人への優しさにあふれた言葉だと思う。

posted by toshinagata at 00:52| 日記

2018年11月12日

NHK ドラマ「フェイクニュース」見た

 話題の「フェイクニュース」、録画してあったのをやっと見ました。

 前編は圧倒的なリアリティと迫力だったんだけど、後編はちょっと盛り上がりを狙いすぎなような気がした。わかりやすい「悪者」を仕立てあげるストーリーにしたくなかったのかな。最後の「一ヶ月後(だったかな?)」のシーン、みんな平穏な生活に戻っているようでいて、「あの騒ぎはいったい何だったんだろう」というのがもやっと残っているあたりが、これまた妙にリアリティがあるようにも思う。

 「フェイクニュース」。知識としては知っていたけど、こういうドラマに仕立ててくれると、ものの見方の引き出しが一つ新しくできたように感じますね(気のせいかも知れないけど)。いいものを見せてくれた脚本家・制作陣・俳優のみなさんに感謝。

タグ:テレビ 社会
posted by toshinagata at 21:53| 日記

2018年11月11日

開かずの踏切:JR西日本・滝の谷踏切

 西の新横綱が誕生したそうです(笑)1時間に55分遮断ってすごいな。

 しかし、ちょっと変な気がする。「南宮原踏切」が開かないのはわかるんですよ。JR 東海道線と貨物線を横切っているから、線路がたくさんある。そりゃあ、この線路に列車が次々とやってきたら、なかなか開かんだろう。貨物列車って長いやつあるしね。

 これに対して、「新横綱」の「滝の谷踏切」。 川西池田駅って帰省の時によく利用するんだけど、その近くの「開かずの踏切」ってどれかと思ったら、これですよ。普通の複線を横切っているだけ。なんでこれがそんなに「開かずの踏切」になっちゃうの?

 よく見ると、この踏切は車も通り抜けられないような狭い踏切のようです。ネットで探しても情報が見つからない。「横綱」に昇格したことから、鉄分高い人たちが紹介ページなど作ってくれるのではないかと期待。(いやそれほど期待はしてない。わりとどうでもいい。むしろそのすぐ横にある「東洋食品工業短期大学」というのが気になる。川西市にそんな大学あったんかいな、と調べてみると、食品包装の専門知識を教えているようです。)

posted by toshinagata at 01:12| 日記

2018年11月04日

wxLuaApp 開発中:完成度はイマイチだが一応使える

 GitHub - wxLuaApp の件。実用アプリが開発できるかどうか、試してみた。こんな感じです。見る人が見れば、何を作ってるかわかると思う。

20181104-1.png

 本気でアプリを作り始めると、wxLua の未完成なところがいろいろ見えてきた。公式の開発チームは開店休業状態で、ゲリラ的に開発されている状態だからなあ。

  • wxWidgets 3.0.x で一応ビルドできるのだが、これだと 3.0 以降の機能が使えないことがある。コンパイルの条件が wxCHECK_VERSION(3,1,1) で書かれているため。いったん一括変換で wxCHECK_VERSION(3,0,0) に変えたあと、3.0 でコンパイルエラーを起こすところを手動で修正した。
  • wxPointx, y をフィールドのようにアクセスできるのだが、wxSizewxRect は関数を使わないとメンバにアクセスできない。
    pt = wx.wxPoint(2, 3); print(pt.x) -- "2"
    sz = wx.wxSize(2, 3); print(sz.width) -- エラー
    rc = wx.wxRect(2, 3, 10, 20); print(rc.x) -- エラー
    print(sx:GetWidth(), rc:GetX()) -- どちらも OK
    
    これらのクラスは wxcore_gdi.cpp で定義されている。上記の不統一は、別に本質的な理由があるわけではなくて、単に実装されていないだけだった。
  • wx.wxPoint じゃなくて wx.Point でよかったんじゃないの?と思うのだが、これは今さら変えられないかな。
  • wx.wxBLACK_PEN はあるけど wx.wxBLUE_PEN はないとか、他にも不統一はいろいろありそう。
  • wx.wx**** クラスのオブジェクトにフィールドを追加する(インスタンス変数みたいなもの)ことはできるけど、nil が入れられない。
    sz = wx.wxSize(2, 3)
    sz.field = 1; print(sz.field) -- "1"
    sz.field = nil; print(sz.field) -- "Unable to call an unknown method 'field' on a 'wxSize' type.
    
    これは Lua のメタテーブルの仕様なのかな。false か何かで代用するしかないか。

 いろいろ不十分ではあるけど、悪くないですよ。Mac ではアプリ本体が 25 MB ぐらいで、あとはスクリプトとアイコンの画像ファイルだけ。LuaJIT なので、いざとなったら C のライブラリ関数を呼べる。上で試作中のアプリでも、バイナリファイルを読むために memmove() などを使ったりしている。

posted by toshinagata at 10:37| 日記

2018年10月28日

wxLuaApp 開発中:Love2D っぽく使えるようになった

 GitHub - wxLuaApp をぼちぼちと開発中。いろいろと忙しくてなかなか進まんけど、こんな感じになってます。

20181028-1.png

 コードの方は、wxmain.lua, Document.lua, Controller.lua の3ファイルを1つのフォルダに入れて、このフォルダを wxLuaApp のアプリケーションに Drag&Drop する。Love2D と同じようなスタイル。

-- wxmain.lua
require "Document"

function LuaApp.OpenDocument(file)
  local doc = Document.new(file)
end

function LuaApp.NewDocument()
  LuaApp.OpenDocument(nil)
end
-- Document.lua
require "Controller"

--  Class definition
Document = {}
Document.untitled_count = 0

function Document.new(filename)
  local doc = {}
  setmetatable(doc, { __index = Document } )
  local bname
  if filename == nil then
    bname = string.format("Untitled %d", Document.untitled_count)
    Document.untitled_count = Document.untitled_count + 1
  else
    bname = filename
  end
  doc.controller = Controller.new(doc, bname)
  return doc
end
-- Controller.lua
--  Class definition
Controller = {}

function Controller.new(doc, bname)
  local cont = {}
  setmetatable(cont, { __index = Controller } )
  cont.document = doc
  --  Create frame
  local frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "", wx.wxDefaultPosition, wx.wxSize(640, 400))
  frame.controller = cont
  frame:SetTitle(bname)
  cont.frame = frame
  cont.scrollwin = wx.wxScrolledWindow(frame, wx.wxID_ANY)
  cont.scrollwin:SetScrollbars(1, 1, 640, 400)
  cont.panel = wx.wxPanel(cont.scrollwin, wx.wxID_ANY, wx.wxDefaultPosition, wx.wxSize(640, 400))
  cont.panel:Connect(wx.wxEVT_PAINT, function (event) cont:OnPaint(event) end)
  frame:Show(true)
  return cont
end

function Controller.OnPaint(self, event)
  local dc = wx.wxPaintDC(self.panel)
  dc:DrawLine(0, 0, 640, 400)
  dc:delete()
end

 実際にコーディングしてみると、ピリオドとコロンの間違いでしょっちゅう引っかかる。これは Python や Ruby にはないストレス。要は「なんちゃってオブジェクト指向」の悲しさだな。「Lua の良さ」を引き出すには、「処理速度」と「組み込み向け」の特徴を生かさないといけない。つまり、重い処理を Lua で書いて、「C++ 使わなくてもここまでできるでしょ?」と見せつけるのと、単体のアプリをそこそこのサイズ(実行形式で 200 MB とかじゃなくて)で作ってみせること。

posted by toshinagata at 12:28| 日記
email.png
Powered by さくらのブログ