カテゴリー
Uncategorized

ロスト・イン・トランスレーションに見る、ダメな通訳

いささか旧作なのですが、以前、ロスト・イン・トランスレーション、という映画がありました。そこで、主人公のボブ・ハリスがCMに出演するときに、監督が通訳を介してボブ・ハリスとコミュニケーションを取るシーンがあります。(以下のビデオ、準公式のものですが、地域制限で見られないかも。その場合は、「Lost in Translation Suntory Time」みたいな検索語で検索してみてください。)

もちろんこれはコメディですので、かなり極端な作り込みをしているかと思いますが、面白く感じたので、この通訳がなぜダメかを書いていきたいと思います。

以下、そのシーンを文字に起こしてみたものです。(英文部分は原文のニュアンスを正確に捉えるため、直訳寄りにしてあります。)

監督:そして、テーブルの上にはサントリーウイスキーがあります。わかりますね? 感情を込めて、ゆっくりと、カメラを見て
優しく、そして、あなたの古い友だちに会うように、言ってください。カサブランカのボギーのように、君の瞳に乾杯。サントリータイム

通訳:Uh, he wants you to turn, look in camera. OK? (彼は振り返ってカメラを見てほしいと言っています。よろしいですか?)

ボブ:That’s all he said? (それが、彼が言った全部のこと?)

通訳:Yes. Turn to camera. (はい、カメラを見てください。)

ボブ:Alright, does he want me to… to turn from the right, or turn from the left? (了解です。私が右から振り向く、それとも、左から振り向く、どちらが彼の希望ですか?)

通訳:あ、彼の方はもう準備ができてます。それで、あの、スタートがかかったときに、あの、カメラの方に振り向くときに、
左から振り向けばいいのか、右から振り向けばいいのか、そのへんのところはいかがなさいましょうかということなんですけども……。

監督:どっちだっていいんだよ、もぅ、関係ないんだからそんなもの、時間がないんだよ、ボブさん。ね、だから、もう早く、あなた、テンション上げて、カメラ見て、カメラ目線で、ゆっくりと、ね、パッションと、カメラ目にはパッションだよ。わかった?

通訳:Right side, and with intensity, OK? (右から、強めに。)

ボブ:Is that everything? It seems like he said quite a bit more than that. (それで全部ですか? 彼はもっといろいろ言っているような気がするのですが。)

監督:あなたの、あなたの言ってることはウイスキーのことだけじゃないんだから、わかる? 古い友だちに会うように。優しく、ジェントリーにね。そして心から湧き上がってくる、テンション。これ忘れちゃだめだよ。

通訳:Like old friend, and into the camera. (古い友だちのように、カメラを見て。)

ボブ(当惑しながらも):Okay.

監督:わかった? あなたはウイスキーを愛してます。イッツサントリータイム。OK?

ボブ:Okay.

監督:OK?

~撮影~

監督:カット、カットカットカットカット! ほんとあんたわかってるの、とぼけちゃって? これ、サントリーの響だよ。高いんだから、サントリーの中で一番。もう、もっと高級な気持ちで。ね。日常的なお酒じゃないんだよ。

通訳:Could you do it a… (これをもっと)

監督:最高の気持ちで……。

通訳:More… intensity! (強めに……。)

監督:サントリータイム

ダメ出ししてみる

ダメな部分その1:まともに訳せてない

通訳で要約通訳を頼まれるシーンというのはないことはないのですが、恐らくこのような場合ではないかと思います。(そもそもかなり特殊な例で、会話の感じを掴んでおきたい、というような場合に非公式な形で頼まれることがほとんど。)

実際に要約通訳だとしても、これはさすがに端折りすぎです。

ですので、この場合、監督が言っていることは全て訳して伝える必要があります。はい、監督がボブに向かって「ほんとあんたわかってるの、とぼけちゃって?」と言っているのも、これも伝える必要があります。通訳の仕事は話者間のコミュニケーションを伝えることであって、干渉することではないのです。

ダメな部分その2:まともに打ち合わせできてない

多分、この場合、監督と通訳の間でほとんどまともな打ち合わせができていないのではないかと予想できます。基本的には事前に趣旨で、どのような内容なのか、またこのような場合はどういう要望をするのかを事前に通訳者と話し合う必要があります。特にこのような人物のように、抽象的な物言いをする場合、事前の打ち合わせはかなり綿密に行う必要があるでしょう。事前に打ち合わせがあれば、「More intensity」と端折る以上の通訳ができたと思います。

ダメな部分その3:一人称で話してない

例えば「He wants you to turn…」というような部分。通訳は一人称で話します。ですので、この場合、監督の発言は一人称で「I want you to……」というように伝えます。

ダメな部分その4:言っていないことを伝えている

「カメラの方に振り向くときに、左から振り向けばいいのか、右から振り向けばいいのか、そのへんのところはいかがなさいましょうかということなんですけども……。」の部分、これは実はこの全体の通訳の中で唯一まともな部分です。ちゃんとボブの発言を汲み取って伝えています。(一人称になっていないのは別として。)

まずいのはその前の部分。

「あ、彼の方はもう準備ができてます。」

ボブはそんな発言をしていません。ボブが「Yes, I’m ready」と言ったのであれば「私は準備はできています」と言っていいですが、そんなことも言っていないので、言っていないことを勝手に付け加える、通訳として一番まずい行為の一つです。

最後に

前述したように、これはコメディなのでかなり極端な例であるかと思います。ただ、注意しないといけないことは、この監督のように曖昧な形で発言すると、通訳後の結果も曖昧になります。ですので、通訳を通す場合は、抽象的な発言ではなくて、より明確に言う必要があります。

尚、乱暴な発言をすると優秀な通訳ほど、その乱暴な発言が伝わってしまうことになります。ですので、発言には気をつけるようにしましょう。

カテゴリー
Uncategorized

HSSingLog / SING4DATASCIENCEプレイリスト

HSSingLog / SING4DATASCIENCEではSpotifyとYouTubeのプレイリストを公開しています。それぞれ歌評に埋め込んだ楽曲をまとめたものになりますが連続して聴くことが可能です。

  • 全てのコンテンツは合法的に収録されたもののみをピックアップしています。
  • 一部の例外を除き、基本的にカバーは収録していません。

楽曲は随時更新していきます。

YouTube

以下の埋め込みより順番に再生されます。もしくはプレイリストへのリンクをご利用下さい。尚、ミュージックビデオが存在する場合はビデオ→楽曲の順に登録してあります。コンテンツによってはYouTube Premiumへの加入が必要かもしれません。

Spotify

以下より再生可能です。プレイリストへのリンクも使用できます。尚、フルコーラス再生にはSpotifyの加入が必要になります。

カテゴリー
プログラミング 開発 PowerShell Uncategorized 技術

PowerShell Core + イベント管理

これまで2002年より、Sakura-Conのゲストリレーションでスタッフをするにあたり、数々の技術を使用し、イベント計画などを立ててきました。過去には、Org-modeや小型のPythonスクリプトなどを使用してきましたが、今年は、PowerShell Coreを使用し、システムを構築しました。これまでに、PowerShellを使用して、多岐にわたるシステムを構築し、例えばカラオケ歌唱データの集計などがその一例で、他の領域での使用も検討していました。

目的

今回の目的としては、中核的なソリューションとして次を検討しました。

  • イベントスケジュールデータの集計と、可用性を高めたデータの作成。
  • カレンダーデータなどへの他の有用なデータ形式への変換の提供。

PowerShell Coreを選択した理由は以下のような理由からです。

  • LinuxとWindowsを使用している関係上、複数のプラットフォームで動作できる環境が重要でした。Androidで動けばなおプラスですが、この点に関してはUserLAndなどの環境を使用することで可能でした。(尚、Androidで使用する場合は、このようなキーボードの使用がおすすめです。
  • オフラインで使用可能なこと。イベント会場などではインターネット接続が劣悪になることがあり、インターネット接続なしでも使用できることが重要でした。

構成と内容

最初に作成したモジュールはスケジュールシステムより、データを取得するためのシステムでした。スケジュールシステムは、データを取得するためのAPIを持っておらず、この部分に関してはSeleniumを使用し、データを抽出しました。

Seleniumを使用したデータの抽出(守秘事項のため、使用しているソリューション名に関しては伏せてあります。)

Seleniumを使用してデータを取得するのには800件のエントリーで約30秒を要します。(実際に使用するデータはその8分の1程度。)SeleniumモジュールにおいてはUI上で必要な情報が存在している場所まで移動し、結果をDOMより抽出するようなものです。これはC#でプログラムしました。SeleniumはLinuxとWindowsでドライバが提供されているため、これはクロスプラットフォーム動作が可能です。(こちらは、Androidでは動きませんが、Androidで動作するドライバと対応するブラウザがあれば恐らく可能です。)

このシステムは以下のようなデータ構造を列として出力します。

   TypeName: SakuraCon.Relations.Data.Event
Name        MemberType     Definition
----        ----------     ----------
End Time    AliasProperty  End Time = EndTime
Event Title AliasProperty  Event Title = EventTitle
Start Time  AliasProperty  Start Time = StartTime
Equals      Method         bool Equals(System.Object obj)
GetHashCode Method         int GetHashCode()
GetType     Method         type GetType()
ToString    Method         string ToString()
EndTime     Property       datetime EndTime {get;set;}
EventId     Property       string EventId {get;set;}
EventTitle  Property       string EventTitle {get;set;}
Notes       Property       string Notes {get;set;}
Rating      Property       string Rating {get;set;}
StartTime   Property       datetime StartTime {get;set;}
Type        Property       string Type {get;set;}
Venue       Property       string Venue {get;set;}
Duration    ScriptProperty System.Object Duration {get=($this.EndTime - $this.StartTime);}

これに加え、以下のようなps1xmlを定義しました。

<Types>
    <Type>
        <Name>SakuraCon.Relations.Data.Event</Name>
        <Members>
            <MemberSet>
                <Name>PSStandardMembers</Name>
                <Members>
                    <PropertySet>
                        <Name>DefaultDisplayPropertySet</Name>
                        <ReferencedProperties>
                            <Name>Event Title</Name>
                            <Name>Venue</Name>
                            <Name>Type</Name>
                            <Name>Start Time</Name>
                            <Name>End Time</Name>
                            <Name>Duration</Name>
                            <Name>Notes</Name>
                        </ReferencedProperties>
                    </PropertySet>
                </Members>
            </MemberSet>
            <AliasProperty>
                <Name>Event Title</Name>
                <ReferencedMemberName>EventTitle</ReferencedMemberName>
            </AliasProperty>
            <AliasProperty>
                <Name>Start Time</Name>
                <ReferencedMemberName>StartTime</ReferencedMemberName>
            </AliasProperty>
            <AliasProperty>
                <Name>End Time</Name>
                <ReferencedMemberName>EndTime</ReferencedMemberName>
            </AliasProperty>
            <ScriptProperty>
                <Name>Duration</Name>
                <GetScriptBlock>($this.EndTime - $this.StartTime)</GetScriptBlock>
            </ScriptProperty>
        </Members>
    </Type>
</Types>

実際の運用では、このデータをClixmlとして出力し、後ほど読み込めるようにします。PowerShellではこれを可能にする便利なCmdletが用意されています。

$schedule | Export-Clixml schedule.xml

これを読み込むのも容易です。

$schedule = Import-Clixml schedule.xml

これにより、出力されたXMLは取得したデータのスナップショットになるので、オフラインでのアクセスが可能になります。

このデータをもとに、CSV (スケジュール情報等を集計するのに使用) する他、iCalendarなどのフォーマットを出力し、Google Calendarに入力することが可能になります。

このデータ構造により、Where-Objectを使用することにより、必要な情報を取り出すことができるようになります。例えば、「6C」で行われるイベントを知りたい場合は以下のようになります。

$schedule | ?{ $_.Venue -eq "6C" }

これに加え、以下のようなスクリプトを組み合わせました。

function Get-ScNextEvent {
    param(
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        $Schedule,
        [parameter(Mandatory = $false)]
        [uint] $Hour = 1
    )
    $result = $Schedule | Where-Object { ($_.StartTime -ge [DateTime]::Now) -and ($_.EndTime -le [DateTime]::Now.AddHours($Hour))}

    return ($result | Sort-Object StartTime)
}

function Get-ScCurrentEvent {
    param(
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        $Schedule
    )
    $result = $Schedule | Where-Object { ($_.StartTime -ge [DateTime]::Now) -and ($_.EndTime -le [DateTime]::Now)}

    return ($result | Sort-Object StartTime)
}

これにより、次のイベントや、現在進行中のイベントに関する情報を検索することができます。

他の分野でのPowerShell Coreの使用

PowerShell Core`はスケジュール管理以外の分野でも使用しました。他の部分で使用したのは定形文書を生成する管理システムです。ほとんどの定型文書はLaTeXソースとして生成されているため、コマンドラインより、パーソナライズされた情報を読み込む形式になっています。PowerShellはCSVをデータ構造に変換する仕組みを持っているため、必要な引数はCSVでまとめました。

Windowsでのコマンドラインの文字列の扱いには難があるため、これをWindowsで実行する場合にはWindows Subsystem for Linux (WSL)を使用する必要がありましたが、PowerShell CoreはLinuxでも動作するため、同じモジュールやスクリプトをそのまま使用することが可能でした。

これにより、20通を30秒程度で生成できます。

まとめ

PowerShell Coreにより、クロスプラットフォームな、一貫した環境をリレーション部内で使用する必要のある一部の情報の処理で使用しました。

今後はこのシステムを拡張し、スケジュールの競合探知、負荷確認や人員管理などにも適用できるようにしていく予定です。

カテゴリー
Uncategorized

なぜInboxよりもGmailが使いやすいか

ここ半年ほどInboxを使ってきましたが、Gmailの方が使いやすいな、と感じる部分がいくつか。ちょっとまとめてみる。

Inboxでの利点

Inboxのナビゲーション自体は良く出来ていて、全体的には使いやすいと感じる。添付ファイルなどが入っているとそれが大きく表示されるし、また全体的に使っていてより楽しいのがInbox。

処理的にもかなり意欲的な出来であり、メールの扱いのやり方を変えよう、という発想があるのは面白い。

短所と感じる部分

でも使っていて、使いにくいと感じる部分も多い。ほとんどがGmailで出来て、Inboxで出来ないことなので、かなり惜しく感じてしまう。

アドレスごとの署名管理がない

InboxではGmailと同じように複数のメールアドレスを管理できるのだが、Inboxには他のアドレスを使用した場合に、署名を切り替えることができなくなっている。コンベンション用など使い分けているのでこれができないのは非常に致命的。

HTML形式がデフォルトで変更できない

Inboxは送信メールはHTML形式がデフォルトであり、切り替えることができない。Gmailにはテキストメールへの切り替えができるようになっている。妙なメタデータが紛れ込んだりするので、できるだけHTMLは送信しないようにしているのでこれはかなり不便だったりする。

ソース表示ができない

これは多分99%の人には関係ないのだろうけど……。Gmailのメールはソースを見ることができないので、ヘッダの確認などをすることができない。微妙なメールが届いた時にざっと確認する場合もあるので、是非欲しいところなんだが。

変更ができない言語に依存した返信ヘッダ

これも煩わしい問題。Gmailで返信をすると次のようなヘッダが追加される。

2016-02-17 13:26 GMT-08:00 John Doe <johndoe@example.com>:

これをInboxですると次のような感じになる。

2016年2月17日(水) 13:26 John Doe <johndoe@example.com>:

なぜGmailの方が優れているかというと、受取人の言語に依存しないから。受け取る人が日本人であろうと、あメリカ人であろうと全く問題がない、言語非依存の形式お使用しているのがGmail。Inboxの場合、日本人しか読めない。せめて形式を指定できればいいのだが。

まとめ

上記を書いた後に考えると、恐らくInboxが想定しているのは読むのが主で、カジュアルなユーザーなのかな、と。Gmailにある機能がInboxに入るかその逆があればすごいいいと思うのだが……。

カテゴリー
ソフトウェア Uncategorized 技術

Google Chrome、Linux下での速度問題のまとめと回避方法

(2016年2月22日更新)この問題を修正する変更が開発者により行われ、すでにソースコードに取り込まれています。この変更が実際のリリースに適応されるのにはしばらく時間がかかりますが、近いうちに修正が入るものと思われます。

最近のGoogle Chromeに、すでに何件か報告されている問題で最近原因が解明されたものがあり、その問題と取り敢えずの対処法に関してまとめます。

どういう問題なのか

Google Chromeのアドレスバー(Omnibox)の入力レスポンスがものすごく遅くなります。スペックにもよりますが、具体的には一文字入れるとそれが出てくるまでに数秒を要する、といった具合です。極端な場合には多大な遅延のせいで、入力される文字の順番が入れ替わってしまう場合もあります。(例えば、google.comと入力したつもりがgogole.cmoとなるなど)

また、インターフェース自体の再描画も全体的にもっさりとするため、メニューを開くのに遅延が出るなどの問題が発生し、全体的にGoogle Chromeメインプロセスが消費するCPUが高くなる傾向にあります。

原因は?

バグが報告されていたものの最近までその原因は特定はされていませんでした。1月6日にChromiumプロジェクトのKochi氏がこの問題がフォントのキャッシュがフォントのフォントファミリー名による参照によりキャッシュされていないとみなされ、再キャッシュプロセスが発生してしまうのが原因で発生しているということが報告されました。

つまり、まとめると以下のようになります。(Kochi氏が指摘する源ノ角ゴシック JPを使用した場合)

  • Google Chromeが源ノ角ゴシック JPを使用してフォントをレンダリングしようとする
  • Google Chromeが源ノ角ゴシック JPを使用しようと、そのフォントファミリー名のSource Han Sans JPで参照しようとするが、キャッシュされていないと見做し、キャッシュ動作(非常に重い)が発生する

というようなプロセスが発生し、これが一文字入力されるごとに発生していた、という問題のようです。

尚、上記に併せ、同氏によりコードの修正レビューが提出されていますが、すでにこの修正を含む、書き換え自体が予定されていることもあるようで、パッチとしての適応はされないようです。そのため、根本的な解決にはしばらく時間を要すると予想されます。

回避策

根本的な解決はコードに対処が入るまで行わられないものの、取り敢えず回避することは可能です。基本的にフォントのファミリー名が問題にならないフォントを使用すればいいわけです。尚、こちらで実験したところ、IPAフォントとその亜種ではこの問題が発生してしまうようです。(日本語環境ではこれらが指定されていることも多いでしょうから、この問題にあたってしまう人も多いかもしれません。)

回避方法

前述のように、この問題の影響の受けないフォントに置きかえてやるのが回避する方法になります。Gnomeを使用している場合、gnome-tweak-toolを使用し、UIが使用するフォントを問題のないものに置きかえる必要があります。gnome-tweak-toolは標準ではインストールされていないので別途インストールが必要です。

KDEの場合kde-config-gtk-styleをインストールした上で、外観設定の中のGTK設定のフォントを変えることで対応できます。

KDE GTK Config

フォント設定を例えば、Noto Sans CJK JPなどに置き換えることで対応可能です。

フォント設定

この変更を行い、右下の適応ボタンを押すことで変更が保存されます。尚、Google Chromeに対し、この変更を有効にするためには変更した後に、Google Chromeを再起動する必要があります。

カテゴリー
Uncategorized

写真

wpid-IMG_20140126_115325.jpg

wpid-IMG_20140126_115711.jpg

wpid-IMG_20140126_120924.jpg

wpid-IMG_20140126_120929.jpg

wpid-IMG_20140126_122353.jpg

wpid-IMG_20140126_122403.jpg

wpid-IMG_20140126_122337

wpid-IMG_20140126_124604.jpg

カテゴリー
Uncategorized

あけましておめでとうございます

あけましておめでとうございます。こちらではまだあけていませんが。

今回も紅白の同時放送を見ていました。去年はGoogle+のコミュニティを使用して独り言などを流していましたが、今年はHidekiBinを使用しました。
当該ペーストは一年で消えますので、PDF版も保全。
第64回紅白歌合戦視聴ログで見られます。(ChromeのPDF保存機能が便利。)

カテゴリー
Uncategorized

Steamアップデーターの文字化け

SteamのLinux版、更新ダイアログが文字化けするのが少し気になる。もっとも文字化けしているのはアップデータと一部ゲーム(Portalなど……ただ、こちらはBetaなので)で使う分にはあまり問題ないけど。
Screenshot_from_2013-05-31 20:51:26

カテゴリー
Uncategorized

自営WordPressでのアクティビティ

最近、自営Wordpressのアクティビティを上げているのは各種ソーシャルサイトのポリシーに対するヘッジもあるのだがJetpackなどの機能が充実してきているのと、APIを使用するモバイルクライアントの出来がなかなかいいのが大きな理由でもある。

カテゴリー
Uncategorized

アップルストアで自家製Emacsを試してみた

wpid-Screen-Shot-2013-04-13-at-8.42.54-PM1

自家製ビルドをアップルストアでも試してみた。というか、Minecraftとかがダウンロードフォルダに入ってたし、結構自由にやっている人がいるのね。