mieki256's diary



2013/08/01(木) [n年前の日記]

#1 [ruby] 例外をキャッチできず

RenderTarget に描画して画像保存をすると時々セグメントエラーが出る件。毎フレーム、RenderTarget を生成・使用・廃棄したらエラーが出なくなったので喜んだものの。何度か試してたらやっぱりエラーが発生して。

Ruby + DXRuby でセグメントエラー? Segmentation fault が発生した時は、begin 〜 rescue でキャッチできないのですな…。途中で強制終了してしまった。

こんな感じのメッセージが表示されて、止まってしまう。
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384: [BUG] Segmentation fault
ruby 1.9.3p429 (2013-05-15) [i386-mingw32]

-- Control frame information -----------------------------------------------
c:0010 p:---- s:0061 b:0061 l:000060 d:000060 CFUNC  :save
c:0009 p:0525 s:0056 b:0056 l:000055 d:000055 METHOD c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384
c:0008 p:0494 s:0041 b:0041 l:000040 d:000040 METHOD c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:128
c:0007 p:2496 s:0032 b:0032 l:000020 d:000031 BLOCK  main.rb:340
c:0006 p:---- s:0026 b:0026 l:000025 d:000025 FINISH
c:0005 p:---- s:0024 b:0024 l:000023 d:000023 CFUNC  :loop
c:0004 p:0629 s:0021 b:0021 l:000020 d:000020 METHOD main.rb:99
c:0003 p:0549 s:0006 b:0006 l:00214c d:0005bc EVAL   main.rb:362
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:00214c d:00214c TOP   

-- Ruby level backtrace information ----------------------------------------
main.rb:362:in `<main>'
main.rb:99:in `main'
main.rb:99:in `loop'
main.rb:340:in `block in main'
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:128:in `update_and_draw'
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384:in `export_mode'
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384:in `save'

-- C level backtrace information -------------------------------------------
C:\Windows\SysWOW64\ntdll.dll(ZwWaitForSingleObject+0x15) [0x779bf8b1]
C:\Windows\syswow64\kernel32.dll(WaitForSingleObjectEx+0x43) [0x77201194]
C:\Windows\syswow64\kernel32.dll(WaitForSingleObject+0x12) [0x77201148]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_vm_bugreport+0xf9) [0x62e5bb59]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_name_err_mesg_new+0x17a) [0x62d3a856]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_bug+0x2f) [0x62d3b533]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_check_safe_str+0x194) [0x62dee790]
 [0x004011e6]
 [0x02fba0d2]
C:\Windows\SysWOW64\ntdll.dll(RtlKnownExceptionFilter+0xb7) [0x77a174df]

-- Other runtime information -----------------------------------------------

* Loaded script: main.rb

* Loaded features:

    0 enumerator.so
    1 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/encdb.so
    2 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/shift_jis.so
    3 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/transdb.so
    4 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/defaults.rb
    5 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/rbconfig.rb
    6 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/deprecate.rb
    7 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/exceptions.rb
    8 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/defaults/operating_system.rb
    9 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb
   10 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems.rb
   11 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/i386-msvcrt/dxruby.so
   12 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/win32ole.so
   13 C:/ruby193mingw/lib/ruby/1.9.1/win32ole.rb
   14 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/ayame.so
   15 C:/ruby193mingw/lib/ruby/1.9.1/thread.rb
   16 C:/ruby193mingw/lib/ruby/1.9.1/singleton.rb
   17 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/msgwdw.rb
   18 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/laps.rb
   19 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/seq.rb
   20 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/scroll.rb
   21 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/anime.rb
   22 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/exportexo.rb
   23 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/select.rb
   24 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/imagedata.rb
   25 C:/ruby193mingw/lib/ruby/1.9.1/forwardable.rb
   26 C:/ruby193mingw/lib/ruby/1.9.1/English.rb
   27 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/date_core.so
   28 C:/ruby193mingw/lib/ruby/1.9.1/date/format.rb
   29 C:/ruby193mingw/lib/ruby/1.9.1/date.rb
   30 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/stringio.so
   31 C:/ruby193mingw/lib/ruby/1.9.1/csv.rb
   32 C:/ruby193mingw/lib/ruby/1.9.1/prettyprint.rb
   33 C:/ruby193mingw/lib/ruby/1.9.1/pp.rb
   34 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/animekind.rb
   35 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/config.rb
   36 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/mnote.rb
   37 C:/ruby193mingw/lib/ruby/1.9.1/benchmark.rb
   38 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/bitmapfont.rb
   39 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/keyboardimage.rb
   40 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/keymapdisp.rb
   41 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb
   42 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/utf_16le.so
   43 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/utf_16_32.so
   44 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/japanese_sjis.so
   45 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/single_byte.so

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Compilation exited abnormally with code 3 at Thu Aug 01 17:18:27
一応、その384行前後もメモ。
          @render.dispose unless @render.disposed?
          @render = RenderTarget.new(@scrw, @scrh)
          @anime.draw_rendertarget(@render)
          if @frame > 0 then
            begin
              img = @render.toImage
              img.save(fn, @outfmt) # ここが384行目。ここでエラーが出てる?
              img.dispose unless img.disposed?
            rescue
              # 保存に失敗
              @retry_count += 1
            else
              # 保存に成功
              @retry_count = 0
            end
            @anime.update_pos if @retry_count <= 0 # 座標更新
          end
          @render.dispose unless @render.disposed?
環境は、
上のリストを打っていて気になった点が。DXRuby に限らずだけど、Rubyのモジュール?の正確なバージョンを取得するのって、どうしたらいいんだろう…?

それはともかく。30FPSで全フレーム保存しようとしてるのだから、そりゃ落ちるだろ、と言われそうな気もする。でも、なんで落ちるのか、理由すら分からず。HDDへの書き込みが間に合わなくて落ちるとかそういうアレなんだろうか。

2013/08/02(金) [n年前の日記]

#1 [ruby] DXRuby 1.5.1devをインストールしたら若干不具合が

今まで DXRuby 1.5.0dev?を使ってスクリプトを書いていたのだけど。1.5.1devが公開されていると知り、導入してみたところ不具合が。

ひとまず、公式サイトの掲示板に報告してきたけれど。実は自分の環境に起因する不具合だったらどうしよう、てな不安も。その時はゴメンナサイ。

win32oleとの相性。 :

不具合その1。DXRuby と win32ole を同時利用できない。require 'win32ole' を書いただけでエラーが発生してしまう。

require 'dxruby'
require 'win32ole'
と書くと、以下のようなエラーメッセージが表示される。
C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `new': fail: OLE initialize (RuntimeError)
    HRESULT error code:0x80010106
      Cannot change thread mode after it is set.
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/ruby193mingw/lib/ruby/1.9.1/win32ole.rb:1:in `<top (required)>'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/select.rb:9:in `<top (required)>'
        from C:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/main.rb:17:in `require_relative'
        from C:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/main.rb:17:in `<main>'
「Threadを後からムニャムニャはできないよ」と言われてる、のかな? 英語、分からんのですが。

以下は想像。
  • DXRuby 1.5.1 はスレッド周りで大改革を行ったらしい。
  • win32oleはスレッド関連で制限があるらしい。
そのあたりが関係してるのかなと。

win32oleを使って、フォルダ選択ダイアログを開きたいのですが…何か手はないものか。

スクリプトが終了してくれない。 :

不具合その2。状況によっては、スクリプトが終了してくれなくなる。

色々試したのだけど、どうも DXRuby の Sound と、Ayame 0.0.3 を同時利用すると、スクリプトが終了しなくなるようで。

ただ、同時利用していても、スクリプトの最後で、Sound#dispose をしたら終了してくれるようになった。

まあ、せっかく Ayame を使うのだから、全部 Ayame で鳴らしてしまってもいいのでは、という気もしていたり。ただ、再生時の遅延等がどうなるか、何個までSEを同時再生できるのか、気になるところではあるけれど。

公式サイトの掲示板が気になる。 :

全然関係ない話だけど。DXRuby 公式サイトの掲示板が、SPAM書き込みで荒らされているのが気になったり。対策は難しいのかしら。

どういう cgi を使っているのか、対策可能な cgi かどうかが気になって、掲示板の最下部にあった「ShuttleBoard」なるcgi名で検索したところ、 _CGI-Search:ShuttleBoard:PHPあいらんど というページに遭遇。元々は「PHPあいらんど」なるサイトで公開されていたスクリプトらしいけど、ドメイン?失効、かつ、関係ない業者のサイトが立ち上がってしまったようで、今は入手不可のスクリプトになっている、ように見える。

スクリプトソースが入手できれば、SPAM対策の修正等もできるのかもしれないけど。公開サイトが消滅してしまったのでは…。SourceForge や github で公開してあればこういう悲劇は避けられたのだろうか。

それはともかく。件の掲示板のSPAM対策としては、以下の理由から、email欄に文字列が入ってたらSPAMとして弾く、という処理だけでも効果がありそうな気もしたり。
  • そもそも今時、ネット上にメルアドを晒してたら、SPAM業者のクローラーがメルアド収集するものだからSPAMがバンバン届いてしまうわけで。なので、出来る限り public なページ上ではメルアドの入力・表示を避けたほうがいい。
  • 業者のSPAM書き込みは、ほとんどの場合、掲示板の入力フォームで入力できる全項目を埋めようとしてくるので、そこに書いてある文章(「○○を空欄にしてね」等)も見ないで埋めてくる書き込みはSPAMだろうと判断できそう。

もっとも、この日記ページのツッコミ欄などは、それだけでは対策として足りなくて、NGワードも使って弾くことにしちゃったのだけど。それでも、email欄を空にしてもらうだけで、英文だらけのSPAMは除去できた記憶が。外人さんは日本語読めないから個別対応できないだろうし。

でも、英語圏の人にも利用してもらおうと考えた場合は、かえってマズイのかな…。本来であれば、英文メッセージも一緒に表示しておかないといかんのだろうか。

#2 [ruby] Rubyでフォルダ選択ダイアログを開く方法について

win32oleが封じられた状態で、どうやってフォルダ選択ダイアログを開こうかと悩んでたけど。フォルダ選択ダイアログを開いて結果を返すだけのWSHを書いて、それを Ruby から呼び出したらどうかと思いついた。

こんな感じでどうだろう…?

select_open_folder.vbs
' フォルダ選択ダイアログを開いて、選択されたフォルダパスを返す VBScript

Option Explicit
On Error Resume Next

Dim oParam, oShell, oFolder, s, dirname

Set oParam = WScript.Arguments
If oParam.Length > 0 Then
  s = oParam(0)
Else
  s = "フォルダを選択してください"
End If
dirname = "::"

Set oShell = WScript.CreateObject("Shell.Application")
If Err.Number = 0 Then
  Set oFolder = oShell.BrowseForFolder(0, s, 0)
  If Not oFolder Is Nothing Then
    ' フォルダ選択がされた場合
    dirname = oFolder.Items.Item.Path
  Else
    ' キャンセルされた場合
    dirname = ""
  End If
Else
  ' エラーが発生した場合
  ' WScript.Echo "エラー:" & Err.Description
  dirname = ""
End If

' 結果を出力
WScript.Echo dirname

Set dirname = Nothing
Set s = Nothing
Set oFolder = Nothing
Set oShell = Nothing
Set oParam = Nothing


select_open_folder.rb
#!ruby -Ks
#
# DXRubyを使ったスクリプト中から、
# vbsを呼ぶことでフォルダ選択ダイアログを開いて、
# 結果を受け取ってみる

require 'dxruby'

fnt = Font.new(12)
folder = ""

Window.loop do
  break if Input.keyPush?(K_ESCAPE)
  
  if Input.keyPush?(K_Z)
    title = "画像フォルダを選択してください"
    wsh_fname = "select_open_folder.vbs"
    folder = %x[ cscript //nologo #{wsh_fname} #{title} ]
    folder.chomp! # 返ってきた文字列には改行も含まれているので除去
    folder = "" if folder =~ /^::/ # 特殊フォルダを選択された際の対策
  end
  
  Window.drawFont(16, 16, "Z   : フォルダ選択ダイアログを開く", fnt)
  Window.drawFont(16, 32, "ESC : 終了", fnt)
  Window.drawFont(16, 64, "Folder : [#{folder}]", fnt)
end

なんだか上手く行っているような気もする。本番スクリプトに組み込んでみるかな…。

考えてみれば、*NIX文化圏の流儀 ―― 単機能のプログラムを組み合わせて目的を果たす、という考え方を Windows上で利用するのもアリだよな、という気もしてきたり。*NIXを軽くお手本にした、MS-DOSの延長線上にあるOSなんだから、アリなんじゃないかな…。

2013/08/03() [n年前の日記]

#1 [prog] Markdownでドキュメントを書いてたり

ある程度プログラムができてきたので、ヘルプ相当というか、githubにアップするために必要な readme.md を ―― Markdown文書を書き始めたり。

Markdownというのは、「素のテキストファイルとして眺めても読みやすく」「HTMLその他にもサクッと変換しやすい」文書のフォーマット、とでもいうか。

常用してる xyzzy で Markdown を書けなくもないのだけど、HTML変換結果をリアルタイムプレビューをしてくれる _MarkdownPad - The Markdown Editor for Windows を使って書いてたり。ちなみに、Windows用のエディタです。Mac用ではないです。

自分で作った _markdowneditorpyqt で書いてもいいのだけど。元々、昔の MarkdownPad の動作に不満があったり、 _MarkDown#Editor が自分の環境では何故か動作に問題があったから、仕方なく自分で作ってお茶を濁してただけの話だったわけで。でも、MarkdownPad が動くなら ―― 日本語入力その他にも対応してくれているなら、そっちを使わない手はないよなあ、と。

他にも、 _Markdown Previewer というサービスを使うのも良さそうだなと。何かしらのエディタで Markdown を書いて保存するたびにリアルタイムプレビューしてくれるサービスらしくて。…サービスという分類でいいのだろうか? そういう処理をしてくれるhtml、と呼ぶべきなのかな? 何にせよ、自分が普段から使い慣れているエディタで、プレビューもできてしまうあたりは素晴らしいと思ったり。

Markdown というと、少し前までは、 と、そんな感じで、Windowsユーザにとっては残念な状況があったのだけど。最近はWindowsでもちゃんと使えるアプリやサービスが揃ってきた印象があって、実にありがたいなと。

htmlの変換には BlueFeather を使わせてもらったり。 :

_BlueFeather

BlueFeather は、Markdown → html変換ツール。Ruby製。目次を自動生成してくれたり、変換時にcss指定も挿入してくれたり、Markdown Extra + α が使えたり等、いくつか機能追加されてるツール。
  • 目次の自動生成がなかったら、人間様が目次部分も書かないといかんわけで。それだと、絶対に見落とし・記述ミスが発生する。
  • cssを自動挿入できないと、htmlに変換するたびに、毎回人間様がコピペして追加しないといけないわけで。地味に面倒臭い。
そんなわけで、BlueFeather、便利です。ありがたや。

ただ、独自記述が Markdown 文書内に増えてしまうので、他のMarkdown関連アプリで眺めた際に、謎文字列が表示されて、ちとアレな感じも。変換時のコマンドラインオプションで指定等できれば解決するのかもしれないけど、cssやタイトル指定はともかく、目次はどこに挿入すべきかは指定方法が思いつかない。その点、文書内でアレコレ指定するほうが使い勝手はいいのかもしれないので、判断に悩むというか。

2013/08/04() [n年前の日記]

#1 [ruby] DXRuby 1.5.2dev版を導入

DXRuby 1.5.2dev版が公開されていたので、Ruby 1.9.x対応版のほう導入してみたり。

手元の環境では、先日気付いた不具合2点が ―― win32oleとの同時利用、SoundとAyameの同時利用時の不具合が解決されているように見えました。ありがたや。あまりにも迅速な対応に頭が下がります。

と喜んでたら、1.5.2dev版にも気になる動作を見つけてしまったかもしれず。Window.openFilename() 等を開くと、その後、マウスクリックが検出できなくなってしまうような…?

とりあえず検証用のスクリプトをメモ。画面の上・中・下でマウスクリックすれば状態を確認できる。
#!ruby -Ks
# -*- mode: ruby; encoding: sjis -*-
# DXRuby で openFilename() 等の実行後、マウスクリックが検出不可になる症状のテスト

require 'dxruby'
require 'win32ole'

fnt = Font.new(12)
fpath, dpath = "", ""

Window.loop do
  Window.bgcolor = [0, 0, 0]
  break if Input.keyPush?(K_ESCAPE)
  if Input.mousePush?(M_LBUTTON)
    my = Input.mousePosY
    if my < Window.height / 3
      Window.bgcolor = [255, 0, 0] # 背景色を赤に
    elsif my < Window.height * 2 / 3
      path = Window.openFilename([["ALL Files (*.*)", "*.*"]], "ファイル選択")
      fpath = (path != nil)? path : "cancel"
    else
      app = WIN32OLE.new('Shell.Application')
      path = app.BrowseForFolder(0, "フォルダ選択", 0)
      if path
        begin
          dpath = path.Items.Item.path
        rescue
          dpath = "?"
        end
      else
        dpath = "cancel"
      end
    end
  end
  l = ["画面の上側でクリック : 画面フラッシュ",
       "画面の真ん中でクリック : Window.openFilename()",
       "[#{fpath}]",
       "画面の下側でクリック : WIN32OLE + ダイアログ",
       "[#{dpath}]",
      ]
  x, y = 16, 16
  l.each do |s|
    Window.drawFont(x, y, s, fnt)
    y += fnt.size + 16
  end
  x0, x1 = 0, Window.width
  y = Window.height / 3
  Window.drawLine(x0, y, x1, y, C_WHITE)
  y = Window.height * 2 / 3
  Window.drawLine(x0, y, x1, y, C_WHITE)
end

#2 [ruby] RubyからWSHを呼び出して結果を受け取るソレ

先日、RubyからWSHを呼び出してフォルダ選択ダイアログを開いて結果を受け取る、というやり方を試してみたわけだけど。このやり方は問題があることが分かってしまって。
コマンドプロンプト上から hoge.rb を呼び出して、その中からWSHを呼び出した時しか、標準出力に出てきた結果を受け取れない模様。また、wscript.exe を使えばおそらくコマンドプロンプトは開かないけど、標準出力は利用できなくなるそうで。つまり、CUIで作業してるときは問題ないけど、GUIアプリでやろうとすると、これではいかんなあ、と。

どうやって結果を受け取ればいいのか悩んだけど。クリップボード経由ではどうだろうかと思いついたり。以下のような感じにしてみたけれど…。

select_open_folder.vbs
' フォルダ選択ダイアログを開いて、選択されたフォルダパスを返す VBScript
' 結果文字列をクリップボードに入れてから終了する。

Option Explicit
On Error Resume Next

Dim oParam, oShell, oFolder, s, dirname, objIe

Set oParam = WScript.Arguments
If oParam.Length > 0 Then
    s = oParam(0)
Else
    s = "フォルダを選択してください"
End If
dirname = "::"

Set oShell = WScript.CreateObject("Shell.Application")
If Err.Number = 0 Then
    Set oFolder = oShell.BrowseForFolder(0, s, 0)
    If Not oFolder Is Nothing Then
        ' フォルダ選択がされた場合
        dirname = oFolder.Items.Item.Path
    Else
        ' キャンセルされた場合
        dirname = ""
    End If
Else
    ' エラーが発生した場合
    ' WScript.Echo "エラー:" & Err.Description
    dirname = ""
End If

' 結果を出力
' WScript.Echo dirname

' 結果をクリップボードにコピー
Const OLECMDID_COPY = 12
Const OLECMDID_SELECTALL = 17
Const OLECMDEXECOPT_DODEFAULT = 0
Set objIe = CreateObject("InternetExplorer.Application")
' objIe.Visible = true
objIe.Navigate "about:blank"
Do While objIe.Busy
    WScript.Sleep 100
Loop

objIe.Document.Body.InnerText = dirname
objIe.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
objIe.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
objIe.Quit

Set objIe = Nothing

Set dirname = Nothing
Set s = Nothing
Set oFolder = Nothing
Set oShell = Nothing
Set oParam = Nothing

select_folder_use_vbs.rb
#!ruby -Ks
# -*- mode: ruby; encoding: sjis -*-
#
# DXRubyを使ったスクリプト中から、
# WSH(.vbs)でフォルダ選択ダイアログを開き、結果を受け取ってみる
#
# 以前は、cscript.exe を呼び、標準出力経由で結果を受け取っていたが、
# それだとコマンドプロンプトが開いてしまって鬱陶しいので、
# wscript.exe を呼び、かつ、クリップボード経由で受け取るようにしてみた。

require 'rubygems'
require 'dxruby'
require 'win32/clipboard'
include Win32

fpath = ENV['OCRA_EXECUTABLE'] || $0
cdir = File.dirname(File.expand_path(fpath))
fnt = Font.new(12)
folder = ""
cnt = 0

Window.loop do
  break if Input.keyPush?(K_ESCAPE)
  
  if Input.keyPush?(K_Z)
    title = "フォルダを選択してください (・ωー)〜☆"
    wsh_fname = File.join(cdir, "select_open_folder.vbs")
    %x[wscript "#{wsh_fname}" "#{title}"] # WSH呼び出し

    # クリップボードにフォルダパスが入っているはず
    folder = Clipboard.data
    puts folder
    
    folder.chomp! # 返ってきた文字列には改行も含まれているので除去 
    folder = "" if folder =~ /^::/ # 特殊フォルダを選択された際の対策
  end

  l = [
       "#{cnt}",
       "Zキー : フォルダ選択ダイアログを開く",
       "ESC  : 終了",
       "[#{folder}]",
      ]
  x, y = 16, 16
  l.each do |s|
    Window.drawFont(x, y, s, fnt)
    y += fnt.size + 8
  end
  cnt += 1
end

これでどや!? と思ったけど、ダメだった。なんか知らんけど、上手く行く時と、Rubyスクリプトが固まる時がある…。

キャンセルを押したときに正常動作しないことにも気付いたり。おそらく、"" をクリップボードに入れようとした際には、クリップボード内容を更新しない、という仕組みになってそうな気がする。何かしらの文字列を無理矢理にでも投入してやらないといかんらしい。

日本語フォルダを選択した時にエラーが発生することにも気付いたり。 win32-clipboard は英数字しか扱えないそうで。かなり致命的。 _cygwin ruby1.9.3 と win32-clipboard-0.5.2 - 世界はアルゴリズムでできている。 によると、パッチを当てれば日本語も通るようになるらしいけど…。標準では日本語文字列が使えないのって、やっぱり厳しい気がする。

#3 [emacs] emacsでVBScriptを編集したいのだけど

emacs には vbs用のモードってないのかな…?

_[emacs][vbscript][LotusNotes]VBScript(+Lotus Script)を emacs で使う為の設定 - ichirocのブログ が参考になりました。vbnet-mode てのがあるのか…。

_EmacsWiki: vbnet-mode.el にあるみたいなので、M-x install-elisp-from-emacswiki でインストール。

参考にしたページと同様、~/.emacs に以下を追加。
;; vbnet-mode

(require 'vbnet-mode)
(add-to-list 'auto-mode-alist '("\\.vbs$" . vbnet-mode)) ; .vbsに関連付け

;; auto-complete の対象にする
(add-to-list 'ac-modes 'vbnet-mode)

#4 [nitijyou] ちょっと大きめの地震

昼頃地震。ちと揺れが長く続いて、またあのクラスが来るんじゃないのかと不安になったり。

古文書には、貞観地震の数年後〜十数年後にまたデカい地震が来た、といった記述があるらしいから、また来るかもと思っておいたほうがいいんだろうな。というか、それぞれがどんな周期で来るのかわからんのだから、もうあのクラスは来ないと思い込んでたら完全にマズいのだろうけど。

原発再稼働派はそのへんどう思ってるんだろう。もちろん、来ること前提で対策しとけば随分違うはずなので、真(?)の再稼働派・推進派なら、対策強化と再稼働の両方を要求すべきなのだけど。というか停止しても対策は必要なんだけど。

2013/08/05(月) [n年前の日記]

#1 [dtm] 曲データ作成中

アプリに添付する曲データがどうも今一つな気がしてならないので、作り直し。

2013/08/06(火) [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、2013/08/05 19:40 〜 2013/08/06 00:35、2013/08/06 12:10〜16:15の間、自宅サーバ止めてました。申し訳ないです。

そろそろ大丈夫かなと思ったら、また鳴り始める始末…。しかも1日に2回も…。なんだかなあ…。メインPC上でもほとんど作業ができず。

#2 [prog] if (true) { }

_#俺が見たクソコード選手権 まとめ - Togetter

if(true){
 処理
}
見た瞬間背筋が震え上がった。
#俺が見たクソコード選手権 kimagure_bito 2013-08-06 15:34:07

if(false){
 printf("エラーです");
}
そうですねエラーですね
#俺が見たクソコード選手権 eofor0 2013-08-06 17:40:15
ああ、これ、自分はよくやる…。動作確認用・後でまた復活させて使うかもしれないところをコメントアウトする代わりに、こういう書き方しますわ…。何度も有効無効を切り替えて動かす状態になってきたら、 DEBUG = true; とか if DEBUG { } みたいに意味が分かる修正をするけど。 そんなこんなで、とりあえず今はこの書き方でちゃちゃっと、みたいな。どうせ動作確認できたらバッサリ消す部分だしー、と思っているけど、消すのを忘れちゃうという、実にありがちなダメダメ展開が…。

さて、本来はどういう感じに書いておくのがベストなのだろう…? *1 *2

こういう細かいところって、誰でも意見を言えるから、宗教戦争になりがちだなとも思えてきた。なんだっけ…自転車置き場がどうとかそういう…。
*1: 「コメントアウトしろ」派と、「バージョン管理ツール使え」派が居そうな気もするのだけど。何十行もコメントアウトされたソース見てなんとも思わんのか、てな気もするし。使い捨てになるかもと思ってるソースにバージョン管理ツールを一々使おうとするのも何だか病的じゃないか、とも。
*2: 元々の文脈では、「たぶんここに後で条件分岐が入るかも?」と思って if (true) { } を書いてる気がするんだよなあ…。実際に条件分岐が必要になった時、「ここに入れれば済む、と前任者は考えていたのか」で済むのと、「えーと、どこからどこまで処理を分ければいいんだ?」と解析させるのと、どっちがアレなんだろうという気もする。実は親切心でそういう書き方を残している可能性はないだろうか。あるいは、ソース書いた人の「思考ログ」を追いかけやすいソースとはどういうソースか、とか。そんなことを考えてしまったりもして。

2013/08/07(水) [n年前の日記]

#1 [windows] Expression Web 4 と Expression Design 4 を試用

Expression Web と Expression Design は、Microsoft がかつて販売していた Expression シリーズの製品。 _有償で販売されてたけど、2012年の年末に開発終了、フリーソフトとして公開 された。…フリーソフトと言っても、この場合は無料・タダで利用できるソフトという意味で、自由なソフトという意味ではないけれど。

Expression Web を試用。 :

Expression Web を使うと、htaを書く際に色分け表示してくれるらしいと知り、試しに触ってみたり。

セットアップファイルの入手は、 _Microsoft Expression から辿って、 _DLページ に。そのままだと英語版をDLしてしまうけど、ちゃんと日本語版も公開されてる。「Details」をクリックして開けば、下のほうに「Japanese」があるので、それをクリックしてDL。

インストールしようとしたら、前のバージョンをアンインストールしろと言われた。…自分、前に使ったことあったのかな? マズい。完全に忘れてる。

起動してみてビックリ。コレって、WYSIWYGのHTMLエディタじゃないか…。タグ挿入タイプじゃなかったんだ…。

WYSIWYGタイプでフリーのHTMLエディタって、ほとんど存在しないわけで。インストール時に、うっかりするとアドウェアだかスパイウェアだかも入れてしまう _BlueGriffon とかそのくらいで。そういう点では、この Expression Web、かなり貴重なソフトかもしれないなと。

調べてみたら、どうやら、Microsoft FrontPage の後継ソフトという位置づけだったらしい。なんだか納得。バリバリに、html作成ソフトじゃないスか。

少し触ってみたけれど、ホームページビルダーほど操作が簡単ではないなと思えてきたり。何か時々、操作面で引っ掛かる。このタグを置きたいんだけどどうするんだ、フツーはこう操作するもんだろうけどそういう流儀ではなさそうだなあ、みたいな。タグとタグの間にカーソルを持っていけないとか、そういうモヤモヤが。

また、作成済みのhtmlを読み込ませてみたら、表示が全く再現されておらず。センタリングがされてないとか、背景画像が表示されてないとか…。少し凝ったcss指定をしてると反映されないっぽい。フツーにhtmlタグがズラズラ並んでるだけなら全然問題ないんだけど。

色々引っ掛かる点はあるけれど、WYSIWYGでフリーのHTMLエディタって本当に少ないので、その点はありがたいなと。

でも、検索した感じでは、使ってる人はあまり居ないようで。もしかして、FrontPage 同様に、IEに特化したHTMLソースを吐き出す部分が結構残っているんだろうか…?

まあ、単に、blog、CMS、twitterの普及で、HTMLを作らなきゃいけない場面なんてほとんど無くなった、ということかもしれないか。仕事でやってる人なら、Dreamweaver使うだろうし。趣味でやる人なら、ホームページビルダー買ってるだろうし。

全然関係ないけど。 _2012/12/23 の時点でやっぱり試用してるな…。マズイ。完全に忘れてた。昔の自分、全然驚いてないじゃん。もうなんか色々とダメだ。それはともかく、当時の自分は、日本語版があることに気付いてなかったらしい。なんだかな。

Expression Design も試用。 :

フリーで使えるドローソフト。これまた、フリーでそこそこ使えるドローソフトって少ないわけで。そういう点では、やはり貴重。まあ、Inkscape とかありますけど。

SVGもエクスポートできることに気付いたり。HTML5が今後普及していくなら使い道がありそうな。

#2 [dtm] 曲データを再度弄ってたり

雷が鳴る直前まで作ってた曲データを弄り直し。

まあ、自分の作るソレは、曲と呼べるものじゃなくて、コードとアルペジオの羅列と繰り返しに過ぎないのだけど。ベース音すら入れ方が分からないし、メロディーなんて欠片も入ってないし。知識を持ってる人にしてみたらゴミに聴こえるだろうな、と思いつつ。

でも、それら知識のある人達が作る、曲と呼べるレベルのものは、えてして使用条件が厳しくて、そうそう迂闊に使うわけにもいかず。とりあえずアプリの後ろで何かソレっぽいのが鳴り続けてたらそれでいいですわ、という用途であれば、自分のコレも使えるデータじゃないのかなあ、使う際の制限を一切設けてないし、てな言い訳をしながら作っていたりするのでした。

#3 [zatta] 汚染水300トン流出の件

放射性物質には半減期があるし、海に流出したソレは海水で希釈されるはずだから、福島第一原発沖のソレは2年経てば下がっていってしかるべきなんですけど、それが2年経っても測定値が下がってない、事故当時からさっぱり変わってないぞ、これはおかしいぞ、と関係者が首を捻ってる、てな話を以前どこかで見かけた記憶があり。まあ、もしそれが本当だったら、今も流出し続けてるんじゃないの? じゃないとそうはならんでしょ? とフツーの思考力がある人なら容易に想像できるんじゃないかと思うわけなのですけど。

なので、件の300トンってのは、どのくらい流出してたらそういう状況になるのかな、と試算を出してみたらその量になった、という話だったりするのかねえ、と邪推しながらニュースを眺めてましたですよ。ああ、やっぱりそうなるんだね、と。いわゆる「知ってた」ってやつですよ。さて、この邪推は当たってるのか、外れてるのか。それについては後日分かるのだろうけど。

ちなみに、原発推進に尽力されました、故・正力松太郎氏は、その手のソレを「太平洋に流せばいい」と主張なされていたそうなので、原発推進派にとっては全然想定内というか、ある意味では予定通りなのだろうな、と想像しておりますが。

正力松太郎のその発言、どこで読んだのだったか…。検索したら見つかった。

_放射能汚染物質を海に流すことを想定して立地された東海発電所ー東日本大震災の歴史的位置 | 東京の「現在」から「歴史」=「過去」を読み解くーPast and Present
ところが私どももきまってから現地へ行きまして、私は専門家じゃありませんけれども、われわれども説明を聞いてしろうとながらもなるほどという感じを得たのでありまして、これは私しろうとの説明であるけれども、実は武山につきましてもずいぶん反対論があったのです。それはどういう点かというと、あそこで廃棄物を出す、あの出した廃棄物が逗子方面に流れて、鎌倉沿岸に流れて行きはせぬかと杞憂した人があったのであります。ところが東海村に至っては海岸の汚物が全部沖へ行ってしまうんです。全然その心配がない。そういう非常な有利な点がこれは東海村にあるのであります。

放射能汚染物質を海に流すことを想定して立地された東海発電所ー東日本大震災の歴史的位置 | 東京の「現在」から「歴史」=「過去」を読み解くーPast and Present より

「汚物が全部沖へ行ってしまうからOK」だそうです。そういう感覚で、日本の原発は建てられているわけですな。

ちなみに、外国語はさっぱりなのでどこで出したシミュレーションなのかは分かってないのですが、こんな感じで汚染は広がっていくだろうと予想してる動画がありまして。

_数十年後の放射能拡散予測地図 太平洋全部が高濃度放射能汚染 - YouTube
_Atomkatastrophe von Fukushima - Der Weg des verstrahlten Wassers - Wissen - Suddeutsche.de

実際にはコレより軽いのか、酷いのか、分からんのですけど。とりあえず、こういうのを眺めてると、「沖へ行ってしまうからOK」でいいんかいな? と思ってしまうわけですよ。まあ、さすがに現在の感覚では、そりゃいかんだろう、と思う人が多いから、困ってるんでしょうけど。

時々、使用済み核燃料なんて日本海溝に捨ててしまえばいい、と豪語する方を見かけるんですが、こういう事態を招くからやめといたほうがいいのではと思うんですけどどうなんでしょうか。ていうか、お寿司大好きな民族が魚を汚染するようなこと自ら進んでやってたらいかんのではないかと。さてはお前日本人じゃねえな? 寿司にチョコレート入れてウマーとか言ってる国の人じゃねえの? てなこともチラリと。まあ、 _条約で禁止されてる んですけど。海に捨てるのは。世界全てを敵に回しても、日本はソレをやるのか? フルボッコになること分かっててやるのか? という話になってくるわけで。

日本海に沈めたロシアの原子力潜水艦も、核燃料までは捨てていない、最高でも炉ぐらいしか捨ててない、と聞いた記憶もあるのだけど、検索してみたら以下のページが。実際のところはどうだったのか、読んでみてもよく分からねえや…。

_ロシア連邦による隣接海への放射性廃棄物の海洋投棄 (14-06-01-16) - ATOMICA -

信憑性は今一つ怪しいけれど、Wikipediaの記事が充実していて、なかなかイイ感じ。眺めてるとクラクラしてくる。

_海洋投入 - Wikipedia

まあ、ニュースを見ながら、そのへんの話をもや〜んと思い出してた、ということをメモ。

2013/08/08(木) [n年前の日記]

#1 [prog] Excel VBA勉強中

某サイトの更新作業を、今のところ自分がエディタ+手打ちでやってるのだけど。できれば先方の方がサクッと作業できちゃうほうがいいのだろうなと思っていて。なので、もう結構長い間、時々思い出したように、CMS(コンテンツマネージメントシステム)だの、WYSIWYGタイプのHTMLエディタを探していたり。

しかし…。 イイ感じの選択肢が無いなと悩み続けているわけで。

しかし昨晩、突然閃いた。先方ではチラシすらExcelで作ってしまうぐらいに、日々、何でもかんでもExcelで作業している。だったら…。htmlの更新作業も、Excelでやってしまえばいいんじゃないか? それなら、操作方法を忘れてしまう、なんてことはないだろう。

幸い、更新すべき部分は大体決まってる。 たったそれだけの作業なわけで。 なんだかできそうな気がしてきたり。

というわけで、Excel VBA を勉強中。
Sub DumpTest()
    ' セルの内容をポップアップ表示
    Dim i As Integer
    Dim j As Integer
    Dim s As String
    i = 2
    s = Cells(i, 1).Value
    Do Until s = ""
        For j = 2 To 3
            s = s & "," & Cells(i, j).Value
        Next j
        MsgBox s
        i = i + 1
        s = Cells(i, 1).Value
    Loop
End Sub
とりあえず、Cells(1,1).Value でセル内容が読み取れることは分かった。

上手く行きそうだなと思ったけど、甘かった。ファイルを保存し直して、Excelを再起動してまた読んだら、「マクロが入ってるぞ。怪しいファイルだぞ。マクロは有効にできないぞ」と言われてしまって。こんな状態になるのでは、相手先に使ってもらうわけにはいかないな…。いい考えだと思ったんだけどな…。

しかし、Excel で元データを打ってもらって、何かしらのツールでhtmlに変換する、という方向性はイケそうな気がする。Rubyで .xls を読んで html に変換するツールを書いてみるか…。

#2 [ruby] WIN32OLEについて調べてた

RUby + WIN32OLE について検索したら、WIN32OLE が実に強力なモジュールであることがようやく分かってきて。

例えば、 _Rubyist Magazine - Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ の最下部を眺めれば/リンクを辿っていけば、IE、Excel、Adobe Illustrator まで Ruby から操作できますよと説明されていたり。

これほど強力なのであれば、どう考えても、Ruby から WSH を呼び出して云々とかやるより、WIN32OLE を使ってどうにかするほうが正解だよなと。それはつまり、WIN32OLE を殺してしまうモジュールがあったとしたら、ソイツを真っ先に捨てたほうが幸せになれる、ということでもあり。

てなわけで、DXRuby 1.5.1dev を捨てることにします。WIN32OLE を殺す時点で論外。それはつまり、WSH を呼んでどうにかするやり方も捨てるということで。そこは WIN32OLE を使うべき。なんとかして使えるようにするべき。

まあ、DXRuby 1.5.0dev、1.5.2devは、WIN32OLEと共存できるので、そっちを使えば済む話で。ただ、1.5.2dev は、マウスクリックが効かなくなる不具合があるから、正式リリース版の 1.4.0、もしくは 1.5.0dev、あるいは、1.5.3dev が出てきたらそちらを使うのが妥当だろうと思うわけですけど。

#3 [prog] SourceForgeにBTSってついてないのかな

BTS = バグトラッキングシステム。バグの報告、修正までの過程を管理しやすくるためのツール。

DXRuby開発版で見つけた不具合を公式掲示板で報告してしまったわけだけど、それは正しくないんじゃないか、本来はその手のソレで報告すべきなんじゃないか、と思ったりしたわけで。SourceForge 上で BTS が用意されてるなら、そっちを使って報告すべきなのかなあ、と。でも、SourceForgeにBTSは用意されているのだろうか?

_SourceForge.jpではじめるオープンソースプロジェクト:第5回 プロジェクトの初期タスクを片付けよう (3/3) - ITmedia エンタープライズ によると、SourceForge にも BTS はついている、らしい。記事を読んでみても何が何だか分からないけれど。

試しに、 _DXRuby プロジェクト日本語トップページ - SourceForge.JP を開いてみたところ、「バグを報告する」というリンクがちゃんと存在してた。しまった。ここから報告すべきだったのか。と思ったけれど…。

リンクをクリックしてみると、「新規チケットの登録」というページが開く。

チケットって何だ? もうこの時点で、一見さんお断り状態。

_TicketUser - SourceForge.JP ヘルプ - SourceForge.JPドキュメント管理 - SourceForge.JP に説明があった。
チケットってなに?

オープンソースプロジェクトに参加している/オープンソースプロジェクトの成果を 利用していると...

こんなバグがありました
こんなことをしないといけないね(例えば、次のリリースまでに)
こんな機能がほしい
ここの機能がよくわからないんだけど、教えて
こんなパッチはどうかな?
ここをこういう風に仕様変更しようと思うけど、どうだろう?

といった「誰かがなにかしないといけない/誰かがなにかをすること」がたくさん 発生すると思います。

チケットシステムでは、そういった「誰かがなにかをしないといけないこと/誰かがなにかを すること」を「チケット」という形で登録して、その処置の過程を記録/追跡したり、 その情報を検索できるようにするシステムです。

TicketUser - SourceForge.JP ヘルプ - SourceForge.JPドキュメント管理 - SourceForge.JP より

要するに、チケットとは、投稿の単位っぽい。「投稿」「記事」「カキコ」「親スレッド」てなあたりを、SourceForge 上では「チケット」と呼んでいる模様。「新規チケットの登録」てのは、「記事を投稿」みたいなものなんだろう。たぶん。

「新規チケットの登録」画面には、赤い文字で以下のメッセージが表示されている。
「ログインしていません。ログインしていない状態でのチケット投稿では、報告者へのチケット状態変更のメールでの通知が行われません。変更を逐次追いたい場合は、ログインするか、作成されたチケットのRSSを取得してください。」

そうか。ログインしなきゃ、利用できないのか…。

と、思ってしまったのだけど。でも、もしかしたら、そうではないのかも。アカウントを取って、ログインした状態で投稿することもできるし、アカウントを取らず、ログインしてない状態で投稿することもできるのではあるまいか。試してないから誤解してるかもしれんけど。 でも、この想像が当たってたとしても。いきなり「ログインしていません」と言われたら、フツーは「ああ、ログインしないと使えないシステムなんだ…。じゃあ、俺は利用できないや。アカウント持ってないもん」と思いそう。やっぱり、一見さんお断り状態のような気がする。

自分ですら、「チケット? ログイン? アカウント?」と頭の中が「???」になったのだから、フツーのユーザさんは、このBTSでバグ報告なんかできないだろうなと、うっすら思えてきたり。英語圏の人や、オープンソースプロジェクトに親しんでる人なら、すんなり使えるのかもしれない。でも、日本人には、この各用語はしっくりこないだろう…。

喩えるなら…。普段アニメなんか見ない人は、ガンダム本編内で「モビルスーツ」「モビルスーツ」と呼んでるだけで「?」になるらしい。「ロボット」と言ってくれれば分かるのに、みたいな。SourceForge の「チケット」にも、それと同じ匂いを感じる。

逆に(?)、 2chとか、ニコニコ動画とか、そのあたり、よくできてるよなあ、練ってあるなあ、となんだか感心してしまったり。小学生ですら書き込みできるもんな…。投稿のハードルを低くすることに、かなり神経を使ってる印象。そりゃ人が集まるわな。

閑話休題。

今まで投稿された記事は ―― バグ報告の一覧は、どうやったら見れるのだろう?

上のほうに「チケット」というタブがあることに気付いた。「チケット一覧」「チケットの種類一覧」というのが選べるようで。そこを選べば一覧で見れるらしい。

でも、そもそも、「チケットって何?」状態で、そこにバグ報告の一覧があると分かるものだろうか…? となると、報告された各記事を眺めることすら、知らない人には難しいのでは、という気がしてきた。

ここまで調べてみて、なんとなくおおよその使い方は分かりそうな気配はしてきたけれど。しかしコレ、仮に自分が使えても、他の人はどの程度使えるのかなと不安になってきたり。例えば小中学生が、○○を使うとゲームが作れるらしいと知って触り始めたとして、バグっぽい動作を見つけて報告しようとした際に、このBTSを使えるかといえば、まず使えないだろうという気がする。どう考えても、公式掲示板のほうに書くよなと。掲示板なら、2ch、ニコニコ動画、mixi、そのあたりと同じ感覚で使えるし。既にバグ報告がされてるかどうか調べる際も、公式掲示板を眺めるだろう。SourceForge のソレは、バグ報告の一覧を眺める方法すら分からないのだから。

ということで、SourceForge に BTS があるならそっちを使うべきかなと思っていたけど、公式掲示板に報告したほうがいいのかもなあ、と思えてきた。

これは、DXRuby等に限定した話じゃなくて、SourceForgeというサービスに対する印象論なわけだけど。報告内容を、別の誰かが眺めることすら難しいのは、ちと致命的な気がする。それでは、public な場所に投稿する意味がない。誰もが容易に閲覧できる場所でバグ報告するから共有知になるのであって、見ることがちと難しい場所で報告してみても、それは共有知になりづらい。共有知にならないなら、いっそ作者様に直接メールを送ってクローズドで話を進めたほうがマシなのかもしれない。

オープンソース開発にどっぷりハマってる人にとっては、SourceForge の BTS は便利だろうし、どのページもpublicに見えているだろうと想像するのだけど。でも、そのプログラムにちょっと興味が湧いて触ってみた程度の人が、何か妙な動作を見つけて報告しようとした時に、SourceForge のソレは役に立たない。近づくなオーラを発しすぎている。

喩えるなら、SourceForge は京都の高級料亭なのだろうと。一見さんはお断りだけど、お得意様にとっては心地よいサービスを提供してくれる、そんな場所ではあるまいか。わからんけど。

では、そのへん改善したほうがいいのか? と問われたら、それも判断に悩みそう。 改善したほうがいいのかどうか、それすら外野にはよくわからんです。

とりあえず、「コレ、フツーはバグ報告すら無理ッス」「使い方分からんです」「別に掲示板があるならそっち使わせてほしいかも…」と思ってしまいました。とメモ。

#4 [zatta][neta] 蚊取り線香はヤバイ

昨晩部屋の中に蚊が出現したので、仕方なく蚊取り線香をつけたのですけど。予想通り、酷い悪夢を見ました。あまりに悲しい内容で目が覚めてしまって、マジ泣きしそうに。

蚊取り線香は目にもクルけど、何より神経にクルんじゃないかなあ、と勝手に想像しております。蚊の神経をおかしくする薬品だもの、生物である人間にも、微量だろうけどダメージ与えてしかるべきだよなと。少なくとも自分の体感では、蚊取り線香を使うと百発百中で悪夢を見るし。 *1

蚊取り線香程度で影響があるなら、新築のマンション等に使われてる建材から揮発するアレコレも、地味に効いてたりする可能性がありそうだなと思えてきたり。

建材からの影響なんてあるわけないだろ、と笑う人が居るかもしれないけど。 _シックハウス症候群_化学物質過敏症 という話もあるし。また、 _ナポレオンのヒ素中毒死亡説 の中には、当時の壁紙にはヒ素が使われていて云々、という話もあるし。現代では気付いてないけど、後世になって「これは人間にとって毒物じゃねえか。こんなもんを部屋の○○に使ってたんか」と解明される可能性はあるかもしれないよなと。

実は鬱病の原因もこのへんが絡んでたりしないかと思ったりもするんですけど。例えば…。 てなデータが出てきたら、これはもしかして、ということになるんだろうなと。まあ、調べるのが大変だろうから誰も調べないだろうし、そもそも鬱病ではない思われる人をどうやって判別するんだろうという気もするので、調べようにも調べられないのかも、と思ったりもしますが。

なんかこのトンデモ仮説、前にも書いたような気がする…。

自分、基本的に、鬱病等の発生って、実はハードウェア面の影響も無視できないんじゃないだろうかと思ってて。ストレスが原因だ、で世間的には片づけてるけど、実は意外なところにも原因があったりしないのかなと。まあ、ハードウェア面のソレもストレスと呼べるわけだから、ストレスが原因とするのは正しいのでしょうけど。

ストレスが、という決めつけ方(?)は、下手すると精神論に走りやすい。だけど、これがもし、ハードウェア面にも原因があったと分かれば、圧倒的に対策がしやすいわけで。

真冬の屋外プールで泳いでる人が風邪を引いた時に、「お前のモノの考え方に原因があるから風邪を引くのだ」と決めつけるようなことをしてないだろうかと。そもそも真冬のプールで泳がなければ風邪を引く確率下がるよなと。労働時間を減らす、休暇を取らせる等は、真冬のプールから引っ張り上げてやるようなものだけど、どういう部屋に住んでるか、どういう部屋の使い方をしてるか、どういう薬品を日常的に使っているか、そのあたりも真冬のプールに相当していたりはしないのかなあ、と。

極端な話、蚊取り線香が原因で鬱病になってた、と分かったら、今まで俺達何やってたんでしょうか、という話になりそうだなと。そんな馬鹿な話あるわけないと笑う人が居るかもしれないけれど。例えば昔の人類は、 _化粧品 で鉛中毒や水銀中毒になってましたから。当時はどうしてそうなるのか分かってなかったけど、日頃の生活の中で頻繁に使うソレが実は物理的にダメージを与えてた、という前例はちょこちょこあるわけで。昔の人も使ってたんだから安全なはずだ、という予想はケースバイケースで成立したりしなかったりするわけで。…まあ、今の蚊取り線香は除虫菊を使ってないので、昔の人が使ってない道具になってますけど。

このへん、ただの願望なんでしょうな。分かりやすいところに原因があってほしい、ハッキリしてる対策方法が発見されたら嬉しいと。蚊取り線香を使わなかったり、新築マンションを避けるだけで、鬱病になる確率を下げられたら、そりゃ随分楽になるだろうな、てな夢想に過ぎないのかも。

でも、実際に関係あったとしたら、皆でズッコケるだろうな。俺達何やってたのトホホ、みたいな雰囲気に。
*1: や、蚊取り線香を使うと悪夢を見るのだ、と自己暗示をかけてる可能性もあるのだけど。でも、元々は、最近悪夢ばかり見るな、なんでだろうな、と首を捻ってたら、蚊取り線香を使ったか使わなかったかで結果が違うことに気がついた、という経緯があるわけで。

2013/08/09(金) [n年前の日記]

#1 [ruby] spreadsheet を使うとOcraでexe化できず

Ruby + spreadsheet を使って、Excelファイル中のセル内容を読んで html にする、というスクリプトを書いていたのだけど。.rb を実行すると動いてくれるのに、Ocra で exe化するとエラーが出て動作しない、という状態になってしまって。

exeを実行すると、以下のようなエラーが出てしまう。
C:\home\prg\excel_vba>htmlconv.exe -x kowa_plan_source.xls -i html\index_template.html -o html\index.html
C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/reader.rb:288:in `read_font': undefined method `read_string' for #<Spreadsheet::Excel::Reader:0x28f6260> (NoMethodError)
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/reader.rb:824:in `read_workbook'
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/reader.rb:122:in `read'
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/workbook.rb:32:in `open'
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet.rb:63:in `open'
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet.rb:69:in `open'
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/src/htmlconv.rb:64:in `main_job'
        from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/src/htmlconv.rb:227:in `<main>'

ググってみたところ、 _Twitter / iMAKOPi: ocra+spreadsheetで実行時に「read_str ... という情報が。
ocra+spreadsheetで実行時に「read_stringが無い」というエラーが出る場合、lib/spreadsheet/excel/reader.rbにbiff8とbiff5のrequireを追加しておくと良い。

Twitter / iMAKOPi: ocra+spreadsheetで実行時に「read_str ... より


試しに、Rubyインストールフォルダ\lib\ruby\gems\1.9.1\gems\spreadsheet-0.8.8\lib\spreadsheet\excel\reader.rb を開いて、require が列挙されてる最後のあたりに、以下を追加してみた。
require_relative 'reader/biff8'
require_relative 'reader/biff5'

Ocra で exe化してみたら、今度は上手く行った。ありがたや。しかし、なんだろうなコレ。さっぱり分からないけど、動いたからいいか…。

#2 [anime][neta] 実写で二頭身/SD化カットってできないかな

漫画やアニメでたまに見られる、あの表現。フツーの頭身のキャラが、次のコマ/カットで、突然、二頭身キャラ/SDキャラになって、また次のコマ/カットで元に戻ってるアレ。

アレを、実写でできないものかなあ、と。

いやいやいや。無理無理無理。実写でアレは無理でしょー。アレは、漫画やアニメだからこそ実現可能な見せ方だろう…。

と思ったのだけど。先日、NHKのニュース映像を見ていたら、全国の各自治体のマスコットキャラクターが一堂に会した映像が流れてて。ソレを見ていて、ムムッと。

実写でも、できるんじゃないか? そのカットだけ着ぐるみにすればよくね? みたいな。

もちろん、わざわざそのカット専用に着ぐるみ作るのかよアホかどんだけ金かかるんだよ、と怒られそうだから、やれるとしても3DCGモデルがポンと出てくるとかそんな感じが関の山かなあ、という気もするのだけど。

考えてみたら、戦隊シリーズや平成ライダーでも、二頭身化/SD化を、たまにやってる気がしてきたり。どうやって実現しているかと言えば…そこはご想像にお任せします。どうやったら実現できそうか、それぞれが想像・予想してみてほしい気もしたり。

特撮ヒーロー番組の場合、変身前後のキャラが色分けされていること、普段の服装が個性的であること、といったあたりが効いていて、SD化等が実現しやすいのかな、という気もしてきたり。とりあえず赤で塗っとけば赤の人、青で塗っとけば青の人と分かるし。これは、敵と乱戦になったり、派手なアクションをしている時でも、色や服装でどのキャラなのか分かりやすいという効果が得られるのだろうなと。先人達は、上手いフォーマットを考え出したものだよなあ、と感心を。まあ、もしかするとこのへん、歌舞伎云々も関係してるのかもしれないけど。

例えばコレが、キムタクあたりが登場しそうなフツーのドラマで、二等身化・SD化カットが実現できるかと言えば、ちょっと難しい気がする。その手のカットに切り替わった際、どれがキムタクなのか瞬間的に分からなくなるのではあるまいか。寅さんのような服装ならともかく…。

いや。それは逆かもしれない。本来、二等身化・SD化は、キャラの見分けがよりしやすくなる見せ方のはず。だって、体の半分が顔になるわけだから。視聴者が顔でキャラを見分けているのであれば、これほど見分けが容易になる見せ方はないような気もしてきたり。

てなわけで、実写でそういう見せ方は無理、と思ってたけど、実は意外と、やろうと思えばできるんじゃないのか、ていうかやってる作品が既にあちこちにあるような気がしてきたぞ、てな気分になってきました。とメモ。

そもそも二頭身化・SD化カットってどうして発生したんだろう。 :

あの手の見せ方は、アニメや実写等、映像業界から発生したわけではないだろうと思うわけですが。どう考えても漫画の世界で発生した見せ方だよなと。

どうしてそんな見せ方が発生したかと言えば…。おそらく、1ページをコマで区切るという作業が入ってくるからだろうと。

漫画には、大きいコマもあれば、小さいコマもあるわけだけど。大きいコマと同じ描画密度で、小さいコマを描くのは厳しいわけで。しかし、この小さなスペースを使って、このキャラ達がこういう会話をしているのだと見せねばならない…という制限を突き付けられた際に、顔だけでっかく描いて表情だけはちゃんと見せるけど、体は描くスペースが無いから小さく描いて済ませちゃう、てな描き方・見せ方が自然発生したんじゃないかと。

また、あの見せ方の始祖は、たぶん、手塚治虫のヒョウタンツギあたりじゃないか、とも思えたりもして。

手塚作品においては、いきなりキャラが、ヒョウタンツギになったりするわけだけど。自分が子供の頃、アレを読んでいて、なんでいきなりキャラが変わるんだろうと若干戸惑った記憶がありまして。だけどそのうち慣れてきちゃう。キャラの見た目が大きく「飛躍」するのが漫画では当たり前のことなんだ、という認識になってくる。ヒョウタンツギに鍛えられてしまったとでもいうか。

そういう感覚になってしまえば、フツーの等身のキャラが、突然二頭身/SD化するのも平気になる。そこには誰が描かれているのか、何をしているのか、どんな表情をしているのか、それさえ伝わってくればOK、みたいな。…そもそも漫画ってそういうもんですわな。全てをどんどん記号化していく表現方法だもの。それを考えると、不自然な見せ方ってわけではないよな。

余談。手塚治虫のヒョウタンツギも、オリジナルがあるんじゃないかという気がしていて。海外アニメのメタモルフォーゼ等に元ネタがあるのか、手塚治虫以前の漫画家さんが好んで使っていた見せ方なのか、そこは分からんのだけど。ヒョウタンツギも、何かをアレンジして、そういう形になっていったんじゃないのかと。デザインの元ネタは _手塚治虫の妹さん のソレだと分かってるらしいけど。そっちじゃなくて、「使い方」のオリジナルが気になるというか。まさか鳥獣戯画まで遡ったりはしないだろうとは思うけど。

映像作品でも使える見せ方なのだろうか。 :

アニメは、漫画のそういう見せ方を取り込むことで、アニメでありながらより強い漫画らしさを醸し出してみたり、二等身化/SD化カットという視覚情報が整理されたカットを積極的に挿入することで映像のテンポの良さだのを増していったのだろうなと。

では、実写では使えるのだろうか。使える場面もあるのだろうなと思う。そういうカットを挿入することで、例えば、漫画らしいコミカルさを視聴者に感じさせたりもできそうな。パズルのピースのように、その見せ方がパシッとハマる場面がちょこちょこありそうな予感も。

ただ、アニメにしても実写にしても、フレームの大きさは一定なので。漫画の世界では存在した、「小さいコマでどうにか表現するためにはこういう見せ方を導入しないと」てな切羽詰った理由がないわけだから、何が何でもこの見せ方を使わないと、てな状況では全然なくて。使わなくても、フツーに作品は作れてしまう。

それに、映像として飛躍が入ってくる点が、不利に働く可能性もありそうで。

例えば、冒頭に書いた、「着ぐるみでできるんじゃね?」というソレを実際にやったら…。フツーの役者さんが、次のカットではいきなり着ぐるみになって、また次のカットではフツーの役者さんに戻ってたりする、そんな映像になりそうだなと。シュールというか。カオスというか。見ている人は「なんじゃこりゃ」とクラクラしそう。

ただ、そういった「映像の飛躍」って、子供にとっては面白いものに見えるんじゃないか、という気もして。

赤ん坊の前で、「いないいないバァ」をやると、赤ん坊は喜ぶわけだけど。どうして喜ぶのか。そこに顔が無かった状態から、顔が出現するという、視覚的な飛躍 ―― 刺激のある映像を受容したことで、赤ん坊は喜んでいるわけで。

戦隊シリーズが次から次へとカットを切り替えていくのは何故か。放送時間が短いという理由もあるだろうけど、長回しを見せてたら子供が飽きるから、という理由があるんじゃないかと。

歳を取ってくると、刺激的な映像を受け取ることがツラくなってくるけれど。例えば、寅さんや水戸黄門が突然SD化したら、お年寄りが「飛躍」についてこれないので、そういう見せ方はできないだろうけど…。

でも、若者向け実写作品なら、刺激・飛躍が多いほうがウケるのだから、アニメや漫画でやってるそういう見せ方も活用することができるのかもしれないなあ、てなことを思ったりもしますです。

まあ、どうやってソレ実現するの、という課題はありそうだけど。…時々やってみせてる、特撮ヒーロー番組のスタッフさん達って、アイデアマンが多いよなあ。尊敬します。

#3 [zatta] 緊急地震速報は地震予知じゃないよなあ

/.J を眺めてたら、昨日?の緊急地震速報の誤報の件が投稿されていて。その中で、「地震予知は叶わぬ夢か」みたいな一文が。

緊急地震速報って、地震が起きた時に、それをどれだけ早く周辺地域に知らせるか、というシステムだから、全然地震予知じゃねえと思うんですけど…。

と思ったら、件の記事でもやっぱりそういうツッコミがされててホッとしたり。ですよねー。アレは地震予知じゃないよね。ていうかそもそも「速報」と呼ばれてるシステムだし。

でも、一般人は、そのへん区別ついてないんだろうかと、なんだか不安になってきたりもして。

2013/08/10() [n年前の日記]

#1 [ruby] wxRubyをインストール

昨日作成したスクリプトを、Ruby/Tk でGUI化してたのだけど。どうも起動が遅いなと。wxRuby ならもうちょっと速く…いや、どうだろう…。試してみるかと。

Windows7 x64 + Ruby 1.9.3 の環境に wxruby をインストール。 _mas-lab.blog: wxRubyをWindowsで動かす を参考に、 _RubyForge: wxRuby: ファイルリスト から、wxruby-ruby19-2.0.1-x86-mingw32.gem をDLして、
gem install wxruby-ruby19-2.0.1-x86-mingw32.gem
を実行。

xrcise がエラーを出す。 :

wx_sugar なるものをインストールすると、xrcise という、XRC から .rb に変換してくれるツールが使えるようになるらしく。試しにインストール。
gem install wx_sugar
Ruby インストールフォルダ\bin\ 以下に、xrcise.bat というファイルが出来ていた。

wxGlade 0.6.5 で作成した .xrc を渡してみたところ、エラー発生。
> xrcise -a App1 -o guitest.rb guilayout.xrc

C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/lib/wx_sugar/xrc/outputter.rb:46:in `clean_id_attr_readers': undefined method `each' for #<String:0x2931678> (NoMethodError)
        from (erb):16:in `output'
        from C:/ruby193mingw/lib/ruby/1.9.1/erb.rb:838:in `eval'
        from C:/ruby193mingw/lib/ruby/1.9.1/erb.rb:838:in `result'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/lib/wx_sugar/xrc/outputter.rb:19:in `output'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:126:in `block (2 levels) in <top (required)>'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:125:in `each'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:125:in `block in <top (required)>'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:124:in `open'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:124:in `<top (required)>'
        from C:/ruby193mingw/bin/xrcise:23:in `load'
        from C:/ruby193mingw/bin/xrcise:23:in `<main>'

_xrcise not working - Ruby Forum が関係あるっぽい。 _Ruby 1.9ではStringクラスのeachは廃止された のでエラーが出ているらしい。「each_lineメソッドかlinesメソッドを使え」とのことなので…。

Rubyインストールフォルダ\lib\ruby\gems\1.9.1\gems\wx_sugar-0.1.22\lib\wx_sugar\xrc\outputter.rb を修正。str.each(',') を str.each_line(',') に書き換える。これでエラーは出なくなった。

出力された .rb を実行したらウインドウが開くはず。

若干違う .rb を吐き出してみる。
xrcise -o guilayout.rb guilayout.xrc

吐き出した .rb を require して、class を継承して表示するスクリプトを書いてみる。
#!ruby -Ku
#
# wxRuby + XRC を使ったGUI表示のテスト

require 'rubygems'
require 'wx'
require_relative 'guilayout'
     
class HtmlConvGui < MyFrame
  def initialize(parent = nil)
    super()

    # ボタンが押された時の処理を設定
    evt_button(button_4.get_id()) { |event|
      on_buttonClick(event)
    }
  end

  # ボタンが押された時の処理
  def on_buttonClick(event)
    s = "こんにちはこんにちは"
    Wx::message_box(s, '挨拶', Wx::OK | Wx::ICON_INFORMATION)
  end
end

class App < Wx::App
  def on_init
    f =  HtmlConvGui.new
    f.show
  end
end

App.new.main_loop

xrcise は .xrc を .rb に変換してくれる、と思ってたけど。出力した .rb を覗いたら、.xrc を読み込んでレイアウトをしているように見えた。どうやら、 .xrc を読み込んで表示しやすくするための .rb を自動生成するよ、みたいなツールだったらしい…。

ということは、Ocra で exe化する際に、.xrc も同梱しておかないと、exe実行時に「.xrcが見当たらねえ」と文句を言われてしまいそうな予感。

#2 [prog] 結局 Excel VBA で書き直した

Excelファイル修正後に、Ruby + wxRuby で作ったGUIアプリを別途起動してもらって、.xls から .html に変換を、と考えていたけど。やっぱり、手順を忘れられてしまいそうな、そんな気がしてならないわけで。

Excel VBA で全部処理したほうが間違いが無いんじゃないか、そういう形なら作業手順を忘れられてしまう可能性も随分減るだろう、と思えてきたので、「ええい、やっぱりそっちにしよう」てなノリで書き直し。

しかし、該当Excelファイルを開くたびに、「マクロが入ってるぞ」「ウイルスかもしれねえぞ」「不安だから無効にしとくわ」と言われてしまう問題はあるのだけど。まあ、ソレについては、いつも Excel を使って仕事をしてる方々ならそういう場面の対処方法も把握してるんじゃないか、と淡い期待を。

あらかじめ、Rubyスクリプトで、こういう処理をしていけば目的は果たせると実証できてるので、書き直し作業は多少楽だった。Rubyスクリプトをチラ見しながら、Excel VBA の命令や関数をググって把握して、置き換えていくだけ。プログラムのロジックについて悩みながら書かなくて済むのは楽。

設定ファイルの内容もExcelファイルのセル上に書いておくことにしたので、Excelファイルとhtmlテンプレートファイルの2ファイルだけ渡せば済みそうな予感。Ruby で書いてた時は、.yaml や .xrc 等、ファイル数がそこそこあったので、そこは改善された気がする。

残る問題は、FTP。FFFTP にコマンドラインオプションを指定してミラーリングアップロードをすればいいだろうと思ってるけど…。FFFTPの設定は、あちらに行った際にやらないといけないし。

ExcelファイルからFFFTPを起動できるようにしておいたほうがいいのだろうか? パスやコマンドラインオプションは、Excelファイルのセル上に書いておけば良さそうだけど…。

#3 [prog] TortoiseSVN をアップデート

今まで、TortoiseSVN 1.7.x を使ってたけど、1.8.1 があるようなので、アップデートしておこうかなと。

上書きインストールは問題が出そうだなと不安になったので、Windows7 x64上でアンインストールしてから、1.8.1 x64 版をインストール。日本語化ファイルもインストール。

今まで管理してたフォルダ上で、アイコンがオーバーレイされなくなった。インストーラをまた起動して、修復インストール(Repair?)をしてみたものの、変化なし。

1.8 用に何かを更新しないといけなかったらしい。フォルダを右クリックしてメニューを出して、それをしたところ、今まで通りアイコンがオーバーレイされた状態になった。でも、1.8より前のバージョンを使っている環境と、不整合が出そうな気もする。

いっそ Git で管理することにしちゃおうか、TortoiseGit も入れてある環境だし。

と思って調べてみたのだけど。Subversion から Git にすることはできそうなものの、やり方がよく分からず。よく紹介されてる事例では、サーバは今まで通り Subversion だけどローカルでは Git を使う、てなパターンが多いみたいだけど。ローカルの file:/// に Subversion のリポジトリがあるような状態では、何をどうすればいいんだろう。

面倒臭いので、今まで通り Subversion、TortoiseSVN で管理することにするか…。バージョン管理ツールを使ってるだけでも、状況は随分違うはずだし。

#4 [zatta] 3DTVって結局普及しなかったな

作業しながらBGVとしてTV映像を流してたら、3D放送が始まって。この3D映像見るの何度目だろう、ずっとハワイの映像ばかり流れてるよなあ、同じネタばかり流れるってことは、結局は普及しなかったということかなあ、と思ってしまったのだけど。

放送規格もマズかったのかもな、と思えてきたりもして。

白黒放送からカラー放送に移行した頃は、白黒映像用の信号に、色信号を追加する形で放送してたわけだけど。それなら、白黒TVしか持ってない御家庭でも、白黒のままだけど一応映像が見れたし、もちろんカラーTVをお持ちの御家庭はカラーで見ることができたわけで。

3D放送も、そういう規格にしておくべきだったよなあ、と。3DTVをお持ちではない御家庭でも一応映像は見れますが、3DTVをお持ちでしたら立体で見れますよ、みたいな規格をどうにか捻り出すべきだった。「これから3D番組が流れます」なんてテロップ出してる状況ではあかんよなと。…サイドバイサイド映像では、「3DTVをお持ちではない御家庭でも一応見れますよ」と嘯くのは、かなり無理があるし。

白黒・カラー放送と違って、2D映像と3D映像が同じ放送時間内で共存できないのだから、どちらかに絞った放送をするしかなく。当然、3DTVをお持ちではない御家庭が多いのだから、数が多いほうに合わせましょう、今までどおり2D映像ばかり流しましょう、という話になり、たまーに3D放送を流す時もあるといえばあるかなあ、みたいな状態になってしまった。

滅多に3D放送・3D映像が流れないから、3DTVを持っていても、状況的にちっとも面白くない。面白くないのだから、3DTVイイよー、と周囲に 自慢 オススメすることもできない。「3DTVを買ったほうがいいかって? …3D放送ってほとんどやってないから、買わなくてもいいんじゃないかな」という答えになってしまう。

これがまた、左右に画を配置するサイドバイサイド映像と、偏光式の3DTVは相性が悪くて。偏光式は縦の解像度が半分になってしまうし、サイドバイサイド映像は横の解像度が半分になる。縦も横も解像度が半分になるわけだから、デジタル放送移行時の売りの一つだった、「デジタル放送は高解像度」という売りも、3D放送時には消滅してしまう。通常時の1/4の解像度ですよ。そりゃ魅力ないわ。どうして、トップアンドボトムにしておかなかった…。いや、待て。トップアンドボトムもダメだわ。その方式も、フツーの2DTVではまともな映像として見れないのだから、やっぱりダメだよな。

通常の2D映像に視差情報のみを付加してパッキングする方式もどこかで開発された、というニュースを見たような記憶もあるけど。本当はそういう規格が ―― 「2Dと3Dを同時に流せる規格」が出来るまで、待つべきだったのかもしれないよなと。そういう規格であれば、TVを買い替えたらほとんどの番組が途端に3Dで見れる、てな状況も実現できたのかもしれない。そうなれば、3DTVイイよー、買わない理由がないよー、と言えたんだろうけど。

ここまで下火になってしまったら、もう3DTVは普及しないだろうなあ…。

このあたり、日本メーカは、売る側にとってのみ都合のいい予想ばかりをし過ぎてた印象も。白黒放送からカラー放送に移行した際の成功事例を知っていながら何故ソレを活かせなかった、てな残念ぶりも感じてしまって、なんというか。

まあ、アナログと違って、デジタル的な規格は後から機能追加できないという事情もありそうだし、仕方ないのかなと思ったりもするのですけど。

そもそもメガネかけて見る時点でダメだろう、と言われそうでもあるなあ…。自分も、3D放送見るときはダブルメガネ状態ですが、意外とコレ、地味にツライ。アニメキャラのメガネ女子とか好きなほうだけど、別に自分、メガネをかける行為自体が趣味ってわけでもないし…。

ハーフHDTVも残念。 :

3DTVに限らず、フルHDTVとハーフHDTVの件も残念で。

「放送波にはもっと綺麗な映像が乗ってるんですけど、安物ハーフHDTVじゃ、本当の映像が見れないんですよねえ。あーあ。もっと綺麗な映像が電波で送られてきてるんだけどなー(チラッ」と客を煽るべき場面で、「○○インチ以下ならハーフHDで十分ですよ?」とメーカ自身が言い出した時にはズッコケましたけど。なんで綺麗に足並み揃えてハーフHDのラインナップばかり揃えてんだか…。

「○○くんの家のTVはカラーなのに、ウチはまだ白黒…。電波ではカラー放送が流れてるのに…。やっぱりカラーTVがほしいな…」てな感覚に近い購買欲求を生み出せるチャンスってそうそう無いわけですけど。デジタル放送移行時はそういう煽りができるチャンスだったのに、自分達でブレーキ踏んでるんだもの。そりゃダメだよ。「TVなんてもんは映像さえ見れればそれでOK」みたいなこと自分達から言ってちゃダメ。売る気無いのかと。「いやもう全然違いますよ。フルHDに比べたらハーフHDなんて糞ですよ糞」と嘘っぽいけど言い張るぐらいじゃないと。

TVなんて1回買ったら壊れるまで使うのは分かり切ってるんだから、「ここでちょっと奮発してでもいいモノ買おう」と客の気持ちを持っていかなきゃいかんのに、似たようなスペックの製品ばかり次々に出してたら、「どれ買っても同じだな。だったら安いのでいいや」としか思われないだろうに…。

等々、最近のTVと呼ばれる商品には、なんだか色々と残念な印象がありまして…。

4KTV売る時は、同じ失敗をしないでほしいですけど。「○○インチ以下は4K要りません」とか言っちゃダメ。「計算上は必要ないはずだし、違いが分からないと仰る人も居ますが、実際見てみると、これが全然違うんですよ…やっぱり人間の目は凄いですよ」等々、言い張ってほしいなと。

2013/08/11() [n年前の日記]

#1 [nitijyou] 指先を切ってしまった

扇風機から変な音がするので見てほしい、と家族から言われて、カバーを取り外そうと力を入れたら、勢い余って左の人差し指の先をスパッと。コレだから中国製は…。金属部分の仕上げがアレなんだよな…。

指1本使えなくなっただけで、文字入力がかなりしづらい状態に。うっかり該当の指を使ってしまって「アウッ」みたいな。血染めのキーボードを作るのは避けたいのだけど…。

2013/08/12(月) [n年前の日記]

#1 [linux] VMware上のUbuntuにftpサーバとwebサーバを導入

Windows7 x64 + VMware Player 上で動かしている Ubuntu 13.04 に、ftpサーバとwebサーバを導入。

仮想マシンのネットワーク接続は、NAT接続にした。そのうち VirtualBox を入れるかもしれないので今のうちに、みたいな。 なので、VMware 側はNAT接続に、と。

hostname を設定。 :

名前がテキトーだったのでこの際ちゃんと設定。sudo vi /etc/hostname と sudo vi /etc/hosts で修正。面倒臭いから Ubuntu 再起動。Windows上で ping hoge で反応が返ってきた。反映されてるっぽい。

ftpサーバを設定。 :

Ubuntu上では、ftpサーバとして vsftpd を使うのが一般的、なのかな? Ubuntusソフトウェアセンター経由でインストール。以下を参考に設定ファイルを変更。sudo vi /etc/vsftpd.conf で編集。

_Ubuntu 12.04 LTS - FTPサーバー - Vsftpd インストール : Server World

プラス、umask設定もしておく。これを忘れていて、当初、http://ubuntu機名/~ユーザ名/ にアクセスしてもページが見れなかった。
local_umask=022
サーバ再起動。
sudo service vsftpd restart
Windows7 x64 + FFFTP からアクセスできた。上手く行ってるっぽい。

webサーバを設定。 :

ざっくり調べたところ、apache2 を使うのがメジャーっぽい、のかな? Ubuntuソフトウェアセンター経由でインストール。ユーザディレクトリを公開するためには、userdir なるモジュールが必要っぽいので、以下を参考にインストール。

_ApacheでUserdirを使用できるようにする。 - そ、そんなことないんだから!
sudo a2enmod userdir
サーバ再起動。
sudo service apache2 restart

sshもインストール。 :

openssh-server をインストールすればいいらしい。サービスの再起動は以下。
sudo service ssh restart
Windows7 x64 + PuTTY からアクセスできた。

#2 [prog] Excel VBA から外部アプリを起動しようとしてハマった

Excel VBA から FFFTP を起動しようとしていたのだけど、セル内に記述したコマンドラインオプションが渡せなくてハマってしまったり。

FFFTP 側の設定名は登録されているのに、--set 設定名、を渡せず。何故か、「設定名」というサーバに _anonymous で接続しようとする。--set "設定名"、だの、--set ""設定名"" だの、-s """設定名""" だのやってみたけど変化なし。

仕方ないから batファイルを作って、そっちを呼び出して目的を果たそうとしてたのだけど。半日ぐらい経ってから気がついた。外部アプリのパスと、コマンドラインオプションの間に、スペースを入れてなかったんじゃないか…?

スペース入れたら、あっさり動いた。自分、トホホ過ぎる。

どこまで対応したらいいものやら。 :

とりあえずコレで、
  • htmlの更新
  • ブラウザで開いて確認
  • FFFTPを起動してミラーリングアップロード
  • サイトを開いて確認
といった作業を、全てExcelファイル上からできるようになった。

コレなら操作を忘れられてしまうことはないだろう。全部ボタンで用意してあるんだし。

…本当にそうかな? どのExcelファイルを開けば良かったのか、そこを忘れられてしまうかもしれない。また、肝心のpdfを、どこにどうしたらいいのか、そこも忘れられてしまう可能性も。

前者については、ショートカットファイルを作って分かりやすいところに置いとけばどうにかなるかもしれないか。そのショートカットファイルの存在すら忘れてしまったら打つ手が無い気もするけど。

後者については…。どうしたもんか。もしかしたら、pdfファイルの選択と、html群が入っているフォルダへpdfをコピーするところまで対応したほうがいいんだろうか。エクスプローラ上でD&Dすれば済む話ではあるのだけど。

とりあえず手順メモも書いたけど。 :

漏れが無いようにアレもコレもと書いていったら、見た瞬間にウンザリするドキュメントになってしまった。この見た目はマズい。一般の人は読む気がしない、その手のマニュアルそのまんま。

JavaScriptで、開いたり閉じたりする見た目にしようか…と思ったけど、Markdown文書でそういうのを作るのはどうしたら…。htmlタグを直接書けばできるかもしれないけど、それでは Markdown で書いてる意味が無さそうな気もするし。

開いたり閉じたりするソレも、あまりよろしくないか…。クリックすれば隠れた情報が見れる、と分かってもらえるのかどうか…。まだ、文字を小さくして並べておくほうがマシだろうか…。

2013/08/13(火) [n年前の日記]

#1 [prog] Excel VBAでFTPをする方法について調べていたり

もしかすると、外部アプリとしてのFTPツールを呼び出さずに、Excel VBA だけでFTP転送できたほうが良かったりするのだろうか。と思えてきたので、そんなことができるのかどうかを調べてたり。

一応できるっぽい。ざっくり眺めた感じでは、BASP21.DLL を導入、かつ、呼び出して実現するやり方が、多く紹介されている印象。

また、API関数 + wininet.dll を使って、というやり方もあるようで。

更に、Windowsに標準で入ってる ftp.exe を呼んで行うやり方も見かけた。まあ、ftp.exe を呼び出すソレは、外部アプリを呼び出すやり方と違いはないわけだけど。別途FTPツールをインストールしなくて済むとか、動作確認を個別に行うことができるとか、そういったメリットはありそう。

しかし、Excel VBAで、どのファイルが更新されたか等の処理を全部書くのが面倒臭いなと。 てな処理が必要になるだろうけど…。そのあたりを全部やってくれる、ミラーリング機能を持ったFTPツールが既に存在するのだから、ソレを使わせてもらったほうが楽だよなと。

別途FTPツールをインストールすることは許されていない環境なら、Excel VBA でどうにかする以外にないだろうと思うのだけど。そのあたりの制限が緩い状況であれば、外部のFTPツールに頼ったほうがいいだろう。てな気分になってきたので、調べることは調べたけれど、Excel VBA でそこまではやらないことに。

それにしても、Excel VBA って何でもできるな…。若干書きづらい印象はあるけれど、ここまで色々できるとは。

いや、やっぱりなんだか書きづらいけど。書く際に使ってるVBEは、そこそこ補完も効いてくれてイイ感じなのに、どうして書きづらいと思ってしまうんだろう。変数宣言のあたりがアレなのかな。でも、そのへんは、他の言語と違いはないはずで。Then や End If を書かなきゃいけないあたりかな。でも、Then はともかく End If 等は、どこでブロックが終わってるのか分かりやすいというメリットがありそうな。自分、VBAの何がしっくりこないんだろう…? 「オマケでついてる言語」等の偏見があるんだろうか?

#2 [anime] アニメのOPとMVについてあちこち眺めてたり

「サーバント×サービス」というアニメのOP映像が好きなのです。キラキラパヤパヤした曲も大変好みなのだけど、映像が一般的なアニメ作品のOPとは違ったノリで、なんかよくわからんけどオシャレだな、見ていて面白いな、と。

誰がディレクターなのだろうと気になったり。 _サーバント×サービス - アニメスタッフデータベース - Seesaa Wiki(ウィキ) によると、おそらくは _池田一真さん という方らしく。なるほど、 _Transfer のディレクターさんだったのか…な? たぶんそうだろうと思うけど。あの映像、「テクネ」で紹介されていて知ったのだけど。たしかにアレは凄かった…。なんだか納得。

_livetune adding 中島愛「Transfer」について制作陣が語る! 実は水かけババアのMVだった!? | white-screen.jp という記事を読んで、参加者名や参加作品をググってるうちに、もしかして最近のアニメのOPって、MV業界?の方々が結構参加してたりするんだろうか、という印象になってきたり。や、「そんなの随分前からだよ今頃何言ってんの」と言われそうでもあるし、「そんな流れは全然ないよ稀に特殊事例があるだけだよ」と言われそうでもあるし、実際はどうなのか知らないんですけど。 *1

何にせよ、アニメに他業界の人が参加して、若干違った風・刺激を入れてくれている状況が仮にあるのだとしたら、それってありがたい話なのだろうなと。上手く取り込めたら、表現の幅を広げていくことに繋がりそうな気がするし。他ジャンルのアレコレを(ある意味節操なく)取り込んできたのが、日本のアニメの強みでもあるのだろうし。

でも、MV業界の人に頼むと、お金と時間がかかりそうな印象もあるのだけど。実際はどうなんだろう…。

何はともあれ。自分、サーバント×サービスのOP映像がお気に入りなのでした。

お気に入りのOPと言えば、猫物語(黒)(白)のOP映像も好きです。ゲームのデモムービー関係で名が知られている _URAさん という方がディレクターをしているらしいですけど。 これもまた、別の業界の人が参加してくれて、また違った風を吹き込んでくれている一事例だったりするのかなあ、と。
*1: 考えてみたら…。「アニメとタイアップしたぞー。これで曲を宣伝できるぞー」と思ったら、アニメ業界ノリが全開の、ベタでダッサダサなOP映像つけられちゃって、レコード会社の関係者がガックリ、なんてこともあるのかもしれないなと。だったら、せめてOP映像ぐらいはMV業界の人に作ってもらったほうが宣伝としては効果があるんじゃないか、と考える人達が出てきてもおかしくないのかもなあ、と根拠無く勝手な妄想を。

#3 [zatta][neta] 人気者になりたければ○○を始めればいいのに

冷凍庫に入った写真撮って、迂闊にもpublic空間の代表格であるネット上で公開しちゃって、炎上して、店が潰れたり損害賠償を請求されたり、という事件があちこちで起きてるみたいなのだけど。

やらかした人達の、「人気者になりたかった」てな理由を目にして。「だったらバンドでも始めればいいのに…」と思ってしまったり。

「女にモテたい」「人気者になりたい」という、ある種不純な動機でバンド始めたけど、結果名の知れたバンドになった事例とかありますし。 *1 手っ取り早く人気者になりたかったら音楽を、てのは全然アリじゃないのかな、と。

しかも、昔は、音楽やる=バンド作る、しか選択肢はなかったけど。今は、PCが1台あれば作曲家も目指せますからね…。ここ数年人気が出てきた(のか?)ヒャダイン氏なんか、 _WindowsノートPC1台で作ってる みたいなことをインタビューで言ってましたし。ノートPC1台で頑張ってもアイドルと一緒にお仕事できるのか…。(PCスペックに関しては)凄い時代になったなあ、と。 *2

どっちも、「女にモテたい」「人気者になりたい」という似たような動機でやってるのに。 やってることも、得られた結果も、スケールがあまりに違い過ぎるよなあ、と。「人気者になりたくて冷凍庫に」という選択肢はどう考えても無いわ。何もかも小さ過ぎて、全てが貧相過ぎて、泣けてくる。音楽やるほうがめっちゃオイシイだろうに、なんでそっちを目指さないのだ…。みたいな。 *3

てなことを思ったのだけど。もしかしたらその手の人達は、楽器はもちろん、PC1台すら買えない状態、ガラケー・スマホを手に入れるぐらいが関の山なのだろうか、と思えてきてなんだか悲しい気持ちにもなってきたり。ガラケー・スマホでは…さすがに作曲とかちょっと…。これがNDSやiPadなら作曲もできるんだけど。昔と違って今時は、PC1台持ってるだけで、音楽にしても映像にしてもやりたいことは何でもできる状態になるわけだけど。冷凍庫が、彼等にとって経済的な面でも限界の行為なのだろうかと。

なら、漫画でも描けばいいのに、と思えてきたりもして。手塚先生や石ノ森先生は、「紙とペンさえあればなんでも表現できる」「四畳半の部屋に居ながら、宇宙を舞台にした物語すら作れる」「こんなに低コストで始められるのに、表現の限界がない。これはお得なメディアですぞ」みたいなことを常々豪語しながらやってたわけで。いつの時代も漫画という表現手法は、貧乏だけど才能を秘めた若者にとって強い味方になってくれるはずで。

でも、冷凍庫族って、そういう方向では努力しないんだろうな…。「ソレ、時間かかるんでしょ?」とか言って。

机の前にじっと座っていられない、肉体を使うことしかできない人でも、一人カンフーアクションとか、一人STAR WARSとか、一人ナントカスタイルとかやってYouTubeにアップしたら、もしかすると話題になってNHKで紹介されてインタビューされるかもしれんのでは、とも思えてきたりもして。時々そういう事例を目にするし。でも、あえて選んだソレが冷凍庫ではなあ…。

まあ、とりあえず、人気者になりたいなら音楽でもやれよと。 いくら冷凍庫入ってみたって _女の子5000人 食えるようにはなれないし。 _青竹踏みでバンド始めたヤツ が女300人も食ってんのに、冷凍庫入って「これでボクも人気者?」とか情けなくて涙出てくるわ。その選択は絶対に間違ってる。

てなことを思いましたとメモ。

「メジャーデビュー目指して○○やってます」という若者なら、おじさん達だって「そうか…頑張れ。売れるといいな!」と表面的には応援してあげられるけど。冷凍庫入ってるヤツには「何やってんだこの馬鹿!」しか言いようがないのでこっちもツライ。どうせなら、周囲から(うっすらとした)声援を貰いながら人気者になれるやり方を選んだほうがよくね? と。別に音楽じゃなくても、映像作家でも同人漫画でも同人小説でも自称レーサーでも自称料理研究家でも何でもいいんですけど。今まで、「これやってみたい」「これで名を揚げたる」「これなら負ける気がしない」って思えるものが、彼等には何もなかったんかなあ…。趣味レベルでも何かしらを持ってたら、そういうことしないだろうと思うんだけど。おそらく、空っぽなんだろうなあ…。だけど不相応な名誉欲だけはパンパンにあって…。

なんだか自分の学生時代を思い出してしまった。自分の中に何も持ってないくせして、そういう欲求だけは強いですわな。若い頃って。そういうアレコレを何かを成し遂げることに振り向ければ、上手いこと回っていくんだろうけど。やっぱり、ベクトルが ―― どこを目指して走り始めるかが、大事なのだろうなあ、と。


*1: 筋肉少女帯の大槻ケンヂ氏とか、「モテたくてバンド始めた」と言ってた記憶があるのだけど。ググってみたら「表現したくてバンド始めた」との言も見かけたりして、なんだか場所・時期によって動機を変えてるっぽいなと。何にせよ、そんな動機で始めてもあれほどの存在になれるのです、という点で若者に妙な希望をもたらす話だと思うので、「モテたくて始めた事例」ということにしておいたほうがいいのではと。
*2: もちろん、 _使ってるソフトは何万円〜十何万もするし、実際には2台以上使ってるっぽい けど。ノートPC1台で大体のことはできると言ってるのは間違いないし。そして今時は、無料で使えるソフトでもかなりのことができる状況になってきたんで、PC1台あれば、作曲してニコ動にアップして称賛されるはずとワクワクしてたらフルボッコ、とか体験できても全然おかしくないはずで。
*3: 「○○をなめてんのか。そんなにチャラい世界じゃねえぞ」と本気で怒り始める人も居るだろうけど。いくらなんでも冷凍庫よりそっち目指すほうがマシじゃね? ぐらいの話なので…。なんでもそうだけど、裾野が広がれば高みも増すというメリットもあるし。自分は高みに居ると思ってる人なら、どっしり構えて、「それは結構なことだ。どんどんやりたまえ」とか言わないと。そのくらいの見栄を張れなくてどうするのだ、とも。

#4 [anime] テクネ、メイキング2の回を視聴

録画してたソレを消化。ちなみに、「テクネ」は、NHK教育でたまーに放送される、手法に注目した映像作品紹介番組。

普段の回は、完成映像だけを紹介して終わり、なのだけど。各映像をどうやって作ったのかも、ざっくりと紹介してる回だった。

撮影が成功した瞬間、スタッフの間から自然と拍手が湧き出てくるソレを見て、ただ見てるだけのこっちもなんだかちょっと感動。そりゃ拍手が出てくるわな…。アナログな手法で撮影するソレは、とにかく手間暇がかかるわけで。60回目でようやく成功とか、十何mの万華鏡をクレーンで吊り上げてとか。終わった瞬間、その場にいる全員が、「オマエはよくやったぞ! そしてオレもよくやった!」という気分に包まれるのだろうなと。

でも、「どうしてCGを使わないのだ…」とも思ってしまったり。いや、CG使ったら映像の有難味ゼロなんだろうけど。

と思いながら見ていたら、何て事の無い映像も、明度でレイヤー分けして色に変換して重ねることで、今まで見たことがない不思議な映像に仕立て上げた人が紹介されて、なんだか衝撃を受けてしまったり。自分も常日頃、レイヤーを使えるCGツールを触ってるわけだけど。発想のレベルが違う…。似たような道具を使っていても、道具の機能を知っていても、頭の中身が違うとこれほどまでに差が…! みたいな。

こういう面白いことをガンガンやってる人達も居るのに、世の中には冷凍庫レベルな人も居るのだよなあ…とチラリと思ってなんだか複雑な気分に。いや、比べること自体が失礼な話ではあるのだけど。…どっちも、見た人を驚かせたい、面白いものを見せたい、と思ってやっている(or やらかした)のだろうけど、冷凍庫で拍手は出てこないし。冷凍庫人も、凡人に比べたら行動力だけはあるんだろうから、後はやり方さえ間違えなければ名声を得られるかもしれんのに。どうしてそこで冷凍庫…。たまにはNHK教育のアバンギャルドな映像の数々を眺めて作戦を練り直すべきでは…。

いや、 _DPZ を眺めるのでもいいけど。DPZは、どういう方向性ならまだ称賛されやすいのか、お手本だらけのような気がしますな。

2013/08/14(水) [n年前の日記]

#1 [windows] Windows XPってsleepコマンドは標準で無かったのか

VMware Player + Windows XP 上でバッチファイルを動かしたら、「sleep? そんなコマンドはねえよ」と言われて、「アレ?」と。知らんかった。入っているものとばかり。

というか、Windows には入ってないんだな…。あちこちから集めてきたコマンドを入れてあるフォルダに、自分でパスを通してたから使えてただけで。そうか…入ってないのか…。すると、その手のプログラムを配布する時には同梱しておかないといかんのだな…。

_Windows Vista 以降は timeout というコマンドが使える らしい。Vista 以降か…。

_WindowsXP標準機能だけでスリープ(コマンド)の実装 | trash-area.com_どーでもえぐぜ に、batファイルの中にwshまで書いてしまう事例が。こんな書き方があるとは…。

#2 [prog] Gitについて調べてたり

Gitというか、TortoiseGit なんだけど。自分、使い方を完全に忘れてるわけで。

とりあえずGitで管理したいなら、管理したいフォルダを右クリックして、「ここにリポジトリを作成」を選ぶだけで良かったらしい。Bareを作成するか聞かれるけど、管理したいフォルダとは別のフォルダに関連情報?を記録しておきたい場合は、そのBareとやらが必要になる・別フォルダがBareになるそうで。だから、そういう管理の仕方をしないのであれば、チェックを外しておいてOK、みたいな。

あとは、管理したいファイルを「追加」して、その後、「コミット」。おそらく…。 じゃないのかなと。どのファイルを管理するかの情報や、ファイルの中身自体は、たぶんリポジトリの中に入っていく・記録されているのでは、と思ってるんだけど。

GitHub にもリポジトリを作って、アップロードしてみたり。いや、アップロードと呼ばずに、「プッシュ」と呼ぶらしいけど。

GitHubにログインして、自分のアカウントページ上で、「New Repository」をクリック、すればリポジトリを作成できる…のだったかなあ…。もう覚えてないや。あとは、リポジトリ名の入力をするぐらい。

リポジトリを作成できたら、「コマンドラインのgitを使ってるなら、こう打てばプルやプッシュができるよ」とGitHubが説明ページを表示してくれる。一応手元にメモっておいたり。

その後の操作は、今一つ内容がよく分かってないのだけど。とりあえず巷の解説ページを頼りにしつつ。TortoiseGit に同梱されてる Puttygen を使って、「公開鍵」(public key)と「秘密鍵」(private key)なる2つのファイルを作成。その鍵を使ってリポジトリにアクセスする、のかな。たぶん。公開鍵が、サーバに置いとく文字列。秘密鍵が、自分のPCだけで持っておくファイル。

ひとまず、解説ページの通りに、 というファイル名で保存しておいたけど。安全面を考えたら、他者が容易に推測できないファイル名にしたほうが良かったりしなのだろうか? でも、侵入されて、*.ppk で検索されたらどうせすぐに見つかるから、意味はないのかな?

公開鍵をGitHub側に登録。公開鍵となる文字列を貼り付け。TortoiseGit からサーバにプッシュする設定をする際には、秘密鍵のファイルを指定。

どこに向けて ―― どのURL?URI?に対してプッシュするのかは、GitHubが表示してくれた説明ページに書いてあった気がする。git@github.com:アカウント名/リポジトリ名.git、だったかな…。

次回も、絶対に手順を忘れそうな気がするなあ…。

2013/08/15(木) [n年前の日記]

#1 [prog] とりあえずDXRubyのサンプルっぽいものをGitHubに登録してみたり

Anime PV Easy Maker ZERO というアプリ名にしてみたり。

geocities のほうにもアップロード。geocities 経由で zip をダウンロードするほうが分かりやすいのでは、という気も。

_Anime PV Easy Maker ZERO readme
_mieki256/animepveasymakerzero - GitHub

売り(?)は…。 そんな感じ、なのかなあ…。

DXRubyはイイ感じだと思う。 :

DXRuby が無かったら、「こういうプログラムも書けるんじゃないか? 試してみるか…」と自分は思わなかったはずで。 DXRuby、イイ感じです。
  • とにかく簡単。
  • 簡単だから、気軽に書ける。
  • 気軽に書けるから、「こういうこともできるのでは?」と思ったら、すぐ試せる。
  • すぐ試せるから、「この方向はアリかも」と確信が得られやすい。
  • しかも、とにかく描画が速い。「できるかなと思ったけど描画が間に合わない…これは無理かなあ」てなことにならない。
プログラミング言語としては評価が高いけど動作速度に難アリと言われてる Ruby を使いながらも、こういうものを書けてしまうあたり、DXRuby はありがたいライブラリだなと…。LLが持つ気軽さ・簡単さと、速度が両立できるという点で、イイ感じのバランスじゃないかしら。と、触りながら思っています。

もっとも、簡単さだけで言えば、Ruby/SDL や PyGame を使って、しかもWindowsに特化せず、MacやLinuxでも動くものを、という方向性もありそうだけど。SDLはソフトウェア描画だから、とにかく遅くて。 *1 だから、SDLを使ったライブラリ群では、こういうのは書けないんじゃないか、と予想するのでした。 *2

それと、Ayame/Ruby の存在がありがたかった…。wav/mp3/ogg、どれでも使えるのは助かります。

でも、音に関しては SDL も対応フォーマットが多かったのだったか…。組み合わせて使えたら便利なのかもしれないけど、そんなことできるのかしら…? それぞれが、それぞれのやり方で処理速度を追及してるだろうから、何かが衝突したり、取り合ったりしそうな気も。混ぜるな危険、だったりしないのかな。

*1: SDLも、ある時期まではハードウェアを使って描画する方向で作られてたらしいのだけど。ノートPCのオンボードビデオがやたらと不具合を引き起こすので、結局、デフォルト設定ではソフトウェア描画になってしまった、という話を見かけた記憶が。どの環境でも動くことを最優先にすると、ダメダメ野郎達が基準になって、速度その他が頭打ちになる・まともな環境のスペックを活かせない状況に。そのあたり、DoCoMoのガラケーでも体験しましたけど。
*2: でも、先日リリースされたSDLの新版は、OpenGL や Direct3D を使った描画機能を強化したそうで。そのあたりを Ruby/SDL や PyGame でも使えるなら、また違うかもしれないなと。ていうか、マルチプラットフォーム前提で描画速度が欲しかったらOpenGL使え、てのが鉄則なのでしょうな…。

#2 [prog] GitHubで画像が表示されて驚いた

GitHub 上の readme.md 内で、リポジトリ内の画像が表示できていて、ちょっとビックリ。以前はこういうことできなかった記憶が…。改良されたのかな? それとも、前からこういうことできましたっけ?

何にせよ、これでソフトのスクリーンショットを簡単に表示できるようになったので、readme.md を書くのが便利・快適になった気がします。ありがたや。やっぱり画像が無いと、どういう感じのソフトなのか、パッと見で分かりにくいよなと思うわけで。

#3 [game][prog] スライドショー作成ソフトじゃないんだけどな

上記のソフトについてだけど。コレ、絶対に、「ただのスライドショー作成ソフトじゃねえか」と言われそうだなと…。スライドショー作成ソフトを一度も触ったことがない人ほど、そういう印象を持ちそうな予感。ジャンルが全然違うと思うのだけど…。

スライドショー作成ソフトって、「写真をたっぷり見せること」が目的のソフトで、曲はあくまでオマケ扱い。なので、スライドショー作成ソフトを使って、曲に合わせてパカパカ絵が変わる映像を作ろうとすると、ほぼ間違いなく地獄を見るですよ。 写真をじっくり見せたるでー、と思って動画を作ろうとしてるのに、写真を数フレームしか見せないとか、ありえないですわ。そんな見せ方したくてこのソフト使うやつは居ねえわ、と、スライドショー作成ソフトを作る人は考える。だから、そんな機能は用意しないはずで。…もし、フレーム単位で調整できるとか、曲に合わせてアレコレできる機能があったら、それはスライドショー作成ソフトの皮を被った別の何かです。

だから、ジャンル・目的からして全然違うわけです。

でも、上記のソフトは、パッと見、スライドショー作成ソフトの類にしか見えないだろうなと…。

見た瞬間に、「ああ、これは違う。そういうソフトじゃないわ」「絵じゃなくて、リズムを、時間制御を披露できるんだね?」と感じ取れる何かを思いつけないあたり、自分の中で、なんだか残念というか、無念さがあるのでした。

俺のリズムを「見ろ」、という需要。 :

このあたり、需要はあるんじゃないかと自分は思えていて…。
  • 「バストアムーブ」をプレイしてた時、別にリズムを強制されてるわけでもないのに、自然と指が、リズムを刻んでボタンを押してしまった、あの感覚。
  • あるいは、アニメのOPやEDやMVを見てる時に、「この音で絵が変わってほしいのに、何故ずれる…。気持ち悪いなあ」と思ってしまう、あの感覚。
そういうアレ。アレを、娯楽/売り物/ツールにできんものかなあ、と。

ソフトの作り手側が事前に用意したリズムに、プレイヤーを従わせることで、採点可能・ゲーム内評価を可能にした、音ゲーというジャンルが一世を風靡したわけだけど。
  • 「俺にとって気持ちのいいリズムを刻ませろ」
  • 「俺のリズムで、音だけじゃなく、視覚情報まで変われ」
という欲求があったりしないかなと。…まあ、たぶんそれって、VJとかそういうのに近いだろうし、そういうソフトも既にあるんじゃないかと思うんですが。

でも、VJソフトって重いよなと。印象として。もっと気軽にVJ気分を、真似事レベルでもいいから体験できないものかと。

気分だけ味わえるという点では、VJゲームがそのものズバリ、だと思うのですが。ニコ動やYouTubeが人気を博している時代に、ゲーム内でしか見れない閉じた映像をいくら作ってみても…と。それに、ゲームにするためには、評価システムが必要不可欠で。ユーザ一人一人が違うリズム感を持ってるのに、「今のリズム、イイネ!」とコンピュータに判断させるのは不可能ですし。 *1

かといって、「動画制作ソフト」「動画編集ソフト」と謳ってしまうと、「俺、動画制作には興味無いし」と言われてスルーされるのがオチで。動画制作と聞いた瞬間、大抵の人は、「めんどくさそう」「大変そう」と思ってしまうから当然ですが。

だけど、皆、TVゲームは遊べてるわけですよ。ボタンを押したらマリオがジャンプする。コマンド入れたらリュウが波動拳を撃つ。それってリアルタイムの動画生成。ゲーム機の電源を入れた瞬間から、実は誰でも動画を作ってる。小学生ですら、日々、動画制作をこなせてる。

だから、やれることを上手に絞って、感覚的な境界・ハードル・思い込みを除外できたら ―― これは大変そうだからやめとくわ、と思わせずに、「え? こんなノリでコレできちゃうの?」てな印象を持たせることができたら…と夢想するのですけど。

でも、「スライドショー作成ソフトじゃん」って思われてるレベルでは全然ダメなのですよ。ジャンルすら伝わってない。見せ方というか、プレゼンがなってない。このあたり、名案が出てこないのが悔しいですけど。自分の頭の固さが恨めしい。

DTMのほうから攻め(?)たほうがいいのかなあ。例えば、 _FL Studio の Fruity Dance プラグイン などは、既に入り口に立ってるソレのような気もしたり。でも、「作曲? DTM? ソレって大変なんでしょ?」と言われそう。

まあ、今後の宿題・課題です…。

だけど、昨今、リアルタイムゲームは避けられてる印象もあるな…。リアルタイム性を打ち出した瞬間に拒否される可能性もあるのだろうか…。だとしたら、RPGやカードゲームでVJ気分が味わえたらアレなんだろうか。…どうやって? イメージがさっぱり湧きませんが。

*1: その点、「Rez」は上手いよなと…。そういうアレを体験させつつ、ゲームとして成立させるために(微妙に本質からずらしたところで)評価システムも動作してるという点で、感服するしか。

#4 [prog] デスクトップを録画しようとしてちとハマる

チュートリアル動画もないと、どんなソフトなのか分かんないよなあ、と思えてきたので、使ってる様子を録画しようと ―― デスクトップの様子をaviで録画しようとしたのだけど。音声関係でちとハマったり。

アマレココというソフトを使わせてもらったのだけど。録画開始ボタンを押すと、音声関係でエラーが出てしまって処理が開始されず。

録音時のサンプリング周波数とビット数が、Windows7 側の設定と、アマレココの設定で、合ってなかったのが原因らしい。アマレココは、44.1KHz、16bit にしてたのに、スピーカ出力は 48KHz、24bitで。そこを合わせたら音声も一緒に録画できるようになった。

24bitとか、スゲーなあ。 :

それにしても。このPC、24bitで音を出してたのか…。最近のオンボードサウンドって凄いんだなあ。いや、もしかすると、「内部的には、たしかに24bitで計算してるけど、D/Aコンバータはそこまで持ってないよ? 16bitだよ?」というオチかもしれないけど。

高校時代、ワンボードマイコン+4bit程度のA/D、D/Aコンバータで録音再生の実験をして。「ヴァンヴァーヴォー(サンダーフォース)」ライクなガビガビな音で「鳴った! 声っぽいものが聞こえる! スゲー!」と喜んでたことを考えると…。24bitとかとんでもねえわあ、みたいな感じなんですけど。たしかあの頃、抵抗を並べて、4bitのD/Aコンバータを自作した記憶も…どうだったかな…。それが24bitか…。24bit分の半田付け…無理だ…。

てなことを書いてるうちに、工具箱の中に8bitのA/Dコンバータが眠ってることを思い出したり。学生時代、お小遣いをはたいて、「8bitだ! スゴイの買っちゃった! さすがに8bit分も半田付けとか無理だし! いつかコレで何か作ってやるぞ!」と思ったけど、結局買っただけでそのまんまになっちゃったなと…。

何にせよ、今のPCって本当にスゲーです。今では目の前に、24bitがあるんか…。これだけのスペックがあれば何でもできるはずなんだけど、自分のほうが ―― 人間という御主人様の思考能力・空想力・夢想力のほうが、ちょっと限界が来ている感も。

#5 [prog] AviUtlの操作でちとハマる

音声付きの動画ファイルを、AviUtl + 拡張編集プラグインで読み込んだ際、音声が含まれなくて悩んだり。

音声は別レイヤーで割り当てないといけなかったらしい。ただ、音声ファイルを別途用意する必要はなくて。映像と同様に、音声も該当動画ファイルを割り当てれば、音声部分だけ取り出して使ってくれる模様。

しかし今度は、AVI出力しても、音声が入ってなくて。

AVI出力する際に、音声の設定で、「再圧縮無し」にチェックを入れていたのがダメだったらしい。チェックを外したら、音声が含まれたAVIを出力してくれるようになった。…もちろん、AVI出力時の音声フォーマットはPCMに。mp3その他では、毎回音声が不可逆圧縮されて、AVI出力するたびに音質が悪化するはず。もっとも、PCMで出力しても、バイナリレベルでは中身が変わってそうな不安もあるのだけれど。

テロップというか、字幕の挿入は、AviUtl + 拡張編集プラグイン上にそういう機能があったので助かった。表示時間の調整も、バーの長さを変えればいいだけなので、分かりやすい。ありがたや。AviUtl、素晴らしい。

ただ、直前のフォント設定を覚えてくれないようで、毎回指定し直すのが面倒。作業途中で、パーツ?をコピー・ペーストすればいいことに気付いたけど。もしかすると、どこかにこのあたりの設定がありそうな気もするのだけど、まだ調べてない状態。

2013/08/16(金) [n年前の日記]

#1 [nitijyou] 弟が帰省

いつもは車で帰ってくるのだけど、今回は時期的に混雑するだろうとのことで、バイクで帰ってきたそうで。暑かったのではと思ったけれど、走行中は風を受けるから意外と涼しかったらしく。

#2 [anime] アニメスタイルを読ませてもらった

弟が最新号を持ってきてくれたので読ませてもらったり。相変わらず濃い…。数十年〜数百年後、日本製アニメについての第一級資料になってそうな…。

個人的に、悪の華のインタビュー記事が興味深かったり。や、自分は田舎に住んでるから本編は未見なんですけど。

ロトスコープを使うと決めたため、下書きとしての実写映像が必要になるわけだけど。アニメスタッフが、実写畑の演出家・カメラマンの協力を得ながら撮影していったため、実写とアニメの作り方の違いをよりハッキリと意識することになり、結果、「アニメって何だろう?」という問いを真正面から突き付けられた形に、てなあたりの話が面白くて。実写畑の常識は、アニメ畑の非常識だし、またその逆も成り立って。その幾つかの具体的事例の紹介が、読んでいて勉強になったというか。うっすらと、実写はこういうところが大変じゃないのかなと素人なりに想像はしていたけれど、まさかここまで制限があるとは…。それでもちゃんと各作品を仕上げてしまうのだから、実写畑ってスゲー。みたいな。おそらく、○○畑にとっては当たり前すぎて特に誰も言及・紹介しない部分も、別業界から見ると仰天モノ、なんてところが結構ありそうな気も。

「とある〜」劇場版のインタビュー記事も勉強になった気が。や、コレも未見なのだけど。まあ、アニメ様が高い評価をするということは、かなりの出来なのだろうと。…アニメ様が評価していたのに、実際見たらダメダメだったことは、今まで一度もないわけで。

個人的には、件の劇場版が吉野脚本だったことに、ちと驚いたり。大変失礼ながら自分の中では吉野脚本作品って(以下自粛)。しかし、記事を読んでみて、強みはどこにあるのか、なんだかちょっと分かってきたような気分にもなってきたり。記事中では、監督? P?曰く、「ノリでまとめてくれる」と冗談めかして言及されてたけど。膨大、かつ、どれも関連性が無くバラバラに思えるネタの数々をまとめてみせるあたりは、たしかに…アレもコレも思い当たる。フツーならパニックを起こすレベルのネタの羅列でも受け止めて、ひとまず形にしてくれるのだから、これは重宝されて当然なのだろうなと。どんな形になろうとも、まとめることができなければ、商品もへったくれもないわけで。今後、参加作品の見方がちょっと変わりそうな予感。

2013/08/17() [n年前の日記]

#1 [anime] 「言の葉の庭」を視聴

弟がBDを持ってきて「これは見る価値アリかも」みたいなことを。てなわけで視聴させてもらったり。

相変わらず凄いんだろうなあと想像してたけど。やっぱり相変わらず凄かった。

とにかく綺麗。とにかく美しい。どのカットも、日常のどこにでもありそうな、なんてことのない風景を切り取ってるわけだけど。どうしてここまで美しく見せられるのか…。この人の作品は、毎回とんでもねえことになってるなあ、恐ろしいなあ、と。

監督さんが、「話に関しては、言い訳をしないで済む作品にしたかった」と何かのインタビューで言及してた記憶があるけど。たしかに、設定・ストーリー面でも、そういう作品になっていたような気がしたり。そして、この作品なら比較的、万人にオススメできそうだな、とも。

まあ、話・展開についてはしっくりこない人、拒否反応を示す人、テンポが合わなくて下手すると寝ちゃう人も居るかもしれんと予想もするのですが。しかし、そういう人でも、46分の絵画展、46分の庭園巡り映像としてはどうよ? と尋ねたら、「そういうことなら…それは全然アリかな」と、よほどアレな人でもない限り納得してもらえそうな予感も。

あちらこちらで、映像美がどうとか、映像文学とか喩えられているほどに、映像制作に対する気合いの入れっぷり、作り込みは尋常じゃないので。そういう面では誰が見ても、何かしら、どこかしら、感じるところがあるのではないか、と。

この監督さんの手にかかれば、チン○やウン○すら溜息が出てくる映像にしちゃうんじゃないの? と一瞬馬鹿なことを思ってしまいました。馬鹿だね、自分。まあ、そのくらい、この作品はスゴイと思ってしまったということで。素晴らしい。コレは素晴らしい。

相変わらず作り込みが狂ってる。 :

オーディオコメンタリーで監督さんが言及していて、巻き戻してみて「うわ、マジだ!」と驚愕しましたが。ノートに鉛筆でスケッチをしてるカットで、ノートの紙が鉛筆で押されて凹むのですよ。…文章で説明しても何言ってんのか分かんないと思うけど、見れば分かる。気付いた瞬間、ゲロ吐きそうに。アニメでそこまでやるか…! ある種、これは狂ってるなと。

監督自身、「ここまでやる意味あるのかなあ…」と弱音(?)を吐いてましたけど。意味はあったんじゃないかなと。だって、ノートに鉛筆でスケッチをしてるだけなのに、そのカットだけ見ても、「綺麗だなあ…」とこっちは感じたわけで。それってつまり、抽象化された映像に、無意識なレベルで現実性を連想させる動きを付加したことで、結果、見る人の脳内に、その人にとっての理想的な映像を結実させることができました、ってことですから…。しかし、やっぱり、この監督さん、ちょっと狂ってる…。<褒めてます。

歌の持つ力を信じてるか否か。 :

個人的に、見ていて嬉しかった点が。監督さんが、曲が持つ力、歌が持つ力をしっかりと信じていて、それを最大限、自作品の中で活用したいと考えてることが伝わってきたあたり、なんだか嬉しくなったというか。

初見時、大江千里作詞作曲、秦基博がカバーした「Rein」が流れてきた瞬間に、「…ズルイ!」と思ってしまいました。や、「ズルイ」云々は冗談ですけど。これぐらい曲を活用してこそ映画・映像作品と呼べるのではないかなあ、と思ったわけで。…大江千里の曲、いいですよねえ。

邦画においては、本編がそれなりに頑張ってるのに、途中や最後で頓珍漢な歌を突っ込む時が稀にあるわけで。そういうのを見るたびに、海原雄山ノリで「この曲を選んだのは誰だー!」と怒鳴りたくなるわけですよ。 *1

映画は、総合芸術ですよ。写真、絵画、演劇、あらゆる要素を総動員して、観客に何かを伝えるべくジタバタしてこそ映画ってもんで。なのに、どうして、音楽だけ村八分にしちゃうのか。そこは、「音楽の持つその力…我に差し出せ!」ぐらいの姿勢で取り組まないと。映画が総合芸術であると理解できてないから、迂闊に音楽を軽視できるんですよ。映画をなめたまま作ってんじゃねえよと。

音楽が映像をブーストして、映像が音楽をブーストするぐらいの関係じゃないといかんだろうと。その音楽を聴いたら映像が脳裏に浮かび、映像を見たら音楽が頭の中で流れ始める…。本来、そのくらいの良好な関係を目指さないといかんのではないですかと。

その点、新海作品は、総合芸術を作ろうと立派にジタバタしてる印象があるのでした。とは言え、姿勢はともかく当たり外れはありますが…。少なくとも、「秒速」と「言の葉」は、歌の力を上手く使えてる気が。「このタイミングでコレを流すか…。いやー、ズルイわあ。そりゃ絶対イイ感じになるわあ」と自分は思えてしまったあたり、使い方に関して見事成功した証拠、じゃないのかなと。

新海監督は宮崎駿監督の一番弟子のような気がしてきたり。 :

この作品、キャラの塗り分けを一工夫して、照り返しやトレス線の色に環境光を反映したそうで。その試みは、上手くいっていたような気がしたり。そういうやり方があったか、頭いいなあ、たしかにパッと見の印象がかなり違う、なるほどなあ、と。

まあ、考えてみたら、例えば3DCGにおいては環境光を意識するのはごく当たり前のことだし、イラスト業界でもそういうテクニックがそこそこ普及してるのだから、それをセル塗りに応用するのは全然アリな発想だよなと。というか、「となりのトトロ」でも、トレス線の色を一工夫、なんてことをやってたわけだから、ここまでやった作品は滅多にないとしても、着眼点としては何十年も前から皆が目にしていたわけで。でも、よくまあそこらへんを意識して、手間をかけたものだなあ、と感心するわけですけど。

そのあたり、宮崎駿監督が、昔、新人向けに書いたという研修資料(?)を思い出すのです。「どんな風景もしっかり観察すれば、セルと塗り分けで必ず表現できるはず。そういう気概を持って仕事に取り組め!」みたいな熱い主張が書いてあった、ような記憶が。手元にその本残ってないのでうろ覚えですけど。

でも、フツー、よほど意識の高いアニメーターさんでもない限り、そこまではやらんわけですよ。しかも、宮崎駿監督のそのノリって、どちらかというと東映動画のノリで。虫プロのスタイリッシュな画作りが席巻・普及してしまった現代においては、本当は王道なんだけどマイナーな扱いを受けてる考え方ではないかとも思えたり。

しかし、今回、新海監督とそのスタッフは、その教えを、ある種愚直さすら感じるほどに、真摯にどこまでも徹底的に守って取り組んで、見事に成功させたわけで…。

テレコムやジブリで育ったわけでもなければ、宮崎駿監督がどちらかといえば嫌っている、デジタル技術に頼った画作りをしている…。そんな新海監督が、実は宮崎駿監督の教えを最もキッチリ守ってるように見えてしまったあたり、これはなんだか面白い状態だなと。もしかすると、画作りの方向性に関しては、新海監督が宮崎駿監督の一番の後継者じゃないの? とすら。…まあ、テレコムやジブリで育った方から、「何言ってんだよ、俺達だってちゃんと守ってるよ? 目ん玉ひんむいて俺達の作品しっかり見てみろよ」と怒られそうではありますけど。 *2

もちろん、やり方・考え方はそうだとしても、脚本やコンテレベルの作風は全然違うわけで。新海監督の作風は、ジブリに呼んで作らせてみたものの、完成映像を見て宮崎駿監督が激怒したと噂される、望月智充監督の作風に近い印象が。なので、あくまで、画作りの姿勢は、という話でしかないですが。

アニメ様が、「新海監督作品は最先端アニメ」と喩えてるけど。デジタルという最先端を使いながら、ある種絶滅危惧種に近い、東映動画の画作りの思想を復権しつつあるという点で、そこにはハイブリッド性がありそうだなと。そういう面でも、コレは最先端アニメ、なのかもしれないなあ、と。

このあたり、もしかすると、アニメーター出身ではなく、撮影出身の監督さんだからそういう純潔?を守れているのかしら、と邪推もしたり。

アニメーターだったら、テレコムやジブリに入ろうと努力したり、宮崎駿から直接指導を受けたりして、しかし、「ここまではやれん…」と挫折しそうだよなと。しかも、大塚康生さんあたりがこっそりと、「宮さんはあんなこと言ってるけどさ。フツーそこまでできないから。アレは宮さんが特別だからできることですよ」みたいな優しい言葉を耳打ちしちゃったりして、「理想としてはそうだけど、なかなかできることではないのだ」と若干日和ってしまう可能性も。って全く根拠のない勝手な妄想ですが。実は大塚康生さんのほうがもっと厳しかったりして。

何にせよ、新海監督のソレは、「アニメーターではなかったから」「撮影・仕上げという職種の作業内容を熟知してるから」、そして、「デジタルの利便性を知っているから」こそ、「ここは撮影時にこうすればできるかも…」と発想が湧いて、それ故にかろうじて成立している、そんな可能性もあったりするのかなあ、と想像してみたりもして。実際はどうなのか全然分かりませんけど。

このあたり、ピクサーの各監督さんにも似たような何かを感じるのですよね…。ピクサーの監督さんが来日して、インタビューを受ける際に、「自分達は宮崎アニメから、緩急・コントラストの重要性を学んだ」とか言ってるわけですけど。 *3 その、宮崎駿の弟子達が集って作ってるはずの近年のジブリ作品が、緩急を活かせてるかというと…これがちょっと微妙なわけで。そもそも近年の宮崎アニメ自体がそのへん微妙。

新海監督にしろ、ピクサーにしろ、バリッバリにCGを駆使してる監督さん・スタジオですが。しかし、考え方に関しては、宮崎駿監督のソレをしっかり守ってる・取り込めている。そこがなんだか面白いなと。もしかすると、別の職種であったり、外部のスタジオのほうが、そこにあった本質・重要性を意識しやすいのかな? てなことをチラリと思ったりもするのでした。…実際どうかは分かんないですけど。

これだけ長々と書くってことは。 :

これだけ長々と書いてしまうということは…。自分、よほど、この作品が気に入ったんだなあ…。

*1: 例えば、バリバリのSFロボット特撮映画なのに、永井真理子の歌を流したりとか。バリバリの怪獣映画なのに、爆風スランプの歌を流したりとか。単体では全然悪くないのですけど、その組み合わせはいかんだろうと。全てが台無しだよと。レコード会社から「このミュージシャンを使ってくれ」と捻じ込まれたのかなあ、などと邪推したりもするのですが。…まあ、監督自身が選んだのであれば諦めますけど。例えば、庵野監督作品などは、もう諦めてたり。
*2: というか、最近の新海監督は、テレコムやジブリで活躍してるアニメーターさん・背景美術さんと組んで仕事をしていることが多いから、新海監督のソレは、そっちから流れてきたアレコレだったりしないのかなあ? と思ったりもして。
*3: まあ、ピクサーのソレは、セールストークの類かもしれない、と思ったりもしますけど。日本人相手に宣伝する時は、「日本の○○に影響を受けた」等の発言をすると、日本人は喜んで、日本市場に売り込もうとしてる作品の印象も良くなって若干ヒットしやすくなりますから。でも、実際にピクサー作品を見ると、昔の宮崎アニメにはたしかにあったソレを、見事、自分達の技としてモノにしているように見えるので、実は結構本心からそう思ってくれているのかもなあ、とも。

2013/08/18() [n年前の日記]

#1 [nitijyou] 弟が仙台に戻った

せっかくバイクで来たので、いつもと違う道を走るつもりとのこと。

夕方5:00前には到着した、と電話で連絡あり。せっかくだからどこか温泉宿に泊まるのもアリだったのでは、と思ったけど、この暑い時期に温泉ってのもアレか…。

2013/08/19(月) [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、14:00-16:00の間、自宅サーバ止めてました。申し訳ないです。

ドーンと鳴り始めたので、雷情報ページを見たら、須賀川市の上空にのみ雷雲+雲間雷が。「ヤベー、これはガンガン来るな」と思ったけど、意外とそのまま流れ去ってくれたようで。少しホッとしました。

#2 [dtm] FL Studio + フリーのVSTiでちとハマった

EVM UltraSonique というフリーのVSTiを、FL Studio 11.02 上で鳴らしてたら、wav書き出しが正常にできないことに気付いたり。アルペジオ? シーケンス? だかのプリセットを選んだ時がおかしくて。プレビュー再生してる時はテンポと一致したソレがちゃんと聞こえるのだけど。wav書き出しするとテンポ設定と全く一致しない波形が出てきてしまって。

これがまた、全てが一致しないかというとそうでもなくて。曲が終わる直前だけは、何故か急にテンポが一致し始めるという謎状態。全く鳴らないとか、すぐに固まる等であれば、なんとなく納得もするのだけど。プレビュー再生はできるけど、wav書き出しはできない、てのがよく分からない。FL Studio がいかんのか、VSTiがいかんのか…。

どうやらVSTiのほうにバグがあったらしい。 _MadTracker - Forum - Trouble with EVM Ultrasonique VSTi という投稿記事に、同じ不具合の報告が。FL Studio の問題かと思って、そっちを無駄に探してしまった…。

2013/08/20追記。 :

勘違いだった。FL Studio 11.02 側にバグがあるみたい。

#3 [anime][neta] 新海監督版「北斗の拳」とかどうだろう

「ハート様が…綺麗だ…」「こんなに美しい『ひでぶ』は見たことない…」等々、驚きの声が続々と。

ないない。それはない。

しかし、「綺麗なハート様」って一体どんなキャラデザなんだろう。いや。キャラデザはあのまんまで、撮影処理で綺麗に見せられるものなんだろうか…。肌が油でテカテカキラキラ光ってる感じを再現とか。表面が虹色に見えたりするのだろうか。

血飛沫には、パーティクルを使って味付けするんじゃないかな。もしかすると、各シーンで全然違う血飛沫になってたりして。

新海監督の手掛けるバイオレンスアクション映画とか、ロリコンエロアニメとか、若干見てみたい気も。おそらく、平成のPOP CHASER、てなポジションに…いや…どうだろう…。

そっち方向は、得意にしてる人・向いてる人がたくさん居るのだろうから、あえて挑戦しなくても、ですよね…。新海監督じゃないと切り開けない分野があるのだから、そっちに注力してもらわないと。

#4 [anime][neta] 昔の判断基準って大らか、だったのかな

POP CHASERについて調べてたら、SF・超次元伝説ラルについて気になる話を目にしたのでメモ。

_くりいむレモン - Wikipedia
「触手姦」ジャンルの祖となる作品。ビデオやレーザーディスクでは、「相手が人間ではない」「世界設定などが極めて現実から乖離しているので問題無い」などの理由から、性器が無修正だった。

くりいむレモン - Wikipedia より

昔はそういう判断基準だったのか…。昨今の、児ポ法改正云々のソレを考えると、何だか複雑な気分。

どんどん規制が厳しくなっていって、最終的にはMZ-700の野球拳みたいな画にしないと許されない状態になったらどうしよう。なんだかSFの世界。…まあ、今現在のAA職人さんの手にかかれば、文字の組み合わせでもかなりの画になりそうか。MZ-700の野球拳だって、20年経ったら凄いレベルになったし。

#5 [zatta] 映画のジャンル分けって難しそうだなあ

_映画評論家の町山智浩さんの、映画宣伝における代理店の功罪についての発言 - Togetter という記事を眺めて、なんだか考え込んでしまったり。件の記事には、悪例として、キルビル2を恋愛映画として売った事例が紹介されているわけだけど。そこから、なんだか思い出してしまったことが。

自分、昔、今敏監督の「千年女優」を見た時に、「これはある種の純愛映画だなあ」と思ってしまったのだけど。DVDに入ってた予告映像を見たら、ホラー映画として売り込もうとしてるのが透けて見えて、「おいおい、それは違うだろ」と憤慨しちゃったことがあって。

今敏監督は、「PERFECT BLUE」という、ある種ホラー寄りの映画を作って頭角を現した方なのだけど。おそらく、映画会社としては、既に実績のあるそっち方向で宣伝していきたい、みたいな思惑があったのではないかと。何せ、「千年女優」は、監督の2作目。方向性がまだ見えない。しかも、映画の内容がアレですから。担当者は困っただろうと。だから、「前作同様ホラーですよ」と思わせて売り込むのが手堅い、と考えたのかなあ、と邪推するわけですよ。

ただ、今敏監督がどういうつもりで作ってたのか、そこは分からんわけで。もしかすると、自分が思った「純愛映画」としてジャンル分けをされたら、監督は激怒したのかもしれない。そういう映画じゃねえよと。これのどこが純愛だよと。

でも、もし、自分のような人間が、映画会社の宣伝部に居たとしたら…。「これはホラー映画に見せかけよう」と主張する周囲に対して、「何言ってんスか! どう見てもこれは純愛映画でしょ! そっちで売ってかないとダメでしょ!」と頑固に主張した、のではないかと。

てなことを考えると。ひょっとして、キルビル2の宣伝担当者も、ガチで、「これは恋愛映画だ。カンフーアクションの皮を被ってるけど、本質は愛の物語なのだ」なんて思い込んでたら…。だとしたら、ちょっと責められないなと。まあ、キルビル2を見たことないので分からないですけど。ていうか監督についてちょっとリサーチしたら、「これ、たぶん恋愛映画じゃねえな」と気付きそうな予感もあるけれど。

まあ、とりあえず。映画のジャンル分けって難しいよなあ、と。

何せ未だに、「千年女優」のジャンルが何なのか、自分には分からないですからねえ…。どの層に売り込めそうな映画だったのか、それもさっぱり分かんない…。ジャンル分けや、届けるべきターゲット層の見極めって、難しい問題だよなあ。と思いました。

#6 [zatta] 「店や職場では馬鹿なことするな。やりたいなら自分の部屋でやれ」という話でしかないよなと

ピザの生地でまた馬鹿なことしちゃった人が出たらしくて呆れてしまったのだけど。そのあたりの騒動の何がマズイのかを考えてたら、なんだかシンプルな答えが浮かんできて。
それだけの話だよな…。それを守れてないから怒られるわけで。 *1

コレ、守るのがとんでもなく難しいことかな…。冷凍庫の件も、ピザ生地の件も、ソイツのオナニーみたいなものだけど。フツー、オナニーって自分の部屋でするよね? 店や職場でしないよね? 店や職場でシコシコ始めたら怒られて当たり前だよね?

と、そんなレベルの話に近いのではないのかな、それすら守れないとなると困っちゃうな、と思えてきたわけですが。

ネットの使い方もそうだけど、結局のところ、パブリック空間とプライベート空間の区別がついてない、ってことなのかなあ…。 *2 まあ、官公庁も、Googleのサービス使って若干似たような問題起こしてた記憶もあるので、各空間の区別については若者だけができてない、という問題じゃなさそうだけど。日本の教育って、何か間違ってたのだろうか…。<何故いきなりそんな話に。

そういえば…なんかソレで急に思い出したけど…。20年以上も前、会社の新人研修の時、煙草をトイレで吸って、しかも火の始末をちゃんとしなかった新人が居たらしくて、指導役の先輩が呆れてたっけな…。「研修場所の廊下には喫煙所も灰皿もあるのに、なんでわざわざトイレで吸うんだ」「君達は大卒じゃないのか」「いい歳して中身は中学生か」みたいなお叱りを新人全員が浴びせられる羽目になったようなおぼろげな記憶もあるようないような。

それってつまり、当時もそういう馬鹿が居たという証拠だし、イコール、当時の若者はもうおじさんになってるわけだから、今のおじさん世代の中にもそういう馬鹿がゴロゴロしてる可能性が高い、という話になるんだろうけど。

「場を知る」「場をわきまえる」(?)ための訓練が、日本の教育現場では足りてない、ということになるんだろうか。大昔ならそういうのって、家庭内、もしくは地域コミュニティで躾をしたのだろうけど。戦後、地域コミュニティは崩壊したし、各家庭はそれぞれレベルが違うし。

なんかよくわかんなくなってきました。とりあえず、オナニーは自分の部屋でしましょう。

や。そんなの言われるまでもなく大半の人は「そりゃそうだろ」「当たり前だろ」と思うはずだし、そう思う人が多いからこそ、まだちゃんと騒動になってるんだろうけど。これが騒動すら起きなくなったら、その時は、もう日本は終わりなんだろうなと。

なんか外国ではそういう国が ―― 騒動にならない国がたまにあるようで、「騒動になる日本はおかしい。○○を見習うべき」なんて主張をしてる人も見かけたのだけど。レベル低いほうに合わせてどうすんだ馬鹿、なんでもかんでも外国に合わせればいいってもんでもねえだろ、オマエどんだけ外人にコンプレックス持ってんだヨ、外国の○○が正しいはずだなんて盲目的に思い込んでんじゃねえよ、何をどこに合わせるかはケースバイケースだろ。みたいなことも思いましたよ。とはいえ、かつて日本は全体主義に傾倒し過ぎたから、その反動としてそういう主張が出てきちゃうのかなと邪推もするのだけど。しかし、、その反動で出てきたのであろう主張が、明治時代の西洋中心・白人至上主義や、戦後のアメリカ礼賛ノリと変わり映えしないのではなあ、という気もして。つーか、「外国ではこうだから」派のソレは、「○○くんはファミコン買ってもらったんだよ!」と親に訴えてる幼児と変わらん気もしてきたり。他所は他所、ウチはウチ。じゃないのかと。

しかし、そういった「常識」って、どの段階で身に着けるんだろう? 自分も、どの段階で身に着けたのか…。思い出せない…。少なくとも、身に着けるまでは親や先生を困らせてたのは間違いないのだろうけど。

まあ、なんか色々と考えてしまいました、てなだけの話です。
*1: もちろん、職場の雰囲気を良くするため、潤滑油として、わざと道化を演じてちょっとおバカなことをしてみせる、なんて場面もあるだろうけど。店を潰すところまで行ったらソレは潤滑油の域を超えてますわな。ていうか客が店内で馬鹿なことをしてる事例は潤滑油云々とか全く関係ない話だし。
*2: その、「パブリック」「プライベート」も、0/1でデジタル的に分けられるものじゃないだろうと思うけど。

2013/08/20(火) [n年前の日記]

#1 [dtm] FL Studio 11.02 + EVM UltraSonique が正常動作しない件

どうも FL Studio 11.02 にバグがある気配。

FL Studio 11.02 ではなくて、FL Studio 9、10 上で件のVSTiを使うと、真っ当なwavが書き出された。てことは、FL Studio 11.02 側がエンバグしてんじゃね? と。

Fruity Wrapper が ―― FL Studio でソフトウェア音源を鳴らすためのソレがバグってる気がしてきたので、以下のページから、Wrapper 2.4.7 + shareddlls_20130812.zip をDLして差し替えてみたりもして。 *1 ちなみに、FL Studio 11.02 インストール直後の Wrapper は 2.4.3 で、不具合が出なかった FL Studio 10.0.9 の Wrapper は 2.3.17 だった。 *2

_wrapper 2.4.x (2013/07/30) (Topic) - Image-Line
_Shared program files (2013/08/12) (Topic) - Image-Line

結果は変わらず。やっぱりwavがちゃんと出てこない。どうやら、現状の Wrapper 2.4.x 系はバグ持ちっぽい…。それとも、FL Studio 11.02 本体がバグ持ちなのだろうか?

なら、FL Studio 10 を使うべきかというと、それもちょっと微妙で。FL Studio 10 インストール直後の Wrapper には、プリセットを順々に選んでいけないというバグがあるから使い勝手が悪く。 _2013/01/12 の時点では開発版の Wrapper を入れて使っていたわけで。

もっとも、件のVSTi ―― EVM UltraSonique は、配布サイトも消滅してしまったぐらいに、かなり古いVSTiで。dllのタイムスタンプも2001年だから、10年以上前の品。しかも、フリーだから無保証。不具合が起きてもしょうがないよね、という気もしていたり。

でも、以前の FL Studio では動いてたのに、最新版の FL Studio では動かなくなるってのは、やっぱりちょっと残念。以前作ったプロジェクトファイルを開いても、現行バージョンではwav書き出しができないってのはどうなんだろうという気もする。
*1: ログインしないとファイルのリンクが出てこないので注意。…DEMO版を使ってる人は入手できない気がするのだけど、ええんかいな。でもまあ、正式リリース版ではない・開発版だからアレなのかな。でも、正式リリース版がバグ持ちではなあ…。
*2: FL Studio 9.0.3 の Wrapper はバージョンを確認する方法が分からず。

2013/08/21(水) [n年前の日記]

#1 [nitijyou] 自転車で買い物に

親父さんの電動自転車を以下略。刻み煙草(=小粋)が売ってる専門店のあたりまで。帰りにケイヨーD2とヨークベニマルによって飲み物等を購入。

わざわざこうしてメモするぐらいに外出してませんです…。

帰宅したらバッテリーの残量ランプが1つに。このぐらいが、容量的に走れる距離の限界なんだろうな…。

あちこちにコンビニが出来てることに気付いたり。昔は全然無かったのだけど、こんな田舎でもそのあたりの競争が、ということなのだろうか…。

2013/08/22(木) [n年前の日記]

#1 [cg_tools] 画像内容が一致してるか調べたい

2つの画像に違いがあるかどうかを調べたい。できればコマンドラインツールを使って判定したい。

検索してみたところ、 _ImageMagick の Compare を使えば、目的が果たせると知った。ImageMagick は凄いな。なんでもできちゃうのだな…。
compare -metric AE src1.bmp src2.bmp diff.bmp
compare -metric 比較種類 比較元画像1 比較元画像2 違ってる箇所を出力する画像
_-metric というオプション で、比較種類を指定することができるらしい。自分は英語が読めないので自信ないけど、たぶん、-metric AE で、単純に「何ドット違っているか」を出力してくれる、ように見えた。0がでてくれば、全く同じ画像。0より大きい数値が出てきたら、その個数分のドットが違ってますよ、ということじゃないかと。たぶん。自信ないけど。

標準出力で、比較結果が出力されるらしい。

UWSCスクリプト内で呼び出してみたけど、一応動いてるように見える。
// 画像を比較して結果をチェックするuwscスクリプト
// ImageMagick の compare を使用。

OPTION EXPLICIT

PUBLIC comp_tools = "<#DBL>C:\Prog\ImageMagick-6.8.5-Q8\compare.exe<#DBL> -metric AE"
PUBLIC diffimg = "diff.bmp"
PUBLIC cmdstr = ""
PUBLIC res
HASHTBL imgfn

imgfn[0] = "001.bmp"
imgfn[1] = "002.bmp"
imgfn[2] = "003.bmp"

cmdstr = comp_tools + " " + imgfn[0] + " " + imgfn[1] + " " + diffimg
res = DOSCMD(cmdstr)
res = REPLACE(res, "<#CR>", "")

if res = "0" THEN
    MsgBox("画像は同じです。")
ELSE
    MsgBox(res + "個、ドットが異なります")
ENDIF

#2 [xyzzy] xyzzy にもUWSCモードがあったらしい

UWSC は、Windowsデスクトップ上の各種操作を自動化できるツール。ちと再勉強してたのだけど。スクリプトを書くためのヨサゲなエディタはないものかと。

自分の手元の xyzzy 上でも、一応 .uws を開くとソレっぽい動作をしてたのだけど。それを実現してる uws-mode.l をどこから入手したのか完全に忘れてて。…もしかして、 _自分で作ったモノ を使ってたのかな?

検索してみたら、もっとちゃんとした xyzzy 用の uwsc-mode があったらしい。ありがたや。そちらを使わせてもらおう…。

_UWSCスクリプトの解説[素人プログラマーBig] で、uwsc-mode.l が配布されてる。DL・解凍して、etc フォルダに uwsc というファイルをコピーして、site-lisp フォルダに uwsc-mode.l をコピー。バイトコンパイルしたり、~/.xyzzy に、.uws との関連付けを書いたり。

C-c C-e で、現在開いてるスクリプトを実行できるのが便利。

ただ、uwsc-mode.l 中で、uwsc.exe のパスと、uwsc.chm(ヘルプファイル)のパスを直接指定してるあたり、どうしたものかと。環境が変わるたびに、.l の修正とバイトコンパイルが必要になる予感。できれば ~/.xyzzy にそのあたりの設定を書けないか、と思って色々試したけど、xyzzy の Common Lisp は不勉強なので、全然上手く行かなくて諦めた。

_明日への一歩: xyzzyのuwsc-modeに補完機能を付ける方法 で、件の uwsc-mode.l に、補完機能をつける事例が紹介されてた。試しに自分も導入。C-. で補完が効くようになった。素晴らしい。ありがたや。

etc フォルダにコピーした uwsc ファイルには、HASHTBL や BTN_YES 等の記述が無かったので、いくつか追加してみたりもして。
*** uwsc.old	Sun Jul 16 15:05:39 2006
--- uwsc.new	Thu Aug 22 23:50:02 2013
***************
*** 1,6 ****
--- 1,7 ----
  ;*0
  DIM
  PUBLIC
+ HASHTBL
  CONST
  IF
  THEN
***************
*** 199,204 ****
--- 200,221 ----
  VK_OEM_PA2
  VK_OEM_PA3
  
+ HASH_CASECARE
+ HASH_SORT
+ HASH_EXISTS
+ HASH_REMOVE
+ HASH_KEY
+ HASH_VAL
+ HASH_REMOVEALL
+ 
+ BTN_YES
+ BTN_NO
+ BTN_OK
+ BTN_CANCEL
+ BTN_ABORT
+ BTN_RETRY
+ BTN_IGNORE
+ 
  ;*2
  GETID
  CTRLWIN

UWSCは連想配列が使えたのか。 :

前から使えてたっぽいのだけど、自分、知らなかった…。何にせよ、これでスクリプトを書くのがちょっと楽になったような気が。

この記事へのツッコミ

Re: xyzzy にもUWSCモードがあったらしい by 名無しさん    2013/08/30 17:30
.xyzzy に

(setq *uwsc-command* "c:/uwsc/UWSC.exe")
(setq *uwsc-help* "c:/uwsc/uwsc.chm")

とかでよろしいんじゃないでしょうか。とりあえず。

#3 [prog] UWSCスクリプトが書きやすい普通のエディタってないのかな

xyzzy は emacs系だから、フツーの人にはオススメできないわけで。Windowsの流儀に沿ったフツーのエディタのほうがオススメできそうだけど…。

サクラエディタ、秀丸、K2Editor、EmEditor 用の定義ファイルはあるらしい。

特に、サクラエディタのインストーラ版は、UWSC用のソレが最初から同梱されているようで。まあ、設定はされてないので自分で設定しないといかんし、zip配布版には同梱されてないけど。

_秀まるおのホームページ(サイトー企画)−UWSC用強調表示定義ファイル
_K2Editor支援ファイルダウンロード
_EmEditor (テキストエディタ) - UWSC 構文ファイル

NotePad++ 用の定義ファイルはないかな、と思ったけどさすがにソレは見つからなかった。

2013/08/23追記。 :

Mery も最初から UWSC用の定義ファイルを持っている、らしい。

_ファイル名を引数にしてアプリ起動 - MeryWiki を参考にして、Mery上から .uws を実行するマクロを作って試したり。
// -----------------------------------------------------------------------------
// UWSCスクリプトを実行.js
// 「ファイル名を引数にしてアプリ起動 改」を修正して対応。

var s = document.FullName; // 現在のファイル名を取得

// uwsc.exeの絶対パスを指定 (\マークはエスケープ要)
var exepath = "C:\\home\\bin\\uwsc\\UWSC.exe";

if (exepath == ""){
    alert("起動させる実行ファイルを指定してください");
}

//コマンドラインで渡す文字列を指定。
// 〜"+s+"〜とやるとsが編集しているファイル名に置き換わります
//ここを変更する場合36行目のvar cmdline〜も変更すること
var cmdline = "\"" + s + "\"";

// ファイル名があれば・・・
if (s != "") {
    document.Save();
    var o = new ActiveXObject("WScript.Shell");
    o.Run("\"" + exepath + "\" " + cmdline);
}else {
    // ファイル名がなければ・・・
    var s = editor.FullName;
    var a = s.split("\\");
    a.splice(a.length - 1, a.length);
    var s = a.join("\\") + "\\" + new Date().getTime() + ".uws";
    document.Save(s);

    //コマンドラインを更新
    var cmdline = "\"" + s + "\"";
    
    var o = new ActiveXObject("WScript.Shell");
    o.Run("\"" + exepath + "\" " + cmdline);
}
コレ、拡張子を判別して、呼び出す .exe を振り分けて、とかできそうな気もするな…。

#4 [digital] Google Playのレビューは機能してない気がする

先日、Android端末を使ってたら、無料アプリの下のほうに表示されてる広告の絵柄が気になってしまって。たぶん女性向けの何かの商品だと思うのだけど。

試しにクリックしてみたら、Google Play内の、Androidアプリ紹介ページに飛ばされた。Webサービスじゃなくて、アプリだったのか…。パッと見、いわゆる乙女ゲーに見えたのだけど。

しかし、レビューを眺めてみて、首を捻ったり。どのレビューも、「無課金で楽しんでます♪」「無課金で楽しんでます♪」「無課金で楽しんでます♪」…そんな感じの書き込みが、延々とどこまでも続く。ていうか、レビュー文章がどれもほとんど同じに見えた。投稿日時も、毎日、数時間おきにされてるようで。

さてはレビュー文章をコピペ or 自動生成して、プログラムで連続自動投稿してるんじゃないか、と思えてきたり。どうしてこんなことをするんだろう…。レビューが多いとランキングか何かに反映されるのかな?

もしかすると真のレビューが ―― そのアプリをフルボッコした内容があって、それを下のほうに追いやるためにこういうことしてるのかな? と思ってスクロールさせてみたけど、どこまで行っても「無課金で楽しんでます♪」のソレで埋め尽くされていて、結局辿り着けず途中で諦めたり。

ひょっとすると、そもそもアプリですら無いのかもしれないか…。乙女ゲーに見せかけた、個人情報を抜き取るためのプログラムで、インストールして起動しても真っ暗な画面のまま何の反応も見せず、「なんじゃこりゃ」で終わるのかも。しかしその裏では、端末に入った個人情報をごっそりどこかに送信してたりするのかも。こんな胡散臭いレビューで埋め尽くされてるアプリなんて、裏で何やってるかわからんよなと。 *1

何にせよ、こんなもんが堂々と登録されて、しかも放置されてるあたり、Andoroidは色々と終わってるなあ、という気がしてきたり。このへん、Googleお得意の技術的な対策等で解決できるものなんだろうか…。

とりあえず、スマホを持ってる子供達には、「アプリのレビューを眺めて、似たような文章が何度も投稿されてるアプリは、高い確率でヤバイから絶対に手を出すな」ぐらいのことを注意しておいたほうが良いのかも、と思ったり。いや、もしかすると、子供達のほうがこのへんの事情・見極め方については詳しいのかもしれないけど。
*1: ひょっとすると、そもそも Google Play じゃなくて、Google Play に見せかけた詐欺サイトだったりして…? でも、そんなサイト作れるものなんだろうか…。

2013/08/23(金) [n年前の日記]

#1 [prog] チュートリアル動画のフレームレートが間違ってた

チュートリアル動画を仕上げようと思って再生確認していたら、映像がガクガクしていることに気付いたり。調べてみたら、デスクトップキャプチャ動画とソフトで出力した動画のフレームレートが違っていて。なんで気付かなかったんだろう…。

フレームレートがよくわからない。 :

色々調べてるうちに、動画のフレームレートについてよく分からなくなってきたり。一般的なアニメは24コマ/秒で作ってるらしいけど。動画のソレは23.976FPSだそうで。TVゲームのノリでソフトを作って24FPSで出力したらずれていってしまうんだろうか…? なんかこのへん、以前も疑問を持ったような…。

DVD-Videoでは24FPSのものもある、という話や、TV放送用のアレコレと映像コンテンツ自体を売る場合は違う、てな話も見かけた。もしかすると、TV放送用に作るなら23.976FPSや29.97FPSになるけど、そうではないなら24FPSや30FPSで作っておいてもよい、という話なんだろうか…? PC上でしか見ないなら、24FPSでもOK、ってことなのかな。でも、世の中の映像コンテンツは、えてしてTVで表示するよなあ…。わからんなあ…。

アニメーターさんは24FPSで時間に対する感覚が鍛えられてる、という話を聞いた記憶があるけれど。それは、23.976FPSのことなんだろうか…? それとも24FPSのことなんだろうか…? 結局のところ、アニメっぽいソレに合わせて映像を作ろうとした場合、24FPSで作るのか23.976FPSで作るのか、どっちなんだろう…。

2013/08/24() [n年前の日記]

#1 [prog] チュートリアル動画を再度キャプチャ中

キャプチャ動画のフレームレートと、自作ソフトで作成した動画のフレームレートが一致してなかったので、再度キャプチャし直し。今回は極力中間ファイルを作らない方向で作業。

AviUtl + 拡張編集プライグインで動画作成する際に、Root 以外に Scene が選べることに気付いたり。Scene1 や Scene2 でシーン別に作っておいて、Root 上でシーンの追加をしていくことで作成が随分楽になった。

UVダウンサンプリングフィルタを導入。 :

x264で圧縮する場合、YUV420なる色空間にしなきゃいけないらしいのだけど。RGBからそういった色空間に変換した動画を Flash Player上で再生すると、ジャギが出てしまうらしくて。

_mp4動画の再生チェックについて - えむえむでえ
_Aviutlでx264GUIを使用したh264mp4エンコードをする場合の注意点について - えむえむでえ
_ぽぷの実験棟

_UVダウンサンプリングフィルタ を使うことでそのあたりが緩和できると知り、一応導入してみたり。

_うえぽんSW局 | 「UVダウンサンプリング」フィルタ
_うえぽんSW局 | 【AviUtl】「UVダウンサンプリング」フィルタをver1.0.0に更新

2013/08/25() [n年前の日記]

#1 [prog] チュートリアル動画をアップした

YouTube とニコニコ動画に、 _Anime PV Easy Maker ZERO の紹介動画? チュートリアル動画?をアップロードしてみたり。

この日記ページに貼り付けられるかな? :



#2 [prog] FlashDevelopをアップデート

4.0.4 から 4.4.2 に更新。一旦旧版をアンインストールしてから、新版をインストール。

_Haxe も3.0をインストールしてみたり。

2013/08/26(月) [n年前の日記]

#1 [prog][neta] MZ-700の野球拳をAndroidに移植できないかな

ソフトの紹介文だけ妄想してしまったり。
MZ-700 野球拳 for Android

衝撃の問題作!(当時)
期待に○○(ムネ)を膨らませたMZ-700ユーザの心に深い闇を植え付けた伝説のゲームが、
ほぼそのままのテイストで、Androidアプリとして登場!
当時を知る人も知らない人も、全編を貫く悲しみを追体験せよ!
これぞ、元祖泣きゲー!(違う意味で)

Android版の特典として、「RPGモード」「3Dモード」「立体視モード」も追加!
みたいな感じではどうか。どうかと言われても。

あの豪快かつ大胆な見た目を、そのまま忠実に再現すれば、Googleがアプリ削除することもないのでは、と予想するのだけど…。アレですら削除してきたら、それってGoogle社内はアレにもムラムラできちゃう猛者揃いです、と全世界に向けて発信してしまうことになるし。いくらレベルの高いギークが集まってるとは言え、さすがにその域に達したギークは居ないだろう…。というかアレ見て「これはいかんぞ。いかんですぞ」と思った人は、まずはカウンセリング受けたほうがいいよなと。

ただ、権利関係が今現在はどうなっているのか…。ハドソンはどういう形で残ってるのか、それとも残っていないのか、交渉のしようもないのかどうか。そのへん分からないなと。…もっとも、売れる見込みなんて欠片も無いから、どこに企画出しても通るわけないし、交渉しようにもライセンス料なんて払いようもないから門前払いだろうけど。

ソースコードが存在していないのもアレだなあ…。テープから変換したバイナリは手元に残ってたはずだけど、当時のBASICって中間形式で保存されてるから、バイナリからテキストのソースにする変換ツールを作らないといかん気がする。いや、目コピーするほが圧倒的に早いかもしれないか。MZ-700エミュレータで起動してキャプチャしてpng画像にして、とか…。そもそも、当時のフォントデータと今のフォントデータは全然違うから、Android側もテキスト表示であっさりと、なんてわけにもいかんし。

#2 [comic] 「海月と私」(麻生みこと著)を読んだ

妹が以下略。アフタヌーンで連載されてたのか…。

おじさんが好みそうな設定の存在を意識しつつ描いてるあたりに感心を。年齢差のある男女像とか、おじさんを上手に「転がして」しまう頭のいい女性像とか。相変わらず上手いなあ、と。

前作の「路地恋花」でも、年齢差のあるソレが一遍として描かれていたけど。妹曰く、以前の作品の中で使った基本設定をより発展・洗練させて新作にしていく傾向が見える作家さん、とのことで。そのあたり、作り方も上手いのだなと思えてきたり。

#3 [zatta] Firefoxのブックマークをはてブに登録し直し

モノグサしてローカルにだけ溜めてたのだけど、そろそろ移しておかないといかんなと。作業を始めたら結構時間がかかってしまってウンザリ。普段からちょこちょこ移しておけばいいのに…。

#4 [digital] 手持ちのAndroid端末で某アプリが動作せず

_スマホにひそむ危険 疑似体験アプリ|デジタルアーツ株式会社 というアプリが気になって、Lenovo IdeaPad Tablet A1 にインストールしてみたのだけど。起動はするものの、横スクロールで画面が切り替わる際に、スクロールが途中で止まってしまって、画面が2/3程度しか表示されない状態に。

ヘボい端末だから仕方ないのかな…? Android 2.3だし。描画も遅いし。にしても、どうしてこんな不具合が起きるのか、ちょっとよくわからない。

2013/08/27(火) [n年前の日記]

#1 [android] BlueStacks App Playerをインストールしてみたり

PC上でもAndroidアプリを実行できるエミュレータ相当、BlueStacks App Player をインストールしてみたり。

先日、Lenovo IdeaPad Tablet A1 で画面表示がおかしかった、 _スマホにひそむ危険 疑似体験アプリ というソフトを、BlueStacks App Player を使えば実行できたりせんのかなと思って導入してみたのだけど。件のアプリに関しては、起動直後の画面は表示されたものの、ボタン等が一切表示されないわ、カーソルを動かすと画面が真っ暗になるわで、もっと酷い結果になってしまったり。

Adobe AIR もインストールして、 _Bullet Benchmark もインストール・起動してみたのだけど、おそらくは半透明の部分が全部真っ黒、かつ、ボタン部分の画像も真っ黒で。

どうやら、エミュレーターとしてはまだまだ発展途上っぽい。アンインストールすることに。

#2 [zatta][neta] 既存の商品に勝手な紹介文をつけてしまう投稿サービスの類とかどうだろう

映画だのなんだのに、公式の紹介文とはまったく異なる、ユーザ独自視点の珍妙な紹介文をつける・投稿するWebサービス、とか。

匿名掲示板でそういうスレッド立ててカキコしたり、twiiter でつぶやいてれば済みそうな話か…。

2013/08/28(水) [n年前の日記]

#1 [zatta][neta] 蚊帳スーツって作れないものかな

昨晩、部屋の中に蚊が居たので、蚊取り線香をつけたのだけど。こっちがかなりのダメージを食らう結果に。やはり蚊取り線香はヤバイ…。

蚊帳を有効活用することはできのかな、せめてPCと自分だけを蚊帳でガードできたら…。一畳ぐらいの大きさの蚊帳でも十分だよな…。

などと考えてるうちに、そもそも蚊帳を服にすることができればグッドかもと思えてきたり。 でも、関節部分の設計が大変そう。また、どうやって体に固定するのかも悩みどころ。

養蜂では、帽子から網を垂らしたような何かを使ってたりした記憶があるけど。自分がバカ妄想したソレは、養蜂家さんが使うソレの全身版なのだろうなと。

まあ、そういうのを仮に作っても、「動きづらそう」と思われてほとんど使われないだろうけど。

蚊の居る場所を検知するミニレーダー装置とかできないかな。 :

部屋の中に居る虫の位置を検出することができるだけでも、随分違うような気がしてきたり。退治が楽になるんじゃないかと。

空港の管制塔では、おそらくレーダーみたいなのがあって、飛行機の位置が分かったり、UFOをキャッチしたりできるのだろうけど。アレの、部屋内に特化した版とか作れないものかなと。

無理か。小さい虫でも検出できるレーダーなんて、実現できるとは思えないし。例えば Kinect 使って蚊の位置を調べられるかというと精度からして無理だろうし。

蚊の居所を調べるためにレーダーモドキ作りました、てのもちょっとアホっぽいなと思えてきたりもして。他に使い道あるんじゃないのか。…防犯には使えそうだけど。

#2 [javascript] JavaScriptでファイル保存するのってどうやるんだろう

_2012/02/11の記事内 で、 _円錐台の展開図を計算できるページ を公開してたわけだけど。「SVGファイルが保存できない」との報告を頂けたので、原因を調べて修正したり。

_BlobBuilderインターフェースが非推奨となっていた - 人生が二度あれば という記事が参考になった。ファイル保存時に使ってた、BolbBuilder なるものが、今のブラウザでは消滅してるそうで。

_Firefox 13 の後方互換性に関わる修正 | Mozilla Developer Street (modest) の中で、修正のヒントが。
また、Firefox 13 では同時に Blob をコンストラクタとして利用可能になったため、BlobBuilder を使っていたコードは Blob コンストラクタを用いて簡単に書き直せます。例えば次のようにコードを書き換えてください:

// Firefox 12 までのコード
var bb = new MozBlobBuilder();
bb.append("Fire");
bb.append("fox");
var firefox = bb.getBlob();
var fox = firefox.mozSlice(4,7);

// Firefox 13 からのコード
var firefox = new Blob(["Fire", "fox"]);
var fox = firefox.slice(4,7);

なお、MozBlobBuilder はサポート継続されていますが、非推奨となっており将来的に削除される見込みです。Firefox 14 以降では MozBlobBuilder を使用すると Web コンソールに警告が出力されるようになります。Blob.slice() への変更と合わせて Blob コンストラクタへの切り替えをお薦めします。
???BlobBuilder() は使わずに、Blob() を使え、ということらしい。

_ FileとWebの関係をもっと知る: Blob, FileそしてFileSystemAPI - Google ドライブ でも解説されてた。ありがたや。

_forked: テキストをファイルとして保存 File API: Writer - jsdo.it - Share JavaScript, HTML5 and CSS でも、そのものズバリのサンプルが。ありがたや。

_Getting Started - SVG | MDN によると、svgファイルは、
Content-Type: image/svg+xml
でいいらしい。

#3 [anime] はだしのゲンアニメ版を視聴

_8/31までGyaoで無料放送されてるらしい ので、ちょっと見始めてみたのだけど。監督:真崎守、作監:富沢和雄、美術監督:男鹿和雄、音楽:羽田健太郎、制作:マッドハウスって…。スタッフの顔ぶれからして、このアニメ、凄いんじゃないのかと。男鹿和雄氏なんて、「となりのトトロ」の美術監督さんですよ…。

途中で、突然スタジオZ系?の背景動画とか入ってきて驚いたり。機銃掃射カット、原爆投下シーンにも、「おお…」と思ってしまったりして。や、自分は薄いソレだからアレなのだけど。作画マニアの方には、このアニメってどう見えるのだろう…。

_WEBアニメスタイル_アニメの作画を語ろう によると、大橋学氏も参加してたらしいけど…。たしかに、ど根性ガエルみたいなカット・動きがあちこちに。子供達のバイタリティを表現する上ではこれも正解、なのかもしれないなあ…。

原爆投下後の各シーンは、アニメならではの表現が活用されてる印象で、興味深かったり。実写ではこういう雰囲気は出しにくいだろうなと。いや、以前TV放映された実写版も、かなり頑張ってた印象はあるのだけど。絵のほうが、想像力を掻き立てられる分、怖さが伝わりやすいよなと。

主人公の母親と姉が、妙に色っぽい。今だったら、たちまち薄い本が作られそう。などと不謹慎なことをチラリと。そのくらい色気を感じたというか。

城達也のナレーションが、イイ…。城達也の声を再現できる音声合成ソフトとかどこかで出さないかなあ…。

見ているうちに、たしかにこれはPG12ぐらいに設定しといたほうがいいのかも、と思えてきたり。これでもかなりカットされてるらしいので、原作はもっと凄いんだろうなと…。でも、むしろ子供相手ならこのぐらい過激にしておかないと通じないかも、という気も。何せ、カエルの口に爆竹ツッコんで爆発させたり、トンボの羽をむしって遊んだりする年頃だし。

結局最後まで見てしまった。スタッフロールに、川尻善昭氏や梅津泰臣氏の名前が。どこらへんを担当してたのか気になる…。

ページをそのまま開いてたら、はだしのゲン2の再生が始まったのだけど。冒頭のBGMがマクロスそのまんまでちょっと笑った。音楽が羽田健太郎だから当たり前、なのかな。

はだしのゲン2は、キャラデザが随分リアル寄りになってるんだな…。ど根性ガエルっぽい画でシリアスなエピソードを見せたあたりが不評だったのだろうか…。とりあえず、今日は時間が無いので2作目の視聴は諦めることに。

2013/08/29(木) [n年前の日記]

#1 [flash] Flashがゲームパッド(ジョイパッド)に対応したらしいので試してみたり

_ゲームパッドでブラウザゲームが遊べる時代が来た!話題の GameInput API を使ってみよう | ICS LAB という記事を読んで、「…やっときたか!(ガタッ)」てな気分に。

手持ちのコントローラ(デジタルパッド・アナログスティック無し)で試してみたり。 なんだか微妙。モノによっては十字キー検出ができないあたりは痛いなあ…。そこを読み取れなければ、ゲームコントローラを使う意味が無いわけで。ボタンのクリックだけで進むゲームなら、マウスクリックでも充分だし。

Flash開発陣が、ゲームコントローラ対応をここまで避けてきた理由が、なんとなく邪推できそうな気にもなったり。各コントローラへの対応が面倒臭かったのかもしれないなあ…。いや、単純に、必要性に気付いてなかった可能性もありそうだけど。

ただ、この調子でコントローラへの対応がそれなりに進んでいけば、Flash Player の普及率からして、軽いゲームはUnityを使わずFlashで、という展開もありそうなので、今後に期待。

もっとも、Google Chrome や Firefox も、ゲームコントローラに対応とか言い出してた気もするので、もしかすると…。まあ、対応してくれるアレコレが増えるのは単純にありがたい、かもしれず。

HTML5もゲームコントローラに対応してたらしい。 :

_HTML5 GamePad APIについて - haneda point に現状が。

XInput対応パッドじゃないと使えないらしい…。Xbox 360 に対応した規格らしいけど。そんなもん、持ってない…。厳しいな…。

#2 [flash] FLASHのswfをexe化できず

検索した限りでは、swf を exe化したい場合、 _Adobe Flash Player - ダウンロード から入手できる、Flash Player プロジェクターコンテンツデバッガーを ―― flashplayer_*_sa_debug*.exe を使えばよかったらしいのだけど。該当プレイヤーをDL・起動して、swfを開いた後、ファイル → プロジェクターの作成、を選べば、swf の exe化ができたそうで。(過去形)

しかし、今現在、自分の環境では、flashplayer_11_sa_debug.exe をDL・起動してswfを開いても、該当項目がグレーアウトされていて選択できず。

過去にDLした版で確認してみたところ、11.0版まではプロジェクタ作成ができるように見えたけど、11.3版以降はできないみたいで。ちなみに、11.1 や 11.2 はDLしてなかった。失敗した。

どうして「プロジェクターの作成」ができないんだろう…。

現行版はプロジェクタの作成機能をサポートしてないらしい。 :

_Bug#3363321 - [Platform_Windows]Creating a standalone projector from a SWF file is still broken in Flash Player 11.5. にそれっぽい話が。

要するに、Flash Player 11.3 以降は、「プロジェクタの作成」をサポートしてないそうで。どうしても使いたければ、 _Archived Flash Player versions から、11.2より前のバージョンをDLしてどうにかしてくれや、みたいなことになってるらしい…。

11.2 とついてる、いくつかのzipをDLしてみたけど、linux版しか入ってないような…? Windows版は入ってないのかな?

とりあえず、100MB以上のファイルサイズのzipには、Windows版も入ってるっぽい。

この記事へのツッコミ

Re: FLASHのswfをexe化できず by ARATAKU    2018/12/16 20:26
5年も前のものにすみません。
https://fpdownload.macromedia.com/get/flashplayer/installers/archive/fp_11.2.202.228_archive.zip
なら、exeに変換できました。

#3 [flash][prog] Apache Flex 4.10.0 をインストール

恥ずかしながら今頃になって Apache Flex 4.10 が公開されてることを知ったわけで。

_Apache Flex 4.10登場 | マイナビニュース

ということでインストール。

apache-flex-sdk-installer-2.6.0-bin.exe を実行したら、Apache Flex SDK Installer なるソフトがインストールされた。コレを使って、Flex SDK のインストールをするらしい。

とりあえず、C:\flexsdk\4.10.0_air3.8\ というフォルダを作って、その中に Flex SDK をインストールしてみたり。インストール作業は、 _Apache Flex 4.10.0 と軽く戯れる | Developers.IO を参考にさせてもらいました。

FlashDevelop 上でも使えるようにしておく。 _How to configure FlashDevelop for Apache Flex 4.10? | Corangu Web という記事を参考にして作業。

FlashDevelop上の、ツール → 環境設定 → AS3Context → Installed Flex SDKs の右側の参照ボタンを押して、SDKを追加。Path に、先ほどインストールしたSDKのフォルダを指定。自動でバージョン等が設定される。

FlashDevelop → ツール → 環境設定 → FlashViewer → External Player Path に、FlashPlayerDebugger.exe を指定。自分の場合は、Adobeのサイトから flashplayer_11_sa_debug.exe をDL後、FlashPlayerDebugger.exe にリネームして、FlashDevelopのインストールフォルダ\Tools\flexlibs\runtimes\player\11.8\win\FlashPlayerDebugger.exe に置いといたものを指定。

元記事では、ASDoc の設定もしてるっぽい。が、自分はそのへんよく分からなかったので、今回はそのままに。

これで、プロジェクト設定 → SDK で、Apache Flex 4.10.0 〜、を選択できるようになった。

ただ、書き出し設定で、11.7以上の値が指定できず。

_スラtmp FlashDevelop で FlashPlayer 11.6 beta という記事によると、プロジェクトの設定ファイル、.as3proj をエディタで開いて、minorVersion を直接「8」に書き換えるなり、コンパイルオプションを指定するなりすればどうにかなりそうな感じだけれど…。

_Sleepy Design: [Flash] -swf-version meaning によると、Flash Player 11.8 向けは、-swf-version=21 になるらしい。

#4 [nitijyou] 市の健康診断に行ってきた

10:00頃に集会所へ。ちなみに09:00-10:30まで受付。

何故か身長が伸びてた…。髪の毛が伸びてるせいかなと思ったけど、それで3cmも伸びるものかな…?

帰りにヨークベニマルに寄って夕飯の食材等を購入。

#5 [movie] 「るろうに剣心」実写版を視聴

数日前に視聴したことをメモするのを忘れてたのでメモ。随分前にTV放送したソレを、録画したままで消化できてなかったのだけど。ようやく見れた。ちなみに、原作は全くの未見なのですが。アニメ版すら見たことなくて。

結構評判が高かった印象があるのだけど、たしかにこれは、と思えたり。とにかく、アクションシーンが凄い。もし、自分が子供だったら、見終わった直後、チャンバラごっこを絶対にやり始めたはず。そのぐらい、カッコイイ。

たしか大友啓史監督は、ハリウッドで鍛えてきたという経歴の持ち主。とは言え、NHKでドラマを作ってた方なので、別にアクションシーンが得意というわけでもないだろうと。となると、これはアクション監督さんが凄かったのかな、と思えてきたわけで。

_実写版『るろうに剣心』の監督・大友啓史さんにインタビュー! - amobie アモビー を読んで、谷垣健治氏がアクション監督だったと知り、過去の参加作品を調べてみてちょっと驚いたり。「笑う大天使」「カムイ外伝」でアクション監督を担当してたのか…。どちらも評価はボロボロだったらしいけど、おそらく、それらの作品では、実力を発揮できない状況に置かれていたのかなあ、などと邪推したりして。映画マニアの間では評価が高いアクション監督さんらしいけど、この作品で、いい結果が出せて良かったなあ、と。

もちろん、主役の人 ―― 佐藤健氏も凄かったです。ライダー電王でも、龍馬伝でも、「この人の演技、スゲーな…」と思ってたけど。この作品でも、やっぱり凄かった。途中で変な問題等を起こさなければ、日本の映画史・TVドラマ史に名を残すビックな役者さんになりそうだなと。…いや、別に問題起こしても、どうということはないか。「もうパンツ履かない」とか言ってた役者さんだって過去には居たし。もっとも、佐藤健氏が「パンツ履かない」とか言い出したら、全国の女性ファンがあらぬ妄想を始めてしまう予感。…何の話だっけ。

まあ、とにかく、アレもコレも色々と凄かったです。

自分、「凄い」「凄い」しか書いてないな…。まあでも、見た人なら、「うん。凄いよね」と言いそうな気がする。

2013/08/30(金) [n年前の日記]

#1 [haxe] OpenFL等をインストール

Haxeと一緒に使って画像表示等を行う NME というライブラリ?があったのだけど。今現在は OpenFL とやらに変わったらしいので、そのあたりをインストールしてみたり。環境は Windows7 x64。

とりあえず、Haxe 3.0 をインストール。これは先日、FlashDevelop をアップデートした際にインストール済み。 _Download - Haxe から、haxe-3.0.0-win.exe をDL・実行してインストール。自分の場合は、C:\HaxeToolkit\ にインストールした…のだったかな。

OpenFL をインストール。C:\HaxeToolkit\haxe\ でコマンドプロンプトを開いて、以下を実行。
haxelib install openfl
haxelib run openfl setup
他に、後で使うかもしれないライブラリ?もインストールした。
haxelib.exe install actuate
haxelib.exe install createjs
haxelib.exe install jQueryExtern
createjs は、JavaScript でアニメーションを簡単に行えるようにするためのライブラリ、という認識でいいのかな? jQueryExtern は、たぶん jQuery を使えるようにするための何かなのだろうと。

何を入れたのか確認。インストールされたアレコレの一覧が表示される。
haxelib.exe list

この後、もしかすると、やりたいことに合わせて以下を実行する必要もあるのかもしれず。
openfl setup windows
openfl setup android
前者は、Visual Studio 英語版をインストールしようとする。後者は、試してないけど、Android SDK や Android NDK がインストールされるらしい。自分の環境では、以前そのあたりをインストール済みだったらしいので、今回はスキップ。

OpenFL がインストールされたかどうか、動作確認する。適当なフォルダに移動してから、以下を実行。
openfl create DisplayingABitmap
cd DisplayingABitmap
openfl test neko
「openFL」と書かれた画像が表示されたら、動作成功。

openfl create DisplayingABitmap は、DisplayingABitmap という種類のサンプルが入ったフォルダを作る。openfl test neko は、neko を使って実行せよ、と指示を出してるのではないかなと。また、以下のように打てば、flash や html5 を使って画像が表示される。
openfl test flash
openfl test html5

他にも色々なサンプルがあるようで、openfl create と打ち込むと、作れるサンプルの種類がズラズラ表示される模様。
>openfl create
You must specify 'project' or a sample name when using the 'create' command.

Usage:

 openfl create project "com.package.name" "Company Name"
 openfl create extension "ExtensionName"
 openfl create SampleName


Available samples:

 - ActuateExample
 - AddingAnimation
 - AddingText
 - DisplayingABitmap
 - HandlingKeyboardEvents
 - HandlingMouseEvents
 - HerokuShaders
 - openfl-samples
 - PiratePig
 - PlayingSound
 - SimpleBox2D
 - SimpleOpenGLView

FlashDevelop 上で OpenFL を使ってみよう、と思ったけれど、新規プロジェクト作成時に OpenFL Project が選択肢として出てこなくて。調べてみたら、正式公開版の FlashDevelop 4.4.2 ではまだ対応してなくて、4.4.3開発版からの対応になるっぽい。

_FlashDevelop.org - View topic - Latest development build of FlashDevelop 4

とりあえず、4.4.3開発版をインストール。新規プロジェクト作成時に、OpenFL Project が出てくるようになった。

Haxe + createjs とやらも試してみたり。 :

巷のサンプルを動かそうとしたのだけど、ちとハマった。Haxe 3.0 は Haxe 2.* と若干仕様が変わったようで。
  • js.Lib.document や js.Lib.window は、js.Browser.document や js.Browser.window に変わっている。
  • 解説ページによっては、コンパイラ?に --js-modern オプションを渡せ、と記述があるけど、それは Haxe 2.* 用。Haxe 3.0 ではデフォルトで有効になっているから指定する必要無し。逆に、Haxe 3.0 で昔風のチェックをしたい場合、--js-classic を指定するらしい。

とりあえず、巷のサンプルを、コピペ&修正して、以下のような感じになった。マウスクリックした場所に、赤丸が飛んでくるサンプル。

src/helloworld/Main.hx
package helloworld;

import createjs.tweenjs.Ease;
import createjs.easeljs.Ticker;
import createjs.tweenjs.Tween;
import createjs.easeljs.Stage;
import createjs.easeljs.Shape;
import js.Browser;

class Main
{
    private static var _shape:Shape;
    private static var _stage:Stage;

    public static function main():Void
    {
        Ticker.useRAF = true;
        Ticker.setFPS(60);

        _stage = new Stage(cast Browser.document.getElementById("c"));
        _stage.onMouseUp = stageClickHandler;

        _shape = new Shape();
        _shape.graphics.beginFill("#FF0000");
        _shape.graphics.drawCircle(20, 20, 20);
        _shape.graphics.endFill();
        _stage.addChild(_shape);

        Ticker.addListener(tickHandler);
    }

    private static function tickHandler():Void
    {
        _stage.update();
    }

    private static function stageClickHandler():Void
    {
        Tween.removeTweens(_shape);
        Tween.get(_shape).to({x:_stage.mouseX - 20, y:_stage.mouseY - 20}, 1000, Ease.elasticOut);
    }
}

bin/index.html
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=720">
    <meta charset="UTF-8">
    <title>Simple</title>
    <script src="http://code.createjs.com/easeljs-0.5.0.min.js"></script>
    <script src="http://code.createjs.com/tweenjs-0.3.0.min.js"></script>
    <script src="http://code.createjs.com/movieclip-0.5.0.min.js"></script>
    <script src="http://code.createjs.com/preloadjs-0.2.0.min.js"></script>
    <style type="text/css">
        body {margin: 0; padding: 0; background-color: #D4D4D4; }
        canvas { margin: 0; padding: 0; background-color: #FFFFFF; }
    </style>
</head>
<body>
<canvas id="c" width="500" height="500"></canvas>
<script src="haxejshelloworld.js"></script>
</body>
</html>

プロジェクト設定で、書き出し先を bin\haxejshelloworld.js にして。コンパイラ設定の Libraries に、createjs を追加。

参考ページ。 :


2013/08/31() [n年前の日記]

#1 [haxe] Haxe+OpenFLでハマった

Haxe + OpenFL で、svg 表示ができるかどうかが気になって試していたのだけど、ハマってしまったり。全然すんなり行かない…。

結論から言うと、svgの内容によっては、一応表示できなくもない感じ。ただし、いくつか注意点がありそう。 要するに、HTML5用に出力すると、ハマります。svgをブラウザで直接開くと、まともに表示されるので、svgがおかしいというわけではないのだろうけど…。

ちなみに、Inkscape で svg を作ってたのだけど。その場合、以下の点に注意して作業・保存したほうが良いかもしれず。 とにかく一発で表示できず、何度も修正・保存形式を変えて試してみる羽目に。どう考えても、ビットマップ化して表示したほうが、余計なトラブルに遭遇せずに済みそう…。

Haxe + OpenFL上で、svg表示を可能にするライブラリ?は、gm2d/svg と haxenme/svg の2種類があるようで。前者を試したらエラーが出て解決できなかったので、後者で試した。

haxelib.exe を使って、いくつかライブラリをインストールする必要あり。
haxelib.exe install format
haxelib.exe install svg
haxelib.exe install swf
最後のは要らないかもしれないけど、念のため入れてみたり。

application.xml
<?xml version="1.0" encoding="utf-8"?>
<project>
    <!-- NMML reference: https://gist.github.com/1763850 -->
    
    <!-- metadata, make sure 'package' is at least 3 segments (ie. com.mycompany.myproject) -->
    <meta title="haxe_openfl_svg_disp_test" package="haxeopenflsvgdisptest" version="1.0.0" company="mieki256" />
    
    <!-- output -->
    <app main="Main" file="haxeopenflsvgdisptest" path="bin" />
    
    <window background="#FFFFFF" fps="60" />
    <window width="640" height="360" unless="mobile" />
    <window orientation="landscape" vsync="false" antialiasing="4" if="cpp" />
    
    <!-- classpath, haxe libs -->
    <source path="src" />
    <!--
    <haxelib name="gm2d" />
    -->
    <haxelib name="format" />
    <haxelib name="svg" />
    <haxelib name="openfl" />
    <haxelib name="actuate" />
    
    <!-- assets -->
    <icon path="assets/openfl.svg" />
    <assets path="assets/img" rename="img" />
    
    <!-- optimize output
    <haxeflag name="-dce full" /> -->
    
</project>

Main.hx
package ;

import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.Lib;
import openfl.Assets;

import format.SVG;

//import gm2d.svg.Svg;
//import gm2d.reso.Resources;
//import gm2d.svg.SvgRenderer;

/**
 * SVG display test. use haxenme/svg
 * @author mieki256
 */

class Main extends Sprite 
{
    var inited:Bool;
    var bg:Sprite;
    var count:Int;

    /* ENTRY POINT */
    
    function resize(e) 
    {
        if (!inited) init();
        // else (resize or orientation change)
    }
    
    function init() 
    {
        if (inited) return;
        inited = true;

        // (your code here)
        
        // Stage:
        // stage.stageWidth x stage.stageHeight @ stage.dpiScale
        
        // Assets:
        // nme.Assets.getBitmapData("img/assetname.jpg");

        // svg setting
        var svg = new SVG(Assets.getText("img/bg.svg"));
        var shape = new Shape();
        svg.render(shape.graphics);
        shape.cacheAsBitmap = true;
        
        //var svg = new SvgRenderer(Resources.loadSvg("img/bg.svg"));
        //var shape = svg.createShape();
        //shape.cacheAsBitmap = true;
        
        bg = new Sprite();
        this.addChild(bg);
        bg.addChild(shape);
        shape.x = -320;
        shape.y = -180;
        bg.x = 320;
        bg.y = 180;
        
        this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
        count = 0;
    }
    
    private function onEnterFrame(e:Event):Void
    {
        //bg.rotation = 20 * Math.cos((count * 4) * Math.PI / 180.0);
        count++;
    }

    /* SETUP */

    public function new() 
    {
        super();    
        addEventListener(Event.ADDED_TO_STAGE, added);
    }

    function added(e) 
    {
        removeEventListener(Event.ADDED_TO_STAGE, added);
        stage.addEventListener(Event.RESIZE, resize);
        #if ios
        haxe.Timer.delay(init, 100); // iOS 6
        #else
        init();
        #end
    }
    
    public static function main() 
    {
        // static entry point
        Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT;
        Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;
        Lib.current.addChild(new Main());
    }
}

以下の3行が肝心の部分、なのかな。
        var svg = new SVG(Assets.getText("img/bg.svg"));
        var shape = new Shape();
        svg.render(shape.graphics);

SVG表示の不具合について。 :

以下の画像のような感じになる。

グラデーションの色がおかしくなる件。

Flash ... OK。
Haxe + OpenFL + Flash

Neko ... OK。
Haxe + OpenFL + Neko

HTML5 ... NG。色がおかしい。
Haxe + OpenFL + HTML5


ストロークが入っていると表示がおかしくなる件。

Flash ... OK。
Haxe + OpenFL + Flash

Neko ... OK。
Haxe + OpenFL + Neko

HTML5 ... NG。ストロークが無いはずの部分にまでストロークがついている。
Haxe + OpenFL + HTML5

マウス座標の取得でハマったり。 :

画像を表示してマウスカーソルを追いかける、という処理を試しに書いていたのだけど。 Flash や Neko上ではすんなりと正常動作したものの、HTML5上ではうんともすんとも反応しなくてハマったり。

Spriteのプロパティ値を疑って、半日ほどアレコレ試していたけど。そこではなくて、マウス座標がそもそも取得できてない場面があったのが原因だった。undefined だか NaN だかの値をマウス座標として得てしまった際に、Sprite の x座標にもその値が入ってしまって、その後も、その計算不能な値を使って計算しようとするから、ずっと計算できずにピクリとも動かなくなっていた。

Main.hx
package ;

import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.Lib;
import flash.text.TextField;
import openfl.Assets;

/**
 * OpenFLテスト。マウスカーソルを画像が追いかける。
 * @author mieki256
 */

class Main extends Sprite 
{
    var inited:Bool;
    var spr:Sprite;
    var bmp:Bitmap;
    var tf:TextField;
    var mousex:Float;
    var mousey:Float;

    /* ENTRY POINT */
    
    function resize(e) 
    {
        if (!inited) init();
        // else (resize or orientation change)
    }

    /**
     * 初期化処理
     */
    function init() 
    {
        if (inited) return;
        inited = true;

        mousex = 320;
        mousey = 180;
        
        // 画像を描画
        spr = new Sprite();
        bmp = new Bitmap(Assets.getBitmapData("img/chara.png"));
        bmp.x = - bmp.width / 2;
        bmp.y = - bmp.height / 2;
        spr.addChild(bmp);
        Lib.current.addChild(spr);
        
        // 文字列を描画
        tf = new TextField();
        tf.selectable = false;
        tf.width = 640;
        tf.height = 48;
        tf.textColor = 0x333333;
        tf.text = "start";
        Lib.current.addChild(tf);

        // ステージ上でマウスが動いた際のイベントを登録
        Lib.current.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        
        // 毎フレームの処理を登録
        this.addEventListener(Event.ENTER_FRAME, mainUpdate);
    }
    
    /**
     * マウスカーソルが動いた時の処理
     * @param   event
     */
    function onMouseMove(event:MouseEvent):Void
    {
        mousex = event.stageX;
        mousey = event.stageY;
    }
    
    /**
     * メインループ部分相当
     * @param   e
     */
    private function mainUpdate(e:Event):Void
    {
        var mx:Float;
        var my:Float;

        // マウス座標を取得
        switch (1) {
            case 0:
                // html5上でも動く。
                mx = mouseX;
                my = mouseY;
            case 1:
                // html5上でも動く。
                mx = mousex;
                my = mousey;
            default:
                // html5上では動かない。Flash や Neko では動く。
                mx = Lib.current.stage.mouseX;
                my = Lib.current.stage.mouseY;
        }

        // キャラクタ画像が、マウスカーソルを追いかける処理
        var spd:Float = 0.04;
        var dx:Float = (mx - spr.x) * spd;
        var dy:Float = (my - spr.y) * spd;
        spr.x = spr.x + dx;
        spr.y = spr.y + dy;
        
        tf.text = 'mouse x,y = $mx, $my';
        //tf.text = 'spr x,y = ${spr.x}, ${spr.y}';
    }
    
    /* SETUP */

    public function new() 
    {
        super();    
        addEventListener(Event.ADDED_TO_STAGE, added);
    }

    function added(e) 
    {
        removeEventListener(Event.ADDED_TO_STAGE, added);
        stage.addEventListener(Event.RESIZE, resize);
        #if ios
        haxe.Timer.delay(init, 100); // iOS 6
        #else
        init();
        #end
    }

    public static function main() 
    {
        // static entry point
        Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT;
        Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;
        Lib.current.addChild(new Main());
    }
}

以上、31 日分です。

過去ログ表示

Prev - 2013/08 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project