2017年03月12日

ソース ファイルの英訳と WHITE SQUARE エンコーディング判定法

vbslib の Translate コマンドは、日本語と英語のペアが書かれた翻訳ファイル(XML)を使って、ソース ファイルやテキスト ファイルの翻訳(置き換え)を行います。

vbslib は、以下からダウンロードできます。 Windows 用です。
http://vbslib.osdn.jp/
http://www.sage-p.com/vbslib/vbslib/vbslib.htm
https://github.com/TsNeko/vbslib

翻訳ファイルは、以下のように記述します。複数行の翻訳もできます(説明書を参照)。

<?xml version="1.0" encoding="Shift_JIS"?>
<Translate>
<File>sample.txt</File>
<T><JP>日本語</JP><EN>Japanese</EN></T>
<T><JP>英語</JP>
<EN>English</EN></T>
</Translate>

TranslateTest コマンドを実行すると、2バイト文字がすべて英語に翻訳されたかどうかをチェックします。 実際の翻訳は行いません。 2バイト文字が残っている行番号を表示します。 また、翻訳ファイルには、翻訳を行った行番号が追加されます。 翻訳されなかったときは、行番号 0 になります。これは翻訳ファイルから削除するきっかけになります。

ソース ファイルに英語と日本語を書いて、海外に渡すときは日本語をカットする方法もありますが、これには問題があります。 それは、英語か日本語の片方だけ変更してしまうという問題です。 翻訳ファイルを使った置き換えによる翻訳であれば、ソース ファイルに書かれた日本語だけ変更したときは英訳に置き換わらなくなるので、英語と日本語の内容が同じであることを維持しやすくなります。

CheckEnglishOnly コマンドでは、2バイト文字が含まれていないことを指定したフォルダーの中のすべてのファイルについてチェックします。 最終チェックに使うとよいでしょう。

ただ、日本人なら、プログラムのソース コードのコメントには、日本語で書くべきです。 英語の勉強も大事ですが、日本語で書いてあるほうが理解が早く効率的ですし、コメントした英語がそもそも間違っていてコード以上に理解不能になるからです。

しかし、海外の人とコミュニケーションをとる人にとっては英訳しないと渡す意味がないと思ってしまうのか、失礼だと思ってしまうのか、英訳が求められます。 会社は海外の人とも協力していかないといけない、といいますが、他の人はそれほど深くコードを読みません。 コメントがなかったり読めなかったりすることを自分が理解できない理由にしているのです。 文句は言ってきますが、現に、しばらくしたらコードから理解していることが多いです。(ただ、オープンソースなど業務ではないときは、それを理由に注目されないという問題はあります。)

最近は、Google 翻訳などの機械翻訳の精度が上がっているため、英訳はそれほど難しくなくなってきました。 企業秘密にあたる部分を他の言葉に置き換えれば、Google に情報漏えいすることもありません。 しかし、それが逆にソース ファイルをすべてを自動的に翻訳することができない要因にもなっています。

手動で機械翻訳した結果を翻訳ファイルに記述しておけば、日本語のソース ファイルを英語のソース ファイルに変換することができます。 または、英語が苦手なプログラマーではなく、普段から英語を使って身についている営業の人に翻訳ファイルを記述してもらうこともできます。 特に中国語への変換となるとできる人は限られます。 翻訳ファイルによって、適材適所に作業を割り振って効率的に業務が進められるようになります。

ところで、マイクロソフト製以外では、日本語の対応がよくありません。 UTF-8 BOM にさえ対応しておらず、未だに UTF-8 しか対応していないものが多くあります。 UTF-8 BOM に対応すれば、古い Shift-JIS や EUC-jp と新しい UTF-8 BOM の共存ができるのですが、英語圏の人にはそれが理解できないのでしょう。 また、UTF-8 しか対応してないツールの中には、Shift-JIS のファイルを壊してしまうとんでもないものもあります。 そのため、UTF-8 への切り替えは、かなり必要に迫られています。

そこで調査した結果、UTF-8 (BOMなし) でも正しく文字コードを判定できる方法が分かりました。 多くのテキスト エディターはもちろん、Windows のメモ帳でも使える方法です。 それは、WHITE SQUARE エンコーディング判定法です。

ソース ファイルの先頭付近に以下のコメントを記述します。 単に記述するだけです。 先頭である必要はありませんが、以下のコメントより前には 2バイト文字(日本語、中国語、韓国語など)がないようにします。

Character Encoding: "WHITE SQUARE" U+25A1 is □.

テキスト エディターには、文字コード セットを自動的に判定する機能があることが多いですが、どの文字も正しく判定できるとは限らないという問題がありました。 しかし、WHITE SQUARE エンコーディング判定法なら、文字 □ だけ正しく判定することが確認できれば、他の文字が最初に来るようなファイルでも確実に判定できることになります。

また、文字コード セットを変換しても書き換える必要はありません。 そのまま文字コード セットを変換して保存するだけです。 一方、HTML/XML は、encoding="Shift_JIS" のように文字コード セットの名前を記述しているため、文字コード セットを変えて保存したときには名前を変更しなければなりません。 この作業は、よく忘れます。 また文字コード セットの自動変換をするにはencoding="Shift_JIS" の部分を探すための構文解析も必要になり、自動化を難しくしています。

Shift-JIS のファイルを壊してしまうとんでもないツールでは、文字 □ が正しく残っているかどうかを見るだけで、壊れたかどうかがすぐに分かります。 文字化けの発見が遅れると、バックアップから復旧することが難しくなるので、この特性も有効です。

ちなみに、WHITE SQUARE を選んだ理由は、□ 文字が目立たず単純な記号だからです。 検討していた時は ■ を使っていましたが、文字化けしたのではないかと気になったのでやめました。

欧州でよく使われる文字コード Latin-1 (ISO-8859-1) には、WHITE SQUARE がありません。 そこで、よく使われる COPYRIGHT SIGN (c) (0xA9) がよいでしょう。 Unicode でも U+00A9 ですが、バイトの列が異なるので判定は必要です。 ただし、日本語 Windows のメモ帳は Latin-1 自体に対応していません。

Character Code Encoding: "COPYRIGHT SIGN" is ©.

sage_p at 23:36|PermalinkComments(0)TrackBack(0)プログラミング 

注目ニュースリンク 3/13

◇ 壁や机上の画面をタッチ操作できる Xperia Touch。
http://pc.watch.impress.co.jp/docs/news/event/1046945.html
… 手軽にインテリジェンスなテーブルやホワイトボードになる。

◇ 左手にJoy-Con、右手にスタイラス。Nintendo Switch コントローラーがお絵かき用デバイスに。
http://www.itmedia.co.jp/news/articles/1703/10/news140.html
… Apple Pencil より使いやすそう。

◇ ヤマト運輸とともにAmazonプライムも値上がりする?。
http://www.itmedia.co.jp/pcuser/articles/1703/12/news015.html
… 送料値上げにどう対応するかは Amazon 次第。 過剰サービスは望んでいない。

◇ 理研と電機メーカー3社が新型人工知能開発で連携。
http://www3.nhk.or.jp/news/html/20170310/k10010905941000.html
… 3社共同による大規模システムも作りやすくなるか。

◇ ラジオ番組をそのまま書き起こしたラジオプリント、ファミマのコピー機で販売。
https://japan.cnet.com/article/35097447/
… 有料の情報を紙で配布する機能の1つの例だろう。

◇ 意志決定をするためのリーダー用フレームワーク Cynefin Framework。
http://gigazine.net/news/20170302-leader-framework-decision-making/
… 決定方法が画一的にならなくなるのはいいが、答の数で決めるのは乱暴。

◇ ロボットによる自動配達を認める法律が世界で初めて施行されロボット配達が解禁へ。
http://gigazine.net/news/20170303-robot-delivery-virginia/
… チャレンジングな取り組みとして期待。

◇ ゲイツ財団に3兆円を託したウォーレン・バフェット宛てにゲイツ夫妻がこれまでの慈善活動を報告。
http://gigazine.net/news/20170302-bill-melinda-annual-letter-for-warren/
… 慈善事業がビジネスにならないような仕組みがある。

◇ オバマ氏がクーデター計画の偽情報、グーグルが誤って拡散。
https://japan.cnet.com/article/35097658/
… フィードバック機能があるから、多くの人がそう思ったのだろう。

sage_p at 23:35|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2017年02月27日

運送業大手 UPS がトラックからドローンを発着する実験に成功

2017年 2月 20日、アメリカの運送業の大手 UPS は、フロリダ州の人口の少ない地域で、トラックからドローンを発進させて宅配する実験に成功したことを発表した。 なお、トラックとドローンの製作は、電気自動車メーカーの Workhourse Group 社が行った。

公開された動画では、トラックでは入りにくい狭い道の先にある家に宅配するケースの様子が映っている。 おそらく、ドローンに荷物を乗せてボタン1つで飛ばすほうが、走って届けるよりも早くて疲れないということだろう。

配達員はドローンを操作する技術が要らない。 通称 ORIONシステムによって目的の家に届けるための飛行ルートが設定されているためだ。 しかし、飛行ルートが固定であり風などを見ながら正確に飛行できたとしても、FAA(連邦航空局)の規制では、操縦している人が目視で確認できる範囲でしかドローンを飛行できない。 状況に応じて飛行ルートを変えることができなければ認められないかもしれない。

しかし、そういった規制を超えようとする企業努力は必要だ。 法律違反をすると罰せられて損をする、でななく、規制緩和によって他社より効率よくなって売上げが増えるようにしなければ古くなってしまう。

運送業はネット ショッピングの普及によりドライバー不足になっている。 そうした状況からヤマト運輸の労働組合は、荷物の受入れ量(荷受量)を制限するように要求した。 需要が大きいのなら送料を上げるかコストを下げるかしなければ事業を継続することはできないのは必然だ。 顧客は送料無料を望んでいるのだと言われても、安売りする必要はない。 とはいえ、現在のドローンがコストを下げることに貢献することはまだ難しいだろう。 ドローンで離島に荷物を届けることも行ってるが、そういったコストが下がる状況は、限られているからだ。

ソース
https://japan.cnet.com/article/35097034/
http://jp.techcrunch.com/2017/02/23/20170221ups-tests-show-delivery-drones-still-need-work/
http://www.itmedia.co.jp/news/articles/1609/26/news070.html
http://wired.jp/2016/05/11/zipline-drones-rwanda/
http://blogos.com/article/211637/

sage_p at 00:57|PermalinkComments(0)TrackBack(0)IT ニュース&コラム 

注目ニュースリンク 2/27

◇ 新MacBook Proで Touch Bar対応Office を試してみた。
http://www.itmedia.co.jp/pcuser/articles/1702/22/news047.html
… カスタマイズができたらいいのに。

◇ Bash on Windowsが強化、Linux版のJavaやGo、PostgreSQLなどもWindowsで実行可能に。
http://www.publickey1.jp/blog/17/bash_on_windows_creators_update.html
… Java はマルチプラットフォーム対応だったはずだが。

◇ Google Cloud、1つの仮想マシンにGPUプロセッサを最大8基で処理時間を大幅に短縮。
http://www.publickey1.jp/blog/17/google_cloudgpu1gpu8.html
… 機械学習をクラウドで行うときに。

◇ microUSBプラグにLightningが合体、第3世代のスマホマルチケーブル。
http://k-tai.watch.impress.co.jp/docs/column/todays_goods/1032113.html
… Lightning 変換コネクターが千切れて無くす心配がない。

◇ Pokemon GO が第2段階へ。Ingressの経験活かし地方自治体と連携。
https://japan.cnet.com/article/35097039/
… 地方自治体お問い合わせフォームで、どの自治体も参加可能。

◇ SHA-1衝突攻撃がついに現実に、Google発表 90日後にコード公開。
http://www.itmedia.co.jp/enterprise/articles/1702/24/news067.html
… SHA-1暗号では、たとえばPDFの作者のなりすましができる。

◇ 突然「Googleアカウントが変更されました」表示で強制ログアウトになるユーザー急増中。
http://did2memo.net/2017/02/24/google-account-is-changed-error/
… グーグルも原因が分かっていないらしい。ハッキングされていないとなぜ断言できるのか。

◇ GitLab.comが操作ミスで本番データベース喪失。5つあったはずのバックアップ手段は役立たず。
http://www.publickey1.jp/blog/17/gitlabcom56.html
… Linux は未だにディレクトリの削除ミスがあるので怖い。

◇ IoTマルウェア Mirai に新たな亜種、Windowsに感染して拡散攻撃。
http://www.itmedia.co.jp/enterprise/articles/1702/15/news086.html
… Linux のウィルスが Windows も感染経路にする。

◇ デスクトップ市場に活気をもたらす。AMD高性能CPU Ryzen 7は3月3日0時発売、3万8800円から。
http://japanese.engadget.com/2017/02/23/amd-cpu-ryzen-7-3-3-0-3-8800/
… AMD対インテルの時代が久々に復活。

sage_p at 00:57|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2017年02月18日

インフレターゲット 2% 実現のための劇薬、日銀ポイント

日本銀行(中央銀行)は、ハイパーインフレを防ぐルールとして金融機関にしか金利という名目でお金を発行できませんが、ルールというものはだいたい例外や副作用があるものなので、インフレターゲット 2%を実現するための異次元の金融緩和というぐらいなら、ルールを少し変えたほうがいいでしょう。

インフレターゲット 2%を実現のなら、小売業でよくあるポイントを中央銀行が発行することです。 ポイントとは、買ったら何%か付いて、後から電子マネーなどに交換できるものです。 (すでに考えられていると思うので、その問題点などを Twitter で、DM してくれると嬉しいです。)

よく、消費を拡大するには消費税を減らすべきという主張があり、ポイントを発行すると消費税と相殺されて消費税を減らすことと同じだから消費税だけを下げればいいという主張をする人がいますが、そんな乱暴な抽象化をしてはいけません。

国民が消費を増やすと消費税が増えて国の借金が減るのです。 つまり、消費すればするほど、将来が安心になるのです。 これだけで、消費マインドが全然違います。 もちろん貯金するとポイントは増えません。

また、ポイントから電子マネーなどに交換する年間の最大ポイントの制限を付けると、消費税の逆進性を解消できます。 また、最大ポイントによって、ハイパーインフレを抑制できます。

ポイント制度は今まで通り企業がシステムを構築し、企業にもポイントを発行すれば、導入コストを抑えられるでしょう。

ポイントの利率と最大ポイントの調整は、短くても 5年に一度行うのがいいでしょう。 最低5年もポイントが付与されることが保証されれば、臨時収入ではないので安心してお金が使えるからです。

sage_p at 10:23|PermalinkComments(0)TrackBack(0)Snap Note で考えた経済政策 

2017年02月12日

使いなれた外部プログラムを vbslib から起動する Setting コマンド

今年始めに vbslib 5.91 を公開しましたが、めずらしくたった 1ヶ月で vbslib 5.92 を公開しました。vbslib 4.91 から 5.91 まで 2年以上あいてしまっていましたから自分としても奇跡です。 更新内容は主にバグ フィックスです。 詳細は、OSDN で公開している vbslib の更新履歴を参照してください。

vbslib は、以下からダウンロードできます。 Windows 用です。
http://vbslib.osdn.jp/
http://www.sage-p.com/vbslib/vbslib/vbslib.htm
https://github.com/TsNeko/vbslib

vbslib は、定型作業の 自動化やテスト駆動開発(TDD)が快適に行えるようにするため、ユーザーインターフェース (UI) はあまり重要ではありませんが、場合によっては定番の GUI のツール(外部プログラム)の助けを借りたほうが便利なことがあります。たとえば、ファイルの内容に問題があったときは、そのファイルのパスを表示するだけでなく、テキスト エディターで問題があった行を開くところまで自動で行ったほうが便利です。 また、人によってベストなテキスト エディターは異なるので、vbslib では設定をカスタマイズすることができるようになっています。

Setting コマンドでカスタマイズできる外部プログラムは、以下のものがあります。

・フォルダーを開くプログラム [Folder]
・テキストファイルを開くプログラム [Text]
・テキストファイルを比較するプログラム [Diff]
・フォルダーを比較するプログラム [DiffFolder]

外部プログラムが標準的なパスにインストールしてあるときは、自動的にその外部プログラムを使いますが、にもかかわらず期待したプログラムとは別のプログラムが起動してしまうときは、カスタマイズが必要です。

vbslib 5.91 以降では、vbslib Prompt.vbs をダブルクリックして、Setting コマンドを起動すると、外部プログラムのカスタマイズができます。 また、カスタマイズした設定が正しく設定されたかどうかをテストすることもできます。

設定値を格納するフォルダー(setting フォルダー)は、以下の場所にあります。

・vbslib のデフォルト設定:scriptlib\vbslib\setting_default
・PC 全体の設定 : C:\Users\user1\AppData\Roaming\Scripts
・USB メモリーに入っている PC 全体の設定:%myhome_mem%\prog\scriptlib\setting_mem
・フォルダーごとの設定:scriptlib\vbslib\setting

下のフォルダーほど優先されます。 ファイルごとではなく、関数ごとに優先します。 たとえば、PC 全体の設定にフォルダーを開くプログラムの設定(関数)があり、テキスト エディターの設定(関数)がなかったときは、テキスト エディターに関してはデフォルト設定が有効になります。 なお、最も上のデフォルト設定は変更しないでください。 フォルダーごとの設定は、その設定が入っている scriptlib があるフォルダーの中で起動したスクリプトでのみ有効です。

Setting コマンドで新しい設定を作り始めたときは、設定内容のテンプレートが自動的にコピーされ、テンプレートと同じ内容から編集を始めることができます。

vbslib 4.91 以前では、scriptlib\vbslib\setting_default\PC_setting_default.vbs を setting フォルダーにコピーして、コピーした PC_setting.vbs ファイルをテキスト エディターで開いて編集することで外部プログラムのカスタマイズができます。 しかし、setting フォルダーの場所をガイドしてくれたり、テンプレートが自動的に作られたりすることはありませんでした。

sage_p at 21:00|PermalinkComments(0)TrackBack(0)プログラミング 

注目ニュースリンク 2/13

◇ グーグル、Chrome 56 でHTTP接続への警告表示を開始。
https://japan.cnet.com/article/35095743/
… CNET のホームページも暗号化にしてしまった グーグルの影響力。

◇ Windows 10の最初のリリースがサポート終了、複雑すぎるサポートポリシーの中身。
http://www.itmedia.co.jp/enterprise/articles/1702/01/news021.html
… 個人向けはすぐ4ヶ月、企業向けの社内サービスのテストの猶予は 16ヶ月。

◇ 超入門Docker、Windowsプログラムを実行するWindowsコンテナ。
http://www.atmarkit.co.jp/ait/articles/1702/02/news039.html
… Windows Server 2016 で高速な仮想環境ができる。

◇ Dropboxの新アプリ Paper の機能と便利な使いどころ。
http://pc.watch.impress.co.jp/docs/column/dekirunet/1042525.html
… Dropbox もオフィス アプリを開発。

◇ アップル、グーグル、MSなど97社、入国禁止に反対する法廷助言書を提出。
https://japan.cnet.com/article/35096159/
… 税金を払っていない会社が国に文句言う筋合いはない。

◇ FacebookとGoogle、仏大統領選に向けて虚偽ニュース対策を立ち上げ。
http://www.itmedia.co.jp/news/articles/1702/07/news069.html
… アメリカ流言論統制。 トランプ勝利が虚偽になるようなバイアスがかかりそう。

◇ SEOの死は本当か? 競合サイトが実はやっているリンク構築の全手法。
https://www.webprofessional.jp/link-building-for-2017-and-beyond/
… 新しい検索候補の上位に来る方法。

◇ WordPressの脆弱性突く攻撃が激増、6万以上のWebサイトで改ざん被害。
http://www.itmedia.co.jp/enterprise/articles/1702/09/news064.html
… 自動更新機能がされていなかった理由は自動更新が信頼されていないからか。

sage_p at 21:00|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2017年01月29日

Nintendo Switch の新しいコントローラー Joy-Con

2017年 1月 13日、任天堂は、Nintendo Switch プレゼンテーション 2017 を開催した。 Nintendo Switch のハードウェアは、昨年 10月に発表されていたが、今回は、コントローラーの機能やゲームの紹介があり、大きく印象を変えた。

昨年 10月の発表では、iPad や Android タブレットでできるゲームを、テレビにもつなぐことができ、左右のコントローラーを取り外すこともできることが紹介された。 これぐらいであれば、既存のタブレットやスマートフォンで十分だと考えてしまうだろう。 普段は一人でプレイしていていざ友達が来たときでも、おすそ分けプレイができるのはかなり良いのだが地味だ。今回の発表では、まず、コントローラーである Joy-Con(ジョイコン)の機能が紹介された。

モーションIRカメラが、Joy-Con(R)(右のコントローラー)に付いており、じゃんけんのような指の動きを認識できる。 認識性能は、認識ソフトの性能によるだろう。 Joy-Con(L) (左)には、画面の静止画が撮れるキャプチャーボタンが付いている。

HD振動という機能が Joy-Con には入っている。 高精細な振動制御ができることで様々な感触を感じ分けることができる。 たとえば、氷をグラスに入れたことが、振動だけで感じ分けることができる。 銃を撃つ感触や卓球で打つ感触などがリアルに感じられると思われる。Joy-Con の L を左手でつかみ、Joy-Con の R を右手でつかむと両手で楽しめる。 Joy-Con が軽くて小さいことも HD振動の微妙な感覚を伝えることに必要な要素だろう。

加速度センサー・ジャイロセンサーも Joy-Con に内蔵している。 Wii のコントローラーより軽くて小さい。 これは、プレゼンで紹介された ボクシングのような ARMS というゲームに必要な要素だろう。

Joy-Con は充電が必要で、充電するには本体と接続する必要がある。 なお、本体に接続するケーブルは、USB Type-C だ。

Nintendo Switch の画面は、最大1280×720ピクセル。 Nintendo Switchドックにつなぐと 1920×1080ピクセル 60fps で大画面モニターに表示できる。 CPU と グラフィックを統合したチップ(SoC)は、NVIDIA の Tegraのカスタム チップだ。ただし、Wii U と異なり、モニターとタブレットで異なる画面を表示することはできない。

ローカル通信は無線で8台まで。 ちょうどスプラトゥーンで 4対4の対戦ができる数だ。スプラトゥーンは、Wii U で最もイカしたゲームで Nintendo Switch 用に、スプラトゥーン2 が発表された。 ローカル通信といえば、Nintendo 3DS に移植したらいいと思うが、おそらく非力であるか画面が小さいので移植できないのだろう。 ちなみに、イカ研究所の研究員によると、新しいブキであるスプラマニューバーは、最後を伸ばすのが正しい。

プレイ時間をみまもる機能が追加される。 ゲームは1時間まで、というルールを設定できる機能だが、子供にとっては強制であり子供の人権を奪っている。 これでは自主性は育たず、友達の家に行くなどの抜け道を探すような子供になるだろう。

Nintendo Switch は、3/3発売、2万9980円、予約受付は始まっており、すでに売り切れた店もある。

ソース
https://www.nintendo.co.jp/switch/
http://www.gizmodo.jp/2017/01/nintendo-switch-presentation.html
http://trendy.nikkeibp.co.jp/atcl/pickup/15/1003590/011600734/?rt=nocnt
http://game.watch.impress.co.jp/docs/series/bokura/1039610.html
http://game.watch.impress.co.jp/docs/series/bokura/1040692.html
http://japan.cnet.com/news/commentary/35095051/
https://www.youtube.com/watch?v=JBvLpKJrusI
https://www.youtube.com/watch?v=vvaQENG7lBI

sage_p at 23:08|PermalinkComments(0)TrackBack(0)IT ニュース&コラム 

注目ニュースリンク 1/30

◇ 中途半端に規制をするとシャドーITがはびこる。ビジネスチャットが企業に必要な理由。
http://www.itmedia.co.jp/enterprise/articles/1701/20/news020.html
… 使いにくいことは、セキュリティ低下に等しい。

◇ テスラの自動運転に欠陥なし。死亡事故の調査、米当局が終了。
http://japan.cnet.com/news/business/35095276/
… 自動運転のほうが衝突率が低くても納得できないこともあるだろう。

◇ AI記者へ一歩前進、NTTデータが気象ニュース原稿の自動生成実験。
http://cloud.watch.impress.co.jp/docs/news/1041279.html
… 右から左へ流す記事は、AIへ。

◇ トランプ大統領、ネット中立性に批判的なパイ氏をFCC委員長に任命か。
http://japan.cnet.com/news/society/35095394/
… アメリカ ファーストは、中立ではない。

◇ Google、ルート証明書発行の独自インフラを構築。
http://www.itmedia.co.jp/enterprise/articles/1701/27/news058.html
… Symantecの認証局の手違いは問題だが、自分で認証するのも問題。

sage_p at 23:08|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2017年01月15日

プログラム ソースの静的設定を一度に行う vbslib の Switches

今回は、先日公開した vbslib 5.91 から、Switches について紹介したいと思います。 vbslib は、以下からダウンロードできます。
https://ja.osdn.net/projects/vbslib/
http://www.sage-p.com/vbslib/vbslib/vbslib.htm

vbslib は、Windows 7/8/10 で主にプログラミングに関する処理を自動化するスクリプト ライブラリ(スクリプト集)です。 スクリプト言語は、VBScript です。 文法的に古い言語ですが、機能的には JavaScript やシェルスクリプトより高機能で、スクリプトでありながらフル機能のデバッガーを使うこともできます。 そんな vbslib から、Switches を使った自動化について紹介します。

たとえば、試用版と製品版で C言語などの #define 定数の定義を切り替えることがあるでしょう。

・製品版では
 #define MAX_PAGE 9999

・試用版では
 #define MAX_PAGE 10

Switches の設定ファイルには、#define MAX_PAGE が記述されているファイルのパスと、それぞれの設定内容(テキスト)を記述します。

Switches の設定ファイル:
   <SwitchNow  target_set_names="製品版"/>
       <Switch  set_names="製品版, 試用版"/>

   <File  path="page.h">
       <T>
           <製品版>#define  MAX_PAGE  9999</製品版>
           <試用版>#define  MAX_PAGE  10</試用版>
       </T>
   </File>


Switches は、テキスト ファイルの内容の一部の置き換えを行います。 単にテキストを置き換えるだけですが、置き換えるすべての設定内容を設定ファイルに整理することができることが、Switches が便利であることの要因です。 また、すべての設定のどれもなければエラーになるので、ファイルのパスの設定ミスを防ぐことができます。 たとえば、#define MAX_PAGE ... が書かれていないときや、ファイルが存在しないときはエラーになります。

Visual Studio などの開発環境では、デバッグ版とリリース版のコンフィグが自動的に用意されることが多いですが、デバッグ版とリリース版の両方で共通の設定を共通であるように維持することは、とても大変です。

たとえば、インクルード パスを変更しながらデバッグ版で開発していくと、リリースする直前で、すべてのインクルード パスをリリース版にコピーする作業を手動で行わなければなりません。 リリース版を作るたびに作業が発生するので、とても面倒に感じます。 設定を変えていないだろうから、作業をしなくてよいだろうと思っていたら、実は必要で、不具合があるプログラムを出荷してしまったなどのミスも発生しやすくなります。

Switches の設定ファイルには、設定の差分のみ記述するので、共通の設定を共通であるように維持する必要はなくなります。

開発環境では1つのコンフィグ(たとえばデバッグ版)だけ使い、Switches の設定ファイルに設定の差分を記述しておきます。 開発環境の設定ファイルは通常 XML で記述されているので、XML の差分を記述しておきます。 なお、Switches の設定ファイルに記述する設定値を、<![CDATA[ から ]]> で囲むと、XML の <, >, & 文字を &lt;, &gt;, &amp; に置き換えて記述する必要は、なくなります(XMLの仕様)。

開発環境の設定ファイルの中で置き換える XML の内容を知りたいときは、開発環境の GUI の設定画面で設定を変更する前後について、テキスト ファイルとして(diff ツールで)差分を確認してください。 テキスト ファイルの差分を確認する機能も vbslib に含まれています。

・デバッグ版では、NDEBUG を定義せず、最適化をオフ
・リリース版では、NDEBUG を定義して、最適化をオン

を Switches の設定ファイルに記述するときは、たとえば以下のようにします。

Switches の設定ファイル:
   <SwitchNow  target_set_names="デバッグ版"/>
       <Switch  set_names="デバッグ版, リリース版"/>

   <File  path="Project.vcproj">
       <T>
           <デバッグ版><![CDATA[PreprocessorDefinitions="WIN32;_DEBUG;]]></デバッグ版>
           <リリース版><![CDATA[PreprocessorDefinitions="WIN32;NDEBUG;]]></リリース版>
       </T>
       <T>
           <デバッグ版><![CDATA[Optimization="0"]]></デバッグ版>
           <リリース版><![CDATA[Optimization="2"]]></リリース版>
       </T>
   </File>


これらの設定のうち、実際に使うコンフィグ(設定の組み合わせ)は、主に以下の3つだけになるでしょう。
・デバッグ版(製品版のデバッグ版)
・試用版(試用版のリリース版)
・製品版(製品版のリリース版)

厳密に考えるとデバッグ版の試用版も使うかもしれませんが、ここで言いたいことは、多くのプログラム開発において、すべての設定の組み合わせを使うわけではないということです。

使用するコンフィグを切り替えるときは、次の手順で行います。
・設定ファイルの SwitchNow/@target_set_names の値(コンフィグ名)を変更
・Switches を実行
これだけで、必要な設定の変更がすべて行われます。

Switches の設定ファイル:
   <SwitchNow  target_set_names="製品版"/>
       <Switch  set_names="デバッグ版, 試用版, 製品版"/>

   <File  path="page.h">
       <T>
           <デバッグ版>#define  MAX_PAGE  9999</デバッグ版>
           <製品版    >#define  MAX_PAGE  9999</製品版>
           <試用版    >#define  MAX_PAGE  10</試用版>
       </T>

   <File  path="Project.vcproj">
       <T>
           <デバッグ版><![CDATA[PreprocessorDefinitions="WIN32;_DEBUG;]]></デバッグ版>
           <製品版    ><![CDATA[PreprocessorDefinitions="WIN32;NDEBUG;]]></製品版>
           <試用版    ><![CDATA[PreprocessorDefinitions="WIN32;NDEBUG;]]></試用版>
       </T>
       <T>
           <デバッグ版><![CDATA[Optimization="0"]]></デバッグ版>
           <製品版    ><![CDATA[Optimization="2"]]></製品版>
           <試用版    ><![CDATA[Optimization="2"]]></試用版>
       </T>
   </File>


sage_p at 23:36|PermalinkComments(0)TrackBack(0)プログラミング 

注目ニュースリンク 1/16

◇ Nintendo Switch プレゼンテーション&体験会 2017。
https://www.nintendo.co.jp/switch/
… 株価は下げたが、既存タイトルの移植でも、新たな操作方法を楽しめそう。

◇ ゼルダの伝説 ブレス オブ ザ ワイルドの発売は,Nintendo Switchの発売と同じ2017年3月3日に決定。
http://www.4gamer.net/games/990/G999026/20170113061/
… 背景はすばらしいが、人物の塗り方がこなれていない。

◇ 年賀状、活版印刷の注文殺到。あえて にじみ明朝 も。
http://www.asahi.com/articles/ASJD8632MJD8UCVL01Y.html
… にじみ出るフォント。

◇ 猫でも分かるソフトウェアのテスト網羅。C2カバレッジは裸の王様。
http://monoist.atmarkit.co.jp/mn/articles/1612/21/news018.html
… 効率が悪いユニット テストより、効率の良い総合テストを重視すべし。

◇ アップルとソニーのスマートウォッチを合体させると最強だ。
http://trendy.nikkeibp.co.jp/atcl/column/16/042500043/121600012/
… 画面のあるスマート ウォッチに画面のないスマート リスト バンドを合体。

◇ Microsoft、Windows 10におけるコマンドプロンプトの廃止を全面否定。
http://news.mynavi.jp/news/2017/01/06/138/
… なくなることはないが、アクセスしにくくなる。

◇ 就職好転、続く文系人気 大学入試、大規模私大は狭き門。
http://www.asahi.com/articles/ASK165K4RK16UTIL04F.html
… 体育会系の人気がある経営者層のように、能力よりも雰囲気の良さから希望が見える時代へ。

◇ オープンソースの開発現場では限られたリソースで品質管理をどうしているのか。
http://www.publickey1.jp/blog/17/twitter4jgitbucketasakusa_frameworkpower-assert.html
… テスターになってくれる人を集めるために英語にするとか。

◇ らき☆すたの聖地・鷲宮が10年経っても安泰な理由。
http://ascii.jp/elem/000/001/408/1408712/
… 継続することが大事。 客層に応じた対応を。

sage_p at 23:36|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2016年12月18日

銀行の API 仕様の公開へ、金融制度ワーキング グループ

2016年 12月 2日、ZDNet Japan は、金融庁の金融制度ワーキング グループで中間的業者規制についての検討が始っているという記事を掲載した。

オンライン ショッピングをする際、多くの人はクレジット カード、または、プリペイド カード、または、仮想通貨(ポイント)で支払っている。 オークションやフリーマーケットなどでは、多くの人は、ゆうちょ銀行など銀行で支払っている。 後者の場合、(一定の回数を超えると)手数料が発生し、前者の場合、店が手数料を負担することが多い。 最近では、後者の場合でも、仮想通貨や売る側が手数料を負担することも増えてきている。

このように、主な財産を預けている銀行の口座の情報を漏らさず、手数料を店が支払うことで、ますますオンライン ショッピングを安全でお得にできる状況になっている。

決済は、スケーラビリティがない処理である。 金額の大きさによって、手数料の違いや責任の大きさに違いがあるため、単に A のスマホから B のスマホにどんな数字の金額という数字データも転送できる、というだけでは、無保証なので、ユーザーは逃げていく。 使える金額に制限があり、安全性のレベルを使い分けることが要求されており、その要求に応えている1つが、資金決済法などの法律の規制である。 ローンや給与振り込みなど金額が大きければ、安全性が重視されるし、日用品を買うなど金額が小さければ、ICカードをかざしたり、画面の購入ボタンを押すだけといった利便性が重視される。

規制緩和したほうがイノベーションは発達しやすいので、その方法の1つが銀行の API 公開だ。 銀行以外の金融サービス(プリペイドカードやポイント)を提供しているのが、金融制度ワーキング・グループでの中間的業者である。 ショッピングをする人が直接 API に関わることはないが、中間的業者にとっては小さなコストで決済を自動化することができるようになり、新規参入もしやすくなるだろう。 秘密情報の一部を扱うため、API の仕様が公開されても、誰でも使えるようになることはないが、どれだけコストを下げつつ安全になるかが検討されている。

銀行にとっては、IT企業による仮想通貨の流通量や貯蓄量が多くなると、手数料が少なくなるので、小口決済業務に関する金融サービスを充実させることで金融取引に関する事実上の価格決定権を握りたいのだろう。

金融庁の金融制度ワーキング・グループの議事録は公開されていて、誰でも見ることができる。 銀行や中間的業者のパンフレット的なサービスの紹介も載っている。 XMLによる決済の話だけではではなく、様々なアプリケーションとの連携のアイデアや、マネーロンダリングを防止する規格名も見ることができる。

ソース
http://japan.zdnet.com/article/35092192/
http://www.fsa.go.jp/singi/singi_kinyu/base_gijiroku.html#financial_system

sage_p at 22:25|PermalinkComments(0)TrackBack(0)IT ニュース&コラム 

注目ニュースリンク 12/19

◇ DeNA南場会長、ネットの医療情報は役に立たない。WELQのがん記事にがく然。
http://www.itmedia.co.jp/news/articles/1612/08/news070.html
http://japan.cnet.com/news/business/35093081/
… 素人の憶測記事によって、正しい情報が探せなくなってしまう。

◇ ネットに蔓延する虚偽ニュースにだまされない方法。
http://japan.cnet.com/news/commentary/35092751/
… 写真も偽物や関係ないものの可能性あるが、判別できる方法がある。

◇ グーグルのDeepMind、AI訓練プラットフォームをオープンソース化。
http://japan.cnet.com/news/service/35093248/
… 古い技術を標準化することがねらいかも。

◇ 画面を搭載する Windows 10 IoT Core 端末で Cortana をサポートへ。
http://japan.cnet.com/news/service/35093602/
… IoT 端末から人工知能クラウドを利用。

◇ マイクロソフト、複合現実ヘッドセット対応PCの仕様を発表。
http://japan.cnet.com/news/service/35093468/
… マイクロソフト製 MR のソフトは、この仕様を満たせば HoloLens 以外も使えると宣言。

◇ マイクロソフトがARM向けWindows 10の構想を発表。Win32アプリも動作。
http://japan.zdnet.com/article/35093457/
… Intel バイナリは、エミュレーションで動作。

◇ Linux OSからFPGAを透過的に利用する構想。文字列処理をCPUからFPGAへオフロード。
http://www.publickey1.jp/blog/16/linux_osfpgacpufpga10.html
… FPGA でプログラマブルな分散処理へ。

◇ ラズパイはソニーの工場でも作られている。生みの親が来日。
http://japan.cnet.com/news/service/35093741/
… 5ドル Linux である Raspberry Pi ZERO がついに日本でも発売へ。

sage_p at 22:25|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2016年12月05日

よく使うコードの断片として登録するべきデバッグ用スニペット

プログラミングにおいて、よく使うプログラム コードの断片をスニペットと言います。 一部のテキスト エディターには、スニペットを簡単に呼び出す機能が付いています。 最近では、HTML や CSS の記述もスニペットに登録することもよくあるでしょう。

スニペットを初めて使うときは「便利だ!」と感じることでしょう。 なぜなら、ほぼ出来上がったコードが一瞬で書かれることと、具体的にどのデータを指定すべきかがサンプルとして列挙されているからです。

しかし、長い間使っていると登録したいスニペットが多くなってきて、目的のスニペットを選ぶことが面倒になってきます。 たとえ、1、2文字(の略語)をタイプするだけでも、忘れてしまうものです。 ツリー構造で整理したとしても、そのツリーをたどることは、略語をタイプすることより大変です。 むしろ、API 名などで検索した方が速いです。ではなぜ、スニペットは多くなるのでしょうか。

その原因の1つは、プログラミングには DRY原則があるからです。 DRY とは、Don't Repeat Yourself の略で、Andy Hunt 氏と Dave Thomas 氏が執筆した「達人プログラマー―システム開発の職人から名匠への道」に書かれているのですが、「知識のあらゆる部分はそのシステムにおいて単一で、曖昧さのない、信頼できる表現でなくてはならない。」という原則です。 簡単に言えば、データやコードなどは一元化して洗練させなさい、ということです。 誰でも考えることですけど、実践することが難しいことです。

ただ、プログラミング言語の文法やライブラリが発展したことにより、同じパターンのコードを何度も書く必要がなくなってきました。 たとえば、ラムダ式は、小さな関数の定義とその関数の参照を => という謎の記号だけで書くことができるようになり、スニペットに関数の定義のテンプレートを登録するまでもなくなりました。

少し話がそれますが、プログラミング言語を学ぶ際、最も重要なことは、=> のような記号の一覧から、その記号の意味や例を検索できるようにしておくことです。 文法上の用語の一覧ではありません。 記号の一覧を作っておくことで、プログラミング言語の難しい仕様を使ってしまったために他の人がコードを読めなくなるという問題の1つの原因の排除できます。 => という記号を使ってはならない、といったような新機能を否定するルールは、最新技術を習得することを否定することになり、技術の低下を招きます。 そんな恥ずかしいルールを掲げていたり、最新技術は使えねぇと即非難する技術者がいては、わが社は技術力があります、なんて恥ずかしくて言えないでしょう。 そうではなく、サンプルなどを付けて分かりやすくした説明書を用意しなければ使ってはならない、その説明書は常にさらされて改良しなければならない、というルールにして、技術者を育て合うべきです。

話を戻して、スニペットを張り付けるケースが減ったもう1つの要因は、API の説明書にサンプルが付くことが結構あたりまえになったことです。 関数名やクラス名で検索してすぐに表示されるサンプルをコピペすれば、半分完成したプログラム コードの断片ができるわけですから、スニペットを登録するまでもありません。

こうして私もスニペットを使わなくなったのですが、最近また使うようになりました。 それが、デバッグ用スニペットです。

printf デバッグなんて開発環境がしょぼかった古い時代の方法だ、現在は、高度なデバッガーでも無料で手に入るので、デバッガーを使ったほうがいいに決まっている、と思ったら大間違いです。 たとえば、大量のデータを扱うループの中で、特定のデータを調べたいとなったら、デバッガーにブレーク条件を設定することと、条件を満たしたら printf するコードを書くことの間に、それほど手間の差はありません。 むしろ、条件付きブレークをどう設定するのかを調べることのほうが難しかったり、一時的に条件付きブレークをコメントアウトすることができないデバッガーだったりします。

そこで私は、次のデバッグ用スニペット(C言語用)を、Snap Note のノートバーにあるボタンをクリックしたら開くファイルから、コピペできるようにしています。 スニペットの名前(略語)さえ覚える必要はありません。 もちろん、スニペットが書かれたパワポのショートカットでも構いません。

if ( _tcsstr( Name, _T("value") ) != NULL )
{int i=1;} //_TODO:

コピペした直後に、目的の変数や値をコピーして、Name と value にダブルクリック(選択)して貼り付けます。 value は、ファイル名やデータ値の一部だけを張り付ければよいです。 そして、{int i=1;} の行にブレークポイントを張り、プログラムを再起動します。 こうすることで、大量のデータの中から特定のデータのときにブレークして、関係する変数の値をいろいろ調べることができます。 ただし、value に設定する値が分からないときは、事前に次のバッグ用スニペットを使って、値を調べます。

printf( "111:%d=> variable = %d\n", __LINE__, variable ); //_TODO:

コピペした直後に、variable(2か所)に調べたい変数名を張り付けて、%d を必要なら変更し、プログラムを再起動します。 こうして printf 出力された内容をテキストエディターに張り付けて、目的の値を検索します。

デバッグ用スニペットを初めて使うときは「便利だ!」と感じることでしょう。 まぁその感動もすぐに常識と化してしまいますが。 また、暗黙知であったデバッグ技術の一部が明文化されるので、他の技術者にも技術を伝承しやすくなります。

参考:
http://www.weblio.jp/content/スニペット
https://www.infoq.com/jp/news/2012/05/DRY-code-duplication-coupling
http://webnaut.jp/markup/628.html

sage_p at 00:46|PermalinkComments(0)TrackBack(0)プログラミング 

注目ニュースリンク 12/ 5

◇ 金融庁で議論。イノベーションの要、銀行のAPI公開と中間的事業者の関係。
http://japan.zdnet.com/article/35092192/
… API化で多くのアプリから決済を簡単に。

◇ MacBook Pro を2週間使ってみて。注目の新機能 Touch Bar はどこまで便利か。
http://japan.cnet.com/news/commentary/35092291/
… 結構使えそう。

◇ テスラの完全自動運転車はどのように走るのか。車内から撮影した動画が公開。
http://japan.cnet.com/news/service/35092540/
http://japan.cnet.com/news/service/35092853/
… 安全第一だから不要なのにスピードを落とす場面もちらほら。この壁は高い。

◇ グーグルDeepMind、AIの学習を高速化させる新手法を発表。動物の見る夢から着想。
http://japan.zdnet.com/article/35092476/
… AIは高速化が肝心。 報酬に関わるサンプルほど重みを高めた。

◇ 家からリモコンが消えたなら--ソニー HUIS の設定から使用感まで。
http://japan.cnet.com/sp/cnet_antenna/35091823/
… 学習機能付きリモコンをスマートに。

◇ Windows 10、デフォルトシェルをコマンドプロンプトからPowerShellへ変更。
http://news.mynavi.jp/news/2016/11/21/374/
http://stknohg.hatenablog.jp/entry/2016/11/19/155916
… エクスプローラーのファイル メニューから選べなくなる。

◇ Windows 10スマホでPC向けx86アプリが動くようになる?
http://www.itmedia.co.jp/pcuser/articles/1612/03/news012.html
… ARMでインテルをエミュレーション。 ただし、ニーズはない。

◇ Android狙うマルウェア Gooligan、100万超のGoogleアカウントに被害。
http://japan.cnet.com/news/service/35093009/
… ハッカーに広告費が持っていかれることは、広告主に悪い印象を与えないか。

sage_p at 00:45|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2016年11月21日

ファンクション キーを Touch Bar に置き換えた MacBook Pro

2016年 10月 27日、アップルは、キーボードのファンクション キーがあった場所に、Touch Bar と呼ばれる横長の画面付きタッチパネルを搭載する新型 MacBook Pro を発表した。

ほとんどのキーボードの数字キーの上には、F1〜F12 と書かれたファンクション キーがある(ただし、ハッピーハッキングなど一部のキーボードには存在しない)。 ファンクション キーは、アプリケーションによってよく使われる機能に割り当てられているのだが、押した時にどうなるかについて一覧されていないためか、マウスで画面上のボタンを押すことのほうが多い。

Touch Bar は、そのファンクション キーがあった場所にタッチパネル付きディスプレイを配置しただけである、というのはハードウェアだけの視点だ。 その場所に配置することでアプリケーションの使い方が一変することになる。

たとえば、写真の一覧が画面の下のほうに並べられていたら、それがキーボード側に表示され、直接タップできるようになる。 また、F1〜F12 という、押したらどうなるか見えない状況ではなく、マウスでクリックしていた画面上のボタンが、そのまま手元に表示され、直接タップしたらどうなるかが予想できるようになる。 保存ボタンがそこにあれば、これまでマウスで保存ボタンを押していた人にとっては非常に便利になるだろう。

これまでどおりファンクション キーだけを固定して表示させることも設定で可能だが、F(数字) のほうが優れている状況は考えにくい。 画面からキーボードに目線を動かすのが面倒だという人も出てくるだろうが、これまでファンクション キーの位置を確認するために目線を動かしていた人のほうが多いと思われる。 物理キーボードの復活はこれまで散々あったため、Touch Bar は受け入れられないという考えもあるだろうが、ファンクション キーは、単語の中の1文字と違ってタッチタイピングの連続したタイピングの中にはないため、タッチパネルであっても違和感は少ないだろう。 そもそも、ファンクション キーなんかいらねぇ、ハッピーハッキング最高と主張している人なら、Touch Bar に変わろうが関係ない。 また、物理キーの上にディスプレイを付けるアイデアもあるだろうが、あまり拡張性が期待できないし、量産コストも高いだろう。

2年以上前にアップルは、触覚フィードバックが優れたトラックパッドの開発からタッチパネルと物理キーボードの組み合わせについて注目していたらしい。 他社もキーボードのタッチパネル化には注目していたが、ほとんどは、テンキーをタッチパネルと切り替えられるキーボードである。 テンキーはファンクションキーよりは使われるので、物理キーでないことの違和感が大きいだろう。 アルファベットの上に物理キーがあるから問題ないというのは誤った分析だ。 なぜなら、テンキーだけのキーボードが売られていることから想像できるだろう。

一方アップルは、ファンクション キーというかなり横長なエリアにタッチパネルを配置し、さらにディスプレイを配置した。 これほど横長なタッチパネルや画面の部品は存在しないため、金型から新規に開発することになり、コストを考えるとありえない、として瞬間的に却下するのが開発者の普通の考えなので、Touch Bar は常識を打ち破った画期的な部品なのである。

なお、画期的であっても、ファンクション キーがある位置に配置するだけでは特許にならないので、Touch Bar のようなキーボードが他社からいくつも多く出てくる可能性が高い。 逆にいえば、そうならなければ Touch Bar がマイナーという位置づけになり、普及しないのではないか。 重要なのは便利な Touch Bar アプリケーションが次々に登場する状況づくりだ。

アップルの製品開発において新機能を発表するまでには、かなり成熟したソフトウェア環境と、かなり成熟し洗練されたハードウェアプロトタイプが必要だとジョニー・アイブ氏は言っている。 つまり、他社に先行するために、できたら素早く出荷という手順や、使えないから没という手順ではなく、何度も完成品まで具体化した上で更に洗練してから製品化となる。 それは仕様です、が通ると考えている開発者や、批判ばかりする開発者には製品を洗練させることは無理だ。 また、カラー バリエーションを徐々に増やすという一見つまらないことでもある程度は稼げるのだから、タイム イズ マネーではない。 そうしてまで開発チームに洗練させる工数を与えることが重要だろう。 ただ、それでも任天堂はあまり画期的ではない商品を発表してしてしまったり、アップル製品でさえ最近は受け入れられない仕様が多くなったりと、開発が難しいのが現状ではあるが。

ソース
http://www.itmedia.co.jp/pcuser/articles/1611/17/news144_2.html
http://japan.cnet.com/news/commentary/35091570/
http://sakidori.co/article/44130
http://jp.techcrunch.com/2016/11/01/20161028why-apples-macbook-touch-bar-was-the-right-thing-to-do/

sage_p at 00:16|PermalinkComments(0)TrackBack(0)IT ニュース&コラム 

注目ニュースリンク 11/21

◇ マイクロソフト、The Linux Foundationに加入。
http://japan.cnet.com/news/business/35092309/
… SQL Server の Linux 版など、Linux も使えることへ貢献。

◇ Google、Microsoftの .NET Foundation に参加。
http://www.itmedia.co.jp/news/articles/1611/17/news057.html
… クラウドサービスを.NETライブラリに提供。

◇ Google News、トランプ氏に有利な偽記事を誤って表示。
http://japan.cnet.com/news/service/35092175/
… ブログの記事と信頼できるサイトの記事と同等に。 しかし、今回はマスコミが読み違え。

◇ Facebook、偽情報を排除する機能を開発するもリリース断念か。
http://japan.cnet.com/news/service/35092172/
… 偽情報がほんとうに偽情報であるかを見極めることは AI でも難しい。

◇ 猫でも分かるソフトウェアのテスト網羅(6):パス・カバレッジの王者の意外な弱点。
http://monoist.atmarkit.co.jp/mn/articles/1611/17/news013.html
… C2カバレッジは厳密だが偏っているし、検証効率が悪い。

◇ 新MapFanを96%オフの120円で販売開始、オフラインで使えるiOS-Android向け地図/カーナビアプリ。
http://internet.watch.impress.co.jp/docs/news/1030420.html
… バーゲンセール。 オフラインで使える。

◇ Android端末のファームウェアに隠し機能、ユーザー情報を中国に送信。
http://www.itmedia.co.jp/news/articles/1611/16/news059.html
… ファームウェアから中国へ、Android から Google へ情報漏えい。

sage_p at 00:16|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2016年11月07日

人工知能の進化にみる論理的思考の限界と新しい開発プロセスの必要性

プログラムの品質を効率的に高める方法は、レビューではありません。 なぜなら、PCや開発ツールがあたりまえのようにある時代になったからです。 囲碁の名人に AlphaGo という AI が勝ち、仕事がコンピューターに奪われることが言われましたが、それは、生産だけでなく開発においても品質チェックを人間が自力でする必要がなく、AI や PC に任せられる状態であり、そのとおりになりつつあると思います。 つまり、自動プログラミングで出来たプログラム(実装工程や詳細設計にあたる中間層)をレビューする開発プロセスが必要なくなるのです。 結果さえよければよいのです。

1970年代の AI(人工知能、artificial intelligence)は、エキスパートシステムの開発が盛んにおこなわれていました。 「もし取ることができる将棋の駒があれば、取る」、「もし、熱が出ていたらインフルエンザの可能性がある」、といったルールベースや知識ベースがあり、現在問題になっていることにどのベース(内包的定義)が適用できるかを検索することで演繹的推論を自動的に行う「推論エンジン」が AI のコアでした。

コンピューターの記憶量は膨大で複雑な処理も高速に実行できることから、あらゆる専門家の知識を持って瞬時に判断することができると妄想が膨らんでいましたが、現実は、暗黙知や抽象的で複雑であるために定式化できない知識があったり、知識の間で矛盾があったり、知財はそう簡単に入手できないことがあったり、知識のパターン マッチングがキーワードの検索だけで画像検索などがなかったりして、1990年代にはついに AI の停滞期を迎えてしまい、AI(コンピューター)は、よくバカな答をするというイメージが定着してしまいました。

2000年代に入ると高速インターネットが普及して、グーグルは適切な検索結果を得るために膨大なホームページを分析するようになりました。 以前は、多くリンクされていれば良いページであるという判断基準で検索上位に表示するページランク技術が成果を挙げていましたが、これはまだ推論エンジンの域を超えていません。 ページランクのような法則が他にもないかを調査すること(特徴抽出)を、コンピューターで自動化するようになったこと、つまり、人間の頭脳によって法則をハード コーディングしなくなったことが、人工知能のディープラーニング(深層学習)と似ていたことで、グーグルが人工知能に注目するようになり、その研究で最先端を行く ディープ マインド社を2014年に 4億ドルで買収することになったのではないかと思われます。

検索に音声認識を付けると、SF映画2001年宇宙の旅に出てくる人工知能 HAL とほぼ同じになるので、検索≒人工知能です。 Siriやコルタナを試すと、インターネット検索に丸投げして Wikipedia を見るなんてことがよくありますが、ホームページを検索するということが、1900年代のエキスパートシステムが行っていることとほぼ同じだからです。 AI の定義は変わっているのです。

ディープ マインド社は、買収される当時、シミュレーション、電子商取引、ゲームが学習対象でしたので、グーグルが検索の人工知能を手に入れたかどうかは不明です。 しかし、グーグルには検索の学習材料となるホームページや広告のクリックデータをすでに持っていますし、収集能力も強力なので、人工知能を育てるよい環境があります。

ディープラーニングは機械学習の一種です。 機械学習は「明示的にプログラムしなくても学習する能力をコンピュータに与えること」とアーサー・サミュエルが1959年にすでに定義しているように、古くからある手段です。(プログラムが不要なのは学習する対象だけで、メタな学習プログラムは必要です。) 機械学習のうち教師あり学習は、問題と答の多くの例から、近い問題に演繹的に答えるためのパラメーターや手段の組み合わせの選択を洗練させることです。 たとえば、秘伝のタレは、玉ねぎ:ソース:だしが n:m:p の割合で、n:m:p = 1:2:3 といった具体的な値が知識です。 教師なし学習は、特徴を分類することです。 完全にバラバラであったり、すべてに共通するものではなく、目標とする規模や数のクラスターに分類できる特徴(属性の種類やその値の範囲など)がどれなのかを抽出することです。

ディープラーニングは、入力層(問題)、中間層、出力層(答)からなるニューラル ネットワークから構築される教師あり学習において、中間層を何層にも増やしたシステムです。 教師なし学習によって問題と答の間の中間層となる仮定の作成と検証を自動的に行い強化学習を繰り替えすシステムです。 AlphaGo は、囲碁の名人同士の大量の試合の盤面をディープラーニングさせ、そうして強くなった AI 同士で対戦させた成果です。 その出力層(答)は、単純で、囲碁の勝利です。 その学習には、高速インターネット、高速な計算機、大容量ストレージによる膨大な情報(知識)の入手や処理や蓄積が必要になります。 それが簡単になったことと、分析モデルの構造に脳科学の研究結果や教師なし学習の結果などを取り入れて洗練されたことで、ディープラーニングは劇的に成果を出すようになりました。 また、AlphaGo は、モンテカルロ検索による計算量の圧縮も行っています。

人間の学習は丸暗記の要素が大きいですが、機械学習での暗記はただの記録になってしまうため、暗記は対象外です。 小さい子が、玉の形をしたものが転がることや、バカ騒ぎをすれば怒られるといった因果関係のうち、良いと定義された結果になる条件を大量のデータ(外延的定義)からトライ&エラーで探して概念を形成することが機械学習です。 機械学習は、データの相互の関係から規則性やパターンを見つけます。 人間でいえば帰納的推論が行われているのです。

つまり、大ざっぱにいえば、1900年代は内包的定義から演繹的推論を行う AI が主流だったのが、2000年代になると外延的定義から帰納的推論を行う AI が主流になった、すなわち、帰納的推論を行う AI のほうが賢いということになります。 論より証拠というわけです。

なぜ大量のデータが必要なのでしょうか。 それは、将棋の詰みとなる(ある条件では、定義された良い結果に確定する)データが存在する可能性はデータが多いほど高いことと、定義された良い結果になる可能性が高い(スコアが高い)ことを該当するデータの数から決められることがあるからです。 後者の例を挙げますと、たとえば、野球場でバカ騒ぎしてもホームランが出たときは怒られないとか、敵チームの席にいたら怒られるとか、敵チームの席にいても実際に怒る行動まで起こさないとかあり、この場合、怒られるのが1ケース、怒られないのが 2ケースなので、66%の確率で怒られないので、スコアは66とできます。 確率論では、サンプル数(ケース数)が大きいほど確率の値が正しくなるので、大量のデータが欲しいという話になるのです。 スコアが満点になる推論が見つかれば、それは証明であり、演繹的に処理できるため、データは必要なくなります。

敵チームの席にいることを Google Maps などで検出できれば、その確率の値はより正しくなるでしょう。 敵チームの席にいれば 50% 怒られない、敵チームの席にいなければ、100% 怒られないとなります。 このような検出ができればいいのですが、できなければ、「明示的にプログラムしなくても学習する」機械学習の技術で処理することになります。

AI がなぜこれが正しい答えであるかと判断を下したのかは、論理的思考で、つまり、内包的定義から演繹的に論理的に説明できるものではありません。 Alpha Go の開発チームも AlphaGo がどのように考えたのか分からないといっています。 単に、AI が認識した状況は、過去に良い(スコアが高い)結果が得られることを学習済みの、謎の中間層の組み合わせを選択した、それだけです。 内包的定義に相当する中間層は、パラメーターの集合でしかないので意味は理解できません。 秘伝のタレがなぜうまいのかは、割合が1:2:3 だからと言われても、なぜその割合なのかを理解できません。 このことから、論理的思考は、最先端科学の発展に使えるものではなく、人間を説得するためにしか使えなくなったということが、事例によって証明されつつあります。

プロセスが大事といいますが、これも人間に論理的に説明するためです。 豊洲市場の盛り土がされていないから汚染水が問題だとして世間を騒がせましたが、盛り土の代わりに空洞を作って建設コストを下げた結果であり、安全性の意識が都に低かったわけではありません。 トップまで報告されていなくても(目的に合っていることを確認すれば)報告する必要はないのです。 請負では仕事の仕方や残業を指示することができませんが問題ありません。 また、よい結果を出すためのプロセスが明示された形式知のルールより、ルール無用の暗黙知のほうがスコアが高いことがよくあるのですが、有効性が知られている形式知のほうが知識ゼロより良いですが、有効性が知られていない暗黙知のほうが効率が良ければ、レビュープロセスを踏んだほうが競争に負けてしまいます。 形式知にしなければ技術の伝承が難しいのは確かですが、それは昔の話で、今は暗黙知をプログラムやAIというブラックボックスにして伝承できるのです。

プログラムのコード(テスト対象)は、内包的定義に、テスト プログラムは、外延的定義に、ほぼ綺麗に分かれます(IT ニュース&コラム 2016/ 2/29 通巻707号を参照)。 この状況と 内包的定義の妥当性の検証よりも外延的定義の妥当性の検証を重視したほうが品質が高くなる AIの事例が増えていることから、コード レビューよりもテスト プログラムの開発(TDD、テスト駆動開発)を重視したほうが短期間で品質が高くなると言えるでしょう。 コード レビューはリーダブル コードであるかの検証や、中間層と合っているかの検証にはなりますが、その中間層を使えば正しい出力が得られる仕様であるかの検証をすることには使えません。

なぜなら、AI がなぜ正しい答えを出したかを論理的に理解できないように、外延的定義の妥当性を複雑な内包的定義から理解することは難しいからです。 また、 私たちの日常言語や実験科学の手法に近いのは帰納法であり、帰納法は素朴ですがとても強力な理解方法です。 単純な内包的定義(プログラム)であれば、例外もないので「外延」と「内包」は相補的な関係にあり、どちらも欠かすことができないのですが、それが言えるのは 1900年代の AI が扱える狭い範囲しかありません。

羽生善治さんが言った「学習の高速道路」が敷かれると人間は自力で問題を解く必要はなくなり、ホワイトカラーの仕事をすべて AI に丸投げできる天国になるかというと、そうはなりません。 AIの実績を見ていくと、楽しく外延的定義のセンスを磨くことと、常識や好き嫌いなく AIや人間の得意不得意有効性の進化を理解することが人間に求められると思います。 過去の成功法則・根拠・技術はAIや人間がどんどん変えていきますが、道は1つではありません。 そのように勉強内容やテスト(能力の評価方法)も変えなければなりません。

参考:
http://www.itmedia.co.jp/enterprise/articles/1609/05/news043.html
https://ja.wikipedia.org/wiki/AlphaGo
http://japan.cnet.com/news/business/35043049/
http://minerva.cs.uec.ac.jp/~ito/entcog/contents/lecture/date/5-yoshizoe.pdf
https://ja.wikipedia.org/wiki/エキスパートシステム
https://ja.wikipedia.org/wiki/機械学習
https://thinkit.co.jp/story/2015/08/31/6364
https://www.ibm.com/developerworks/jp/linux/library/l-machine-learning-deep-learning-trs/
https://jp.mathworks.com/help/stats/supervised-learning-machine-learning-workflow-and-algorithms.html
http://d.hatena.ne.jp/gginc/20080206/1202275749
http://pixy10.org/archives/585508.html

sage_p at 00:11|PermalinkComments(0)TrackBack(0)プログラミング 

注目ニュースリンク 11/ 7

◇ Watson搭載の AI電子黒板登場、会議のムダを指摘する見張り役に。
http://www.itmedia.co.jp/enterprise/articles/1610/27/news049.html
… 会議の進行は怪しそうだけど、自動翻訳は使えそう。

◇ アドビがAIプラットフォーム Adobe Sensei を発表。由来はあの日本語。
http://japan.cnet.com/news/service/35091597/
… インテリジェントな画像処理。 芸術科の先生。 Microsoft Azure を使用。

◇ Microsoft Concept Graph を公開。
http://www.atmarkit.co.jp/ait/articles/1611/04/news067.html
… 地味だが AI の Web API に期待。

◇ Surface Studioの謎、Surface Dialはどうやって吸着してるのかに公式回答。
http://www.itmedia.co.jp/news/articles/1611/06/news022.html
… Adobe の協力が欠かせない。 ゲームでも使えそう。

◇ ついに日本対応開始! 開発者が知っておきたいApple Pay決済アプリの仕組みとPassKitの使い方。
http://www.atmarkit.co.jp/ait/articles/1610/26/news018.html
… 店はカード会社だけでなくアップルにも決済手数料の負担へ。

◇ MicrosoftのHMD、HoloLens 日本で発売。
http://www.itmedia.co.jp/news/articles/1611/01/news102.html
http://japan.cnet.com/news/commentary/35091264/
… 値段は 3000ドル。 ユーザーはコンシューマーではない。

◇ 新MacBook Proが得たものと失ったもの。
http://www.itmedia.co.jp/pcuser/articles/1610/28/news061_2.html
… Touch Bar に iPhone と互換性があればいいのだが。

◇ 約3分の1の企業が毎月数回の運用ミスや障害発生。課題は運用担当のスキル不足、自動化できてないなど。
http://www.publickey1.jp/blog/16/31.html
… vbslib の利用や高級なデバッガーを充実させるなどの支援がないと無理。

◇ Linux財団傘下に JS Foundation が発足、ESLint、Appium、jQueryなどをホスト。
http://www.publickey1.jp/blog/16/js_foundation.html
… 長期サポートのためにはこのような継続性が必要。

◇ タブのツリー表示をサポートした国産Webブラウザー Kinza。
http://forest.watch.impress.co.jp/docs/news/1028039.html
… ツリー表示は非常に画期的! 今後のブラウザーの標準機能になりそう。

sage_p at 00:10|PermalinkComments(0)TrackBack(0)注目ニュースリンク 

2016年10月24日

アマゾンが講談社の電子書籍を無断で配信を停止

2016年 10月 3日、講談社は、アマゾンジャパンの電子書籍の定額読み放題Kindle Unlimited に提供していた作品すべてを削除されたとして強く抗議するプレスリリースを発表した。 ただし、裁判は起こしていない。

Kindle Unlimited は、毎月定額を払ったユーザーに対して、多くの電子書籍が読めるサービス。 まず、無料体験でどれだけの本が読めるのかを確認でき、その後、30日を過ぎれば自動的に有料になる(レ点商法、解約商法)。

一方で、アマゾンは、著作権者や出版社に定額を分配しているわけではなく、読まれた本の部数に応じて著作権料を支払っている。 おそらくこのビジネスモデルでなければ、出版社は出版を許可しないだろう。 出版不況と言われているぐらいだから。

今年中は、電子書籍の普及の目的もあり、10%以上読んだら1冊読んだ分の著作権料が支払われる特別契約があった。 だからとは限らないが、アマゾンから著作権料を支払う予算がなくなったのが理由らしい。 利用者が増えればまだ持続できたかもしれない。 しかし、アマゾンの社内の話であり、供給不足のリスクが現実となったことの責任は取るべきであるだろう。 リスクをアマゾンが負わなくて済むのは、独占的地位による力関係が背後にあるとみるべきだろう。

出版社にとっては、せっかく売れるように努力しても、一定額以上は儲けられないという制限をアマゾンにかけられていることが明らかになった。 これは大問題である。 なぜなら、大ヒットする商品はどの企業でも一部の商品に限られているからだ。

サービスを利用する側にとっても、突然の削除によって迷惑を受ける。 読めるはずだった作品が読めなくなるということは、嘘をつかれたことと同じだからだ。 読み放題だから払い戻しをしない、約束していないし契約に書いてある、という理屈は、損をした気分になるという事実を変えられない。 読もうとした本がなかったり、削除されなかったという人は損はしないが、それがすべてのように扱うのはおかしい。

電子書籍を1冊ずつ購入した場合でも、サイトが閉鎖されると購入した作品も読めなくなることが過去にも何度もあった。 もちろん、読む権利だけを購入したことに同意した形になっているので、法律上では問題はないし、それに比べればアマゾンの対応はマシかもしれない。 勝手に削除することができる契約になっている可能性もある。 しかし、電子書籍への不信感は消えない。 超王手のアマゾンでなければ、サイトは閉鎖せざるを得なかっただろう。

ソース
http://www.kodansha.co.jp/upload/pr.kodansha.co.jp/files/pdf/20161003amazon.pdf
http://toyokeizai.net/articles/-/139256
https://gooddayslabo.net/society/kindle-unlimited-kodansha

sage_p at 00:17|PermalinkComments(0)TrackBack(0)IT ニュース&コラム