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| 日記

2018年10月14日

Mac のプレビューでブックレット印刷する (AirPrint)

 「LÖVE (Love2D) プログラミング」は、ブラウザから印刷できるようになっている。A4 1枚に2ページのレイアウトで、ブックレット印刷(中綴じ印刷)をすると、参照に便利です。Mac の「プレビュー」を使うやり方をメモしておく。なお、"AirPrint" 対応のプリンタが接続されていることが必要。

1. まず、ブラウザから普通にプリントダイアログを開く。

20181013-1.png

2. 「背景をプリント」にチェックを入れる(このチェックボックスが出ていない場合は、「詳細を表示」ボタンを押す)。左下の「PDF」メニューから「プレビューで PDF を開く」を選ぶ。

20181013-2.png

3. プレビューで PDF が開く。左側のサイドバーをサムネール表示にしておく(左上のボタンを押して、出てくるメニューから「サムネール」を選ぶ)。

20181013-3.png

4. このままプリントしてもいいのだけど、ブックレット印刷をすると、4ページの倍数に満たないときに空白ページができてしまうので、2つ以上の章を別々に印刷すると無駄が多い。そこで、いくつかの章をまとめて印刷する。上の 1.〜3. の操作を、連続した章に対して行って、プレビューで表示する。下の図では、8, 9, 10 章がプレビューで表示されている。

20181013-4.png

5. ここからは、PDF を連結する作業になる。まず、最初に開いた PDF のウィンドウを前面に出す。サイドバーで、最後のページを選ぶ。この PDF は4ページなので、4ページ目を選ぶ。

20181013-5.png

6. 次に、二番目に開いた PDF のウィンドウを前面に出す。サイドバーで、最初のページを選んだあと、「編集/すべてを選択」で、全部のページを選択する。

20181013-6.png

7. (ここが難しい)選択したページを、一番目の PDF の最後のページの直後にドラッグする。

20181013-7.png

8. 一番目の PDF の最後に、二番目の PDF の全ページが結合される。

20181013-8.png

9. 同じようにして第10章の PDF も結合する。全部で17ページの PDF になった。

20181013-9.png

10. 「ファイル/プリント」を選ぶ。プリンタとして "AirPrint" 系のものを選んでおく。

20181013-10.png

11. 「プレビュー」ポップアップメニューから、「レイアウト」を選ぶ。

20181013-11.png

12. 「両面」ポップアップメニューから「ブックレット」を選ぶ。これはたぶんプリンタドライバ依存の機能なので、同じプリンタを使っていても "AirPrint" ドライバでなければ出てこない場合がある(今回はここでハマった)。

20181013-12.png

13. 「ブックレット」を選ぶと、プレビューが変化するのだが、このままプリントすると「普通の両面印刷」になってしまいそうである。でも、実際にはちゃんと「重ねて二つ折りにする」とブックレットになるように印刷される。紛らわしい。(これは 10.11 付属のプレビューの場合なので、今は修正されているかも。)

20181013-13.png

 すごく面倒臭そうだけど、上の手順のうち半分ぐらいは「PDF を結合する」手順。単にブックレット印刷をするだけなら、「レイアウト」で「ブックレット」を選ぶだけで簡単にできる。標準機能だけでできるのは便利です。

タグ:Mac
posted by toshinagata at 00:18| 日記

2018年10月07日

Roland A-49 が macOS 10.13 で動かん

 ヒメが DTM に本格的に手を出そうとしている。だいぶ前から GarageBand は使っていて、学校の体育の時間に使うダンス音楽の編集などを(時には友人の分まで)やったりはしていた。この春に、MacBook Air (macOS 10.13) と Cubase, その他もろもろ一式を買って、さて始めようとしたわけですが。

 Roland の A-49 が動かん、という。え、普通の MIDI キーボードだろ? 何が問題なんだ? と思ったのだが、確かに動かん。

 まず、USB で Mac につないでも電源が入らない。これは、最初に Function-Assign-Pitch を押しながらケーブルを刺すと、電源が入ることがわかった。ちなみに Amazon レビューの情報。一度これで電源が入ると、次からは普通につないでも電源が入る。なんだかよくわからんが、一応これはクリアしたと考える。

 ところが、電源は入るのに、Mac が認識しない。試しに、自分の Mac (OS は 10.11) で試してみると、普通に認識した。ここから、犯人探しが始まった。システムログを見ても、どこで詰まっているのかよくわからない。A-49 の機能拡張は RDUSB0156Dev.kext だということはわかったので、手動で sudo kextload /Library/Extensions/RDUSB0156Dev.kext とやってみると、「システムポリシーのためにロードできませんでした」みたいなメッセージが出る。そうか、セキュリティ強化のための機能制限に引っかかってるのか。

 ネットで調べてみると、「リカバリーモードで立ち上げて csrutil disable とする」なんて解決策が出ている。これはアカンやつやろ、と思ったが、試しにやってみたところ、sudo kextload /Library/Extensions/RDUSB0156Dev.kext は通るようになった。手動でこれを実行しておけば、ちゃんと Audio MIDI 設定で A-49 が見えて、USB に接続すると認識される。

 一回やっておけば次からは自動認識されるんじゃない、と思ったのだが、甘かった。再起動すると、やはり sudo kextload /Library/Extensions/RDUSB0156Dev.kext からやらないとダメ。ヒメは「しょうがないね」と言いつつ、このコマンドをメモしていた。ここまでやらなきゃいけないなんて、どう考えてもおかしいだろう、と思うのだが、今のところこの方法しか見つかってない。Apple も Roland も、もうちょっとなんとかならんもんかな。セキュリティを強化するのは結構なんだけどさ。

 そもそも、たかが MIDI キーボードだろ? 本当に機能拡張なんて要るのか? USB の MIDI ストリーミングサブクラスじゃあかんのか? 疑問は尽きない。

タグ:音楽 DTM
posted by toshinagata at 21:19| 日記

2018年10月04日

調子に乗って wxLua

 Love2D (LÖVE) を使ったプログラミングがなかなか面白いので、調子に乗って wxLua なるものに手を出してしまった。

20181004-1.png

 上記の公式ウェブサイトは、2012 年で開発が止まっていて、wxWidgets 2.9 までしか対応していないように見える。しかし、公式じゃないが細々と開発を続けている人がいる。一番活発なのは Paul Kulchenko 氏。この人は、Lua 用の IDE として名高い ZeroBrane Studio の開発者である。Lua への本気度は信じるに値する。

 Love2D (LÖVE) では、単体のアプリにスクリプトを読ませることで、Lua プログラムを実行するようになっていた。同じように、wxWidgets の機能を一通り取り入れたアプリを作成して、それが Lua スクリプトを実行するようにしてみた。どれぐらい大きくなるか、と思ったのだが、Mac 64 ビットアプリで 23 MB。まあ許容範囲じゃない?

20181004-2.png

 さらに調子に乗って、Windows 版も作成してみた(32ビット版)。mingw32 のクロスコンパイラを使う。こちらは 60 MB。もしかしてシンボル情報とか残ったままだったかな。確認しなきゃ。

20181004-3.png

 なお、Windows を 32 ビット版にしたのは、64 ビット版だと EasyWine で動かないから。また、wxLua 本体の方も、sizeof(long) = sizeof(void *) が前提になっているコードがかなりあって、mingw64 のクロスコンパイラ(long は 32 ビット、void * は 64 ビット)に対応するには修正が必要、というのもある。

 Windows 32 ビット版のアプリを EasyWine で動かしてみた。ビルドからテスト実行まで Mac 上で完結するのは嬉しい。

20181004-4.png

 プロジェクトはこちらです:GitHub - wxLuaApp。Xcode 上で自分でビルドすることしか考えてないので、Mac 以外のプラットフォームでビルドするのは面倒です。まあ、ぼちぼち進めていきます。

posted by toshinagata at 23:46| 日記

2018年09月30日

ドラゴンズ岩瀬投手引退

 今年は、長くプロ野球界に貢献した選手がたくさん引退していく。その中でも、やはりドラゴンズ岩瀬仁紀投手の存在感は格別だ。

 1998年入団。翌1999年の開幕戦(対カープ)でいきなり起用される。しかも、1点リードの二死二塁、打者前田智徳というとんでもない場面。結局、前田・江藤智・金本知憲に3連打されて逆転を許し、降板。しかし、ルーキーがこの場面で起用されるのは首脳陣の信頼の証である。実際、2日後のカープ戦で再び起用され、今度は無失点に抑える。結局、この年の65登板はリーグトップ。なお、あまり知られていないが、この年にドラゴンズがリーグ優勝を決めた試合の勝利投手は岩瀬だった(同点の7回に登板して1回を抑え、その回の裏にドラゴンズが決勝点を挙げた)。

 2000年、10/8 に公式戦唯一の先発登板を果たす(7回無失点で10勝目)。公式戦の先発登板はこれだけだが、落合監督時代には、ナゴヤドームでのオープン戦初戦で1イニング限定の先発を務めるのが慣わしだった。監督曰く、「うちは岩瀬で始まって岩瀬で終わる」。

 2007年、野球好きな人なら誰もが忘れない、日本シリーズ第5戦での登板。8回まで走者を出さなかった山井大介の後を受けて9回を任される。さすがの岩瀬も足が震えたという。この交代は、落合監督の指示とされていたが、森繁和投手コーチの進言によるものと、森氏自身が明らかにしている(「今だから話せる落合竜の真実」森繁和・二宮清純、現代ビジネス 2012/04/26)。また、山井投手は8回終了時に「どうする?」と森コーチに聞かれ、「代えてください、お願いします」と答えたという(「未完の完全試合。山井大介『決断』の理由」阿部珠樹、Number Web 2008/04/03)。山井投手も、森コーチも、落合監督も、「あの場面の岩瀬はすごかった」と口を揃える。岩瀬投手自身も、セーブ数の日本記録を達成した時に、最も記憶に残るセーブとしてこの試合を挙げている。公式戦とは別記録だから、日本記録の数には入っていないのだけれども。

 そして先の 9/28、今季限りの引退を表明した岩瀬投手が、9回1点リードの場面でリリーバーとして起用された。この試合が通算 1000 試合目の登板。1死球を与えたものの、後続を断って 407 個目のセーブを記録した。なんと美しい、稀代のリリーフエースにふさわしい完璧な終わり方じゃないか。

 と思ったら、翌日浅尾拓也投手の引退試合につきあって、「浅尾→岩瀬」の黄金リレーを再現してくれたよ。藤浪投手にヒットを打たれてなんだかミソがついちゃったけど、むしろ好感度が上がった。いわゆる「野球エリート」じゃない岩瀬投手には、ちょっと人間臭い、ほっこりした終わり方が似合っている。本人は「本塁打を打ちたかった」と言っているらしい。ドラゴンズはあと2試合残しているから、もう1回ぐらい勇姿を見られるかも知れないね。代打でどうですか、森監督?

タグ:野球
posted by toshinagata at 18:24| 日記

2018年09月27日

覚せい剤を作る大学生なんてすごくも何ともない

 爆薬を作って逮捕された学生が、覚せい剤も作っていたと報道されています。それを受けて、こんなことを言っている方がちらほら…

 覚せい剤を自宅で作った、ということで、何か「化学の天才的な才能を持った若者が、ついうっかりダークサイドに堕ちてしまった(だから社会はその才能を生かすべき)」みたいなイメージを持たれているのかもしれないけど、ぜんぜんそんな話じゃないですよ。普通の高校の化学部にいる程度の平凡な化学の能力に、禁じられた行為をすることで目立ちたいという残念な承認欲求と、倫理観の完全な欠如とが合わさって、起きてしまった事例です。単に、「化学の知識を持っている人なら誰でもできるけど、普通は自制してやらない」ことを、平気でやって、法に触れてしまっただけのことです。公道を 200 km/h で飛ばしてスピード違反で捕まった DQN と大して変わりません。

 こんな DQN を持ち上げなくても、化学・工学に広く通じた有能な人なんて、世の中にいくらでもいますよ。「メイカーズ」界隈には見当たらないかもしれないけど、住んでいる世界が違うだけのことです。メイカーズ界隈の方々には、DQN は放っておいて、ちゃんとした化学分野の人にアプローチして欲しいと思いますね。

タグ:社会
posted by toshinagata at 22:29| 日記
email.png
Powered by さくらのブログ