2017年08月15日

HTML5 版ゲームのサービス開始や会社の設立が相次ぐ

2017年 7月18日、ヤフー ジャパンは、ブラウザーだけで楽しめるヤフー ゲームに、ヤフー ゲーム プラスのサービスを開始した。 ヤフー ゲーム プラスは、クラウドゲームと HTML5 ゲームの2種類があり、前者はサーバーで動作するゲームを映像配信する。

また、8月4日、楽天ゲームズは、名作シューティング ゲーム DARIUS を HTML5 に移植した DARIUS THE ORIGIN の配信を開始した。 これまではナムコのレトロゲームが主力製品だったので、少し進化したことになる。 バンダイナムコとドリコムも HTML5 ゲームを開発する BXD 社を 5月に設立した。

ブラウザーゲームで最も成功しているのは、2013年から開始された DMM の艦これである。 440万人以上登録しており、現在でも新規サーバーが解放されるまで新規に着任できない状態にある。 艦これは、ブラウザーゲームといっても、実際は、Flash 上で動作している。 2016年からは Google Play ではない Android 版を提供している。

なぜ iOS や公式の Google Play から提供していないかというと、iOS のアプリや Android のアプリは、課金するときに30%もアップルやグーグルに取られてしまうからだ。 AppStore が登場して 9年になるが、未だに 30%のまま徴収しており、完全に寡占による不当な価格である。 15%に下げる条件もあるが、それは例えばユーザーが 2年目以降に課金した場合であり、非常に難しい。 ただし、任天堂のスーパーマリオ ランのようなビッグタイトルでは個別契約しているかもしれない。

ファミコンやプレイステーション1の場合、まだオンライン購入ができないために小売店のマージンが最も多く、単純な比較はできないが、ソフトメーカーから見れば、定価の 60〜70%も取られていたことを考えると 30%は安い。しかし、ハードメーカーのロイヤリティは、15%〜20% だ。 Switch や PS4 については、情報が見つからなかった。 ロイヤリティだけを考えれば Windows がいいだろうが、最近はスマホのユーザーのほうが圧倒的に多いため、ロイヤリティの問題を考えざるをえなくなった。

HTML5 で動作するゲームの現状は、2Dグラフィックスの古いゲームやアクション性がないゲームばかりだ。 ゲーム開発環境 Unreal Engine や Unity にもロイヤリティが発生するのだが、それが古いゲームばなりになる要因の1つかもしれないが、おそらく、HTML5 には対応しているが、本格的なゲームを作ると遅かったり表示されなかったりと、完全対応まではできていないのだろう。 楽天ゲームズが海外のエンジニアを前面にホームページで紹介していることからも、鍵は開発環境の出来なのだろう。

まとめると、ゲームの内容やターゲットユーザーに応じて、どこにロイヤリティを支払うのが最も良いかという話なので、HTML5 だからロイヤリティが不要で最も利益が發い箸いγ噂磴箆辰任呂覆い箸いΔ海箸澄

ソース
http://gamebiz.jp/?p=189159
http://corp.rakuten-games.com/
https://gamedeets.com/archives/256383
http://www.4gamer.net/games/032/G003263/20150826035/
http://kotetsu.game-waza.net/ゲーム売上・考察/ゲームソフトのロイヤリティをまとめ 任天堂、sceの取り分は-
https://www.unrealengine.com/ja/faq
https://developer.nintendo.com/
http://jp.gamesindustry.biz/article/1702/17022102/

sage_p at 01:53|PermalinkComments(0)IT ニュース&コラム 

注目ニュースリンク 8/14

◇ ビットコインから分裂した、ビットコインキャッシュとは何者か。
https://japan.cnet.com/article/35105311/
https://japan.cnet.com/article/35104451/
… 取引スピードが遅くなってきたため、バージョンアップ。

◇ WannaCry 犯人、身代金のビットコインを全額引き出し。14万ドル相当。
https://japan.cnet.com/article/35105298/
… 犯人は引き出しに成功した。 ビットコインでは追跡する機関がないのでは。

◇ 歩けば保険料の一部をキャッシュバック。フォッシル、MISFITでヘルスケア事業に進出。
https://japan.cnet.com/article/35105286/
… 1日8000歩以上ならキャッシュバック。 OEMで広がるか。

◇ コンソールが24bitカラーに対応。Windows 10 Insider Preview。
http://forest.watch.impress.co.jp/docs/news/1074095.html
… 実は未だに 256色しか対応していなかったコマンド プロンプト。

◇ Raspberry Pi3と同サイズで性能2倍のASUS製 Tinker Board が国内発売。
http://pc.watch.impress.co.jp/docs/news/1073926.html
… 価格は、1.5倍。NASとしても使えそう。

◇ 独自の言語使用法に行き着いたAI は人類を危機にさらすものなのか?
http://gigazine.net/news/20170802-facebook-ai/
… 理解できない原因のほとんどは、意味のない会話だからではないか。

◇ グーグルのエンジニアが自社の多様性志向を批判、性差別と内紛に。
https://japan.cnet.com/article/35105380/
… 人種や性別で判断しないのならいいが、劣っているのに無理矢理同じ数にするのはどうか。

sage_p at 01:53|PermalinkComments(0)注目ニュースリンク 

2017年07月30日

人が死んだバグ、セラック25の事故から学ぶべき Nancy 教授の教訓

2017年 7月、cpprefjp - C++日本語リファレンスの bool 型に対するインクリメント演算子が C++17 から仕様から削除された理由を推測する文において、バグによって 3人が死亡した放射線被曝事故が紹介され、「人が死ぬバグ」としてツイートされた。 しかし、実際は、風が吹けば桶屋が儲かると揶揄されるように、因果関係はない。

bool 型に対するインクリメントのサンプルとして以下の C++14(2014年版 C++言語)のコードが挙げられている。

#include <iostream>
#include <vector>

int main()
{
 std::vector<int> v{};
 //append elements to v
 int8_t flag = 0; // as bool type
 for ( auto&& i : v ) { // range-based for loops (for each)
  if ( flag++ ) { std::cout << ','; }
  std::cout << i << std::endl;
 }
}

このコードは、for 文の中の if ( flag++ ) にバグを含んでいるらしい。

変数 v は、STL (Standard Template Library) による整数の配列である。 for 文のループ変数 i には、v の配列要素が入る。 なお、この for 文の書き方は、range-based for loops という言語仕様であり、一般的には for each 文として知られている。(一般に知られている for each というキーワードを使わないことにC++ の仕様策定者のセンスの無さを感じる)。 ここでは、STL とか for each とか、配列の実装方法については関係ないので無視していい。

flag は 8ビット整数型(int8_t)であり、for 文の中でインクリメント(++演算子によって、変数の値を+1)している。 if 文が真になる条件は、flag 変数をインクリメントする前の値が 0 以外のときである。 int8_t 型が扱える値の範囲は、一般的な CPU では、-128 〜 +127 であり、+127 から +1 するとオーバーフローを起こしてエラーもなく -128になる。 よって、最初(1回目)と 257回目と…(1 + 256 * n 回目)に、if 文が偽になる。

最初だけ if 文が偽になる仕様に対するコードであれば、このコードにはバグがあるということになるというわけだ。

ただし、1 + 256 * n 回目にコンマを出力しないという仕様であれば、バグではないのだが、一旦伏せておく。

問題は、コンマが出力されないために、前の出力値と結合した値が出力されてしまったことである。 たとえば、256回目の値が 123、257回目の値が 45 なら、256回目の値が 12345 という値に大きくなってしまい、おそらく放射線の出力が 100倍近く通常より大きい値になってしまったことで、死亡事故になったのだろう。

この死亡事故は、史上最悪のソフトウェア バグの1つとして知られている 1987年の「セラック25」という放射線治療装置の誤作動として知られている。(本当にこのコードが原因であるかは不明)

当時は、C++言語は普及していなく、実際のコードはアセンブラで記述されていた。 当時の CPU は、インクリメント命令がよくあり、アセンブラの1命令で簡単に記述でき高速に動作したのだろう。 ちなみに、現在の CPU は +1 や -1 だけ特別な命令にはなっていないものも多くあり、高速でもない。 C言語の ++/-- 演算子は、この古い CPU 仕様やその背景にある +1, -1 が多かったことから生まれているのだが、現在では特に多いわけでもなく、for each が多く使われるので、たまに ++ が書いてあって何だこれとなることがないように、Python のように += 1 のように書くのがいい。 また、1が明示されていて読みやすい。

インクリメントの不具合から得られる再発防止策や教訓を考えるとすると、bool 型(として扱う変数やレジスター)にはインクリメントしないようにしようとか、オーバフローに気を付けようとか考えるのが一般的であろう。 ソフトウェアがよく分からない人に説明するときは、この説明のほうが明快でいいだろう。 しかし、実際はそんなに簡単なことではなく、再発防止にはつながらない。 なぜなら、前述のとおり、1 + 256 * n 回目にコンマを出力しない(または、改行に変える)という仕様であれば、バグではないからだ。(よく分からない人には混乱を生むだけなので説明しないほうがいいだろう。 つまり、相手によっては、明快な説明だけで不具合ゼロと自信をもって断言するのがよい。)

バグであるかそうでないかは、内部実装だけでは決まらない。 外部仕様と違っているかどうかで決まるのである。 よく、プロセスが品質を上げると言っているが、プロセスという言葉からは内部実装や実務をイメージしがちであるので、内部実装だけ時間をかけてレビューしがちであるが、それは見当違いである。 もっと積極的に優先的に外部仕様に関わるべきであるり、それゆえ、要求者は、外部仕様が神であると押し付けてはならないし、実装者は、要求の変更を多少は受け入れを覚悟すべきである。(ただし、開発の最終段階では Fix を優先し、次のバージョンで変更を反映する。)

セラック25の事故を調査したマサチューセッツ工科大学の Nancy Leveson 教授は、事故調査を終えて次のような教訓を書き残している。 まさに、バグであるかそうでないかは、内部実装の品質だけでは決まらないのである。 プログラミングの教科書に是非とも載せるべき内容である。

・ソフトウェアはどんなに慎重に作っても満足できるほどに完璧にはならないため、ソフトウェアがどんな動きをしたときでも、人命に危険が及ばないようにシステムを設計する必要がある(フェールセーフ、独立した安全装置の設置など)

・ソフトウェアの信頼性をできるだけ高めるのは悪いことではないが、それでソフトウェアが安全になるわけではない。プログラマは要求を満たすようにコードを書くが、要求が正しいとは限らない。事故のほとんどは、プログラミングのエラーではなく、要求が間違っていたり、不完全であったりしたために起きている

・われわれの目標は、だれもがこの経験を生かせるようにすることであり、装置のメーカーや他の人を批判することではない。間違いは、このメーカーにだけ起きたのではなく、残念ながら、安全が最優先されるべきその他のシステムにも、きわめて日常的に起きている

・いくつかの出来事が複雑に絡み合って起きた事故が、一つの原因にされることが多すぎる。ほとんどの事故は、システム事故、つまり、さまざまな構成部分や機能が複雑に作用しあって起きるものだ。事故の原因を一つに特定することは、大きな間違いだ。

セラック25の時代は、ソフトウェアのほうが劣化するハードウェアよりも信頼性が高いと信じられていたため、実はソフトウェアは安全ではない、という感じで書かれている。 現在では、ソフトウェアかハードウェアかは関係ない。 それぞれのレベルで独立したチェックすること、多重化することが重要なのである。 セラック20(25の前)では、時折ヒューズが飛んで結果的に事故を防いでいた。 しかし、ヒューズというハードウェアが重要なのではない。 放射線の出力を制御する範囲を制限したり、放射線の出力を計測して警告するシステムを追加したりすることが重要だ。 ヒューズは前者の1つの方法にすぎない。

TDD(テスト駆動開発)では、Nancy 教授の教訓を最優先に考慮している状況にあるため、開発コストの割には品質が高い。 要求の例がそのままテストのコードになるため、要求の問題が見つけやすいからだ。 逆に、内部仕様やコードから要求に合っていることを確認することは難しい。 私はこの内部仕様と要求にある性質を「内包と外延のギャップ」と呼んでおり、そのギャップに矛盾がないこと(ギャップを埋めること)をテストプログラムなどで実証し、その品質保証の範囲を現実的かつ広くすることが品質向上のカギであると考えている。 内部仕様をいくら厳密に長時間レビューしても、不具合ゼロという要求に対する悪魔の証明(ないことの証明)はできないので、現実的な範囲での実証が不具合ゼロの要求に対する現実解なのである。(これを理解できない人には説明するだけ無駄なので、不具合ゼロと断言する。)

多重化したシステムの安全装置は、セルフ テストと呼ぶことがあるが、TDDで品質を確保するために開発するテストとは異なる。 なぜなら、品質を上げるためには、内包と外延のギャップを埋めなければならず、安全装置のコードは内包的定義で記述され、テストは外延的定義で記述するから、全く別物だ。 つまり、安全装置が何かのテストに相当するかもしれないが、安全装置自体のテストは別途必要だ。

また、多くの開発プロセスに見られるような、ユニット テストを先に完璧に仕上げれば、後の工程から戻らないから効率的である、という主張は、誤りであることも、Nancy 教授の教訓から言える。 事故のほとんどは要求の問題なので、スパイラル開発や、スケルトンやプロトタイプを用いた結合テストやフィールド テストを早期に行うべきなのである。 そうしないと、ユニット テストが無駄になるので、非効率なのである。

ちなみに、IPA(独立行政法人情報処理推進機構)は、「大規模・複雑化した組込みシステムのための障害診断手法」を発行しているが、最も重要である Nancy 教授の教訓がない。 また、FTA/FMEA は、要因事象の発生頻度を集計してその重大事象の発生頻度を計算する手法、つまり劣化するハードウェアの保守の話なのに、ソフトウェアの問題を発見する手法であると見当違いなことを書いている。 単に現象には原因があるだけのことなので、学ぶことは特にない。 対象が古いシステムから抜け出せていないのではないだろうか。 マスコミの批判もそうだが、日本人は優先度が低い古い価値観を無視できないために多くの無駄を生んでいるように見える。

https://cpprefjp.github.io/lang/cpp17/remove_deprecated_increment_of_bool.html
http://ecompliance.co.jp/MedicalDevice/SW/Therac-25.html
http://codezine.jp/article/detail/3699
http://qiita.com/rinse_/items/cdfce8aa6a685a8ebe0c
http://www.ipa.go.jp/files/000045158.pdf
http://www.geocities.jp/takaro_u/fta.html

sage_p at 20:31|PermalinkComments(0)プログラミング 

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

◇ グーグルの2段階認証、SMSからプロンプト方式への移行を推奨。
https://japan.cnet.com/article/35104345/
http://gootara.org/library/2016/07/g2fa.html
… 多くのアカウントを作成することの防止には使えるが、セキュリティ強化には使えないSMS。

◇ Tesla車の事故は自動運転機能のせいではない。運転者が当初説明を撤回。
http://www.itmedia.co.jp/news/articles/1707/18/news063.html
… Autopilot 機能を解除していたことを忘れたという新しい状態が危険なのでは。

◇ 車載システム向けのUSB Power Deliverについて。
http://ednjapan.com/edn/articles/1707/25/news017.html
… USB Type-C 対応 PC のように、USB Type-C 対応車と呼ぶ日が来る。

◇ 家の戸締まりをLINEで確認できる leafee Premium の先行版が公開。
https://japan.cnet.com/article/35104094/
… IoT の端末の地位を狙う LINE。

◇ Microsoft、Windows 10 の秋の更新で、ペイントのプリインストールは終了へ。
http://www.itmedia.co.jp/news/articles/1707/25/news050.html
… ペイント 3D でも、2D 画像を編集できるため。

◇ IDC Japan 国内3Dプリンティング市場予測。3Dプリンタ市場は終わったのか?
http://techfactory.itmedia.co.jp/tf/articles/1707/28/news004.html
… 3Dプリンターのバブル期が終わって安定成長へ。

sage_p at 20:31|PermalinkComments(0)注目ニュースリンク 

2017年07月16日

チケットの転売対策にも普及したSMS認証とその闇

2017年 6月30日、イープラスは、チケットの不正購入や高額転売などの根絶に向けて、会員登録をする場合は、6月29日から、SMS認証による2段階認証が必須となった。 既存会員は、11月16日から抽選の申し込みに、2018年 1月18日から一般発売の申し込みにSMS認証が必須になる。

SMS認証とは、これまでパスワードの入力で行ってきた本人確認を、そのパスワード入力だけでなく、携帯電話のショート メールに送られてきたワンタイム
パスワードでも行う方法だ。 単に2段階にすることでセキュリティを強化することが目的ではなく、一人で大量のアカウントを作成することを防ぐことが目的だ。 1つの電話番号につき、毎月千円払わなければならないことと、一人が大量に電話番号を持つことがキャリアに知られやすいことが担保になる。 ちなみに、IP電話用の050、IoT用の020から始まる電話番号はSMSが使えない。

2段階認証(2要素認証)が有名になったのは、Google がそれを始めたからであるが、キャリア メールも使えた。 キャリアを変更するとキャリア メールが変わってしまい大変なことになるため、現在は、NMP(ナンバー ポータビリティ)できる電話番号によるSMS認証が主流だ。 つまり、いつのまにか、NMPしないことのほうが難しい状況になっている。

SMSを1通送るのに10円弱かかるが、Google は特別な契約をしているのだろう。 ローソンチケット(ローチケ)では、会員に国際SMSの代金を払わせているが、何度も送ると高額であると非難され、対応を行った。

SMS認証は、LINE、ツイッター、メルカリ、ヤフオクでも使われており、一人が多くの人になりすますことが難しくなっている。 ただし、ツイッターなどは、一人で1つしかアカウントが持てないことは不便であるため、少しは複数アカウントが持てるようである。 LINE が普及し始めた当初は、電話番号が不正に売られることが懸念されたが、上場企業など身元が明らかな企業なら、そんな信頼を失うような行為はしないだろうという考えが広まってきて抵抗がなくなってきた。 ただし、大企業ならその考えでいいだろうが、見知らぬ企業では、その考えは注意すべきだ。

SMS認証があれば、一人が多くの人になりすますことが難しくなっているようだが、検索すれば、転売屋(せどり)は、すでにSMS認証を回避する方法を公開している。 まず、無料でSMS用の電話番号を取得出来るサービス(HeyWire、textPlus など)を利用する方法がある。 携帯電話がなくても、ログインしてメッセージを受信できるのだ。 しかし、現在では、電話番号を保持する通信会社を判別して、SMS認証できなくしている。

SMS認証の代行業者も現れている。 これは名義貸しにあたり、偽計業務妨害罪の可能性があるが、現実はヤフオクなどで検索すればすぐに見つかるほど堂々とSMS認証の代行が販売されている。 1000円弱かかるが、高額転売する転売屋にとっては、小さな額だ。

米国立標準技術研究所(NIST)は、SMS認証の安全性に警告を出している。 SMS はプロバイダー内に保護されたネットワークであるが、比較的古い技術であるため(施設に入ってウィルスを潜入させたりすれば)、傍受(インターセプト)が簡単であるという。

2段階認証と言っているが、Google アカウントなどでは、パスワードを忘れたと嘘をつけば SMS認証だけになり、実質1段階認証であることも問題だ。 パスワードを再発行するときでも、たとえば、個人しか知りえない質問(セキュリティ質問)とSMS認証のように 2段階認証すべきだろう。

このような状況で、チケットの不正購入や高額転売に SMS認証が有効なのだろうか。 ないよりはマシではあるが、名前が書かれたチケットと身分証による本人確認との組み合わせにしなければ、効果はないのではなかろうか。 実際には入場時に本人確認が行われないことがあるが、主催者はクレームを恐れず本人確認を徹底するのが良いだろう。 転売撲滅に協力してくださいともっと言ったほうがいいだろう。

ソース
https://japan.cnet.com/article/35103587/
http://app-review.poox.xyz/archives/632
https://www.bengo4.com/internet/1078/b_462538/
https://www.j-cast.com/2017/05/19298469.html?p=all
http://jpnpay.com/archives/561
https://japan.zdnet.com/article/35095393/
https://security.srad.jp/story/16/07/26/0920203/

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

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

◇ Microsoft、企業向け組織横断分析ツール、Workplace Analytics 提供開始。
http://www.itmedia.co.jp/news/articles/1707/06/news059.html
… メールを返事する時間や会議の時間が監視される。 非技術職にも効率の意識を。

◇ まだ7を使う? 2017年秋にWindows 10のセキュリティと管理機能はここまで進化する。
http://www.itmedia.co.jp/pcuser/articles/1707/05/news104_2.html
… リモートで特定のプロセスを停止させられる機能は悪用されそう。

◇ JSONデータからTypeScriptのコードを生成するVisual Studio Code拡張機能 JSON to TS。
http://forest.watch.impress.co.jp/docs/review/1068942.html
… 型がない JSON から、型を分析。

◇ 超高速交通システム Hyperloop、真空チューブ内で初の試験走行に成功。
https://japan.cnet.com/article/35104259/
… 空気漏れの検出に IoT の技術を。

◇ UbuntuがMicrosoft公式のWindowsストアからダウンロード可能に。
http://gigazine.net/news/20170711-ubuntu-on-windows-store/
… Windowsストアから提供するのにユニバーサルではない。

◇ 暗号化ツール、アタッシェケース に未修正の脆弱性、暗号化ファイルの実行には注意を。
http://forest.watch.impress.co.jp/docs/news/1070740.html
… 7zipの暗号化に切り替えよう。

sage_p at 22:57|PermalinkComments(0)

2017年07月02日

Keyword Substitution の違いを無視して比較する DiffWithoutKS

vbslib の DiffWithoutKS コマンド(ショートハンドは diffks)は、Keyword Substitution(例:$Date: 〜 $)の違いを無視して比較するために、KS の値をカットしてから比較ツールを起動します。

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

Keyword Substitution は、ソースファイルの中の $ から $ で囲まれた部分です。 たとえば、下記のようなテキストです。

:
$Author: user1 $
$Revision: 43 $
$Date: 2016-10-26 11:07:39 +0900# $
:


Git や SubVersion といったバージョン管理ツールでは、コミットするタイミングで、Keyword Substitution の値を自動的に編集します。 $Revision: は、バージョン管理ツールが定義するコミットのリビジョン番号です。

Git や SubVersion では、変更があったファイルだけ Keyword Substitution の値を編集するため、vbslib の DiffWithoutKS コマンドを使うメリットはないのですが、たとえば、モジュールを構成するいくつかのソースファイルに共通したバージョン番号を Keyword Substitution 形式で記述するときにメリットがあります。(逆に言えば、そういったバージョン管理は、Git や SubVersion ではできないのです。)

たとえば、Example モジュールを構成する Example.c ファイルと Example.h ファイルの中に、以下の Keyword Substitution とコードがあるとします。

Example.h
/* $Version: 1.01 $ */
/* $Revision: 101 $ */
extern int g_Global;


Example.c
/* $Version: 1.01 $ */
/* $Revision: 101 $ */
int g_Global = 1;


このリビジョンから、g_Global 変数の初期値を変えたら、バージョン番号やリビジョン番号は以下のようになります。 ただし、$Version は、手動で、または Git や SubVersion 以外のツール(たとえば、vbslib の ModuleAssort2 )が編集し、$Revision は、Git や SubVersion が編集するものとします。

Example.h
/* $Version: 1.02 $ */
/* $Revision: 101 $ */
extern int g_Global;


Example.c
/* $Version: 1.02 $ */
/* $Revision: 102 $ */
int g_Global = 2;


$Version は、Example モジュールのバージョン番号を適切に表していますが、その代わり、Example.h ファイルを実質変更していないのに、ファイルの比較ツールでは「$Version: 1.02」の部分に変更があったと表示されてしまいます。 もし、モジュールを構成するファイルが何十もあるときは、実質変更がない多くのファイルに対して変更があると表示されてしまいます。

vbslib の DiffWithoutKS コマンドを実行すると、下記のように Keyword Substitution の値を削除してから、ファイルの比較ツールを起動します。

Example.h
/* $Version: $ */
/* $Revision: $ */
extern int g_Global;


この場合、「$Version: 」の部分に変更はありません。 バージョン番号を適切に表しながら、変更があったファイルを最小限だけ表示するようになります。

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

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

◇ イープラス、SMS認証を導入。チケット不正購入を根絶へ。
https://japan.cnet.com/article/35103587/
… 一人でたくさんのアカウントを持って大量購入することを禁止する。

◇ 強いキャラ持つバンダイナムコ VR施設やライブも展開。
http://trendy.nikkeibp.co.jp/atcl/column/16/021400099/062200014/
… アップルやグーグルと連携することで世界とライトユーザーに配信。

◇ Nintendo Switchを置くだけでスタンドになってバッテリーの充電も可能な外出時必携アイテム。
http://gigazine.net/news/20170701-nintendo-switch-mobile-battery/
… Switch 用スタンド付きモバイル バッテリー。

◇ Amazonが支配しようとしているのはオンライン通販ではなく商取引全体のインフラである。
http://gigazine.net/news/20170627-amazon-control-underlying-infrastructure/
… 独占すると、消費者の選択肢をコントロールしてしまう。

◇ 目指すは機械学習の民主化。Googleが考えるビッグデータ・AI活用の在り方。
https://news.mynavi.jp/itsearch/article/cloud/2825
… ビッグデータ解析プラットフォーム。 インフラ整備はグーグルにおまかせ。

◇ アンプとピアノを共同開発。オンキヨーと河合楽器が業界の枠を超えてコラボ。
https://japan.cnet.com/article/35103600/
… 楽器のデジタル化が進むとアンプも楽器の一部に。

◇ Mozilla Japan、組織名を WebDINO Japan に変更へ。米国から独立。
https://japan.cnet.com/article/35103585/
… Mozilla の活動が一段落したのか。

◇ HDMI出力/有線LANなどを増設できるUSB Type-C外付けドッキングステーション
http://www.itmedia.co.jp/pcuser/articles/1706/30/news086.html
… 実質 Mac 専用かも。

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

2017年06月18日

安心して手軽にボランティア活動ができる &HAND

2017年 6月 15日、LINE、大日本印刷、東京メトロは、障がい者(援助や配慮を必要としている人)とボランティア(そういった人を手助けしたい人)とをつなぐ、チャット ボットを使った「&HAND」の事業化を連携して進めると発表した。

似たようなシステムに東京都が作成した「ヘルプマーク」がある。 赤十字とハートを縦に並べて赤白を反転したマークだ。 ヘルプマークを付けている人に対して、席を譲ったり、状況を把握できていないような人がヘルプマークを提示していたら声をかけたりする、といったきっかけになるマークだ。 しかし、常にヘルプマークを提示することに抵抗がある人もいるだろう。

&HAND は、助けを求めている人と助けたい人の心理的なハードル下げることができる、スマホを活用したシステムだ。 具体的には、LINE Beacon(の &HAND 版)のボタンを押すと、近距離無線通信(Bluetooth)で bot が活動を開始し、bot が近くの &HAND を持っている人の LINE に定型文を送るシステムだ。 なお、LINE Beacon は、&HAND 以外でも使われている。

耳が不自由な人なら、すぐ近くに行かなくても、LINE のトーク(チャット機能)で音声で流れている情報を文字で提供するという活動ができる。 たとえば、電車が緊急停止して止まっているとき、耳が聞こえる人なら、なぜ止まっているかの情報が放送されてイライラや不安を解消できるが、耳が不自由な人にもそういった情報が与えられるというわけだ。 匿名でコミュニケーションをとるため、助けを求めることも助けることも心理的なハードルが低い。

目が不自由な人なら、本当に助けが必要なときだけ LINE Beacon のボタンを押せば、駅員や周りの人にスマートに助けを求められる。 声を出せばいいかもしれないが、もし、周りに人がいないかもしれないことを考えると声を出しづらいのかもしれない。

誰かが助けるだろうという心理や、助けるとプライドを傷つけて逆に怒られるかもしれないという心配から、都会の人は冷たいと思われているが、日本人は優しいと報道されているように、自分に助けを求められたらほとんどの人は助けるものだ。 そんなすれ違いを &HAND が解消してくれるだろう。

ソース
https://japan.cnet.com/article/35102842/
https://www.slideshare.net/atiektakizawa/hand-line-bot-awards-botawards
http://blog.feedmatic.net/entry/2017/01/20/184529
http://www.fukushihoken.metro.tokyo.jp/shougai/shougai_shisaku/helpmark.html

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

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

◇ スイッチは使わなくなった。 引っ越して半年の住民が話すIoTスマートハウスの住み心地。
https://japan.cnet.com/article/35102280/
http://n-styles.com/main/archives/2015/01/11-064500.php
… 一括コントロールできることが便利さにつながっているとのこと。

◇ Google、継続的デリバリに対応したデプロイ自動化ツール Spinnaker 1.0 正式リリース。
http://www.publickey1.jp/blog/17/googlespinnaker_10gcegkeawsazureopenstack.html
http://www.nttdata.com/jp/ja/insights/trend_keyword/2013061301.html
… 一部の先行ユーザーに対してだけリリースする「カナリア リリース」などが選べる。

◇ Project Scorpio 改め Xbox One X、11月7日に米国発売 PS4 Pro対抗4Kゲーム機。
http://www.itmedia.co.jp/news/articles/1706/12/news050.html
https://www.youtube.com/watch?v=g-gp-Voq6MQ
… 4K/60FPS という綺麗な画面でゲームができるが、シリアスな洋ゲーしかない。

◇ Qualcommが Snapdragon 835 で動くWindows 10をデモ 実際どんな感じ?
http://www.itmedia.co.jp/news/articles/1706/01/news155.html
https://www.youtube.com/watch?v=VeOQp5V7EgM
… x86 バイナリの 7zip が ARM で動いている。

◇ アマゾン、高級スーパーのWhole Foodsを137億ドルで買収へ。
https://japan.cnet.com/article/35102875/
… AmazonFresh と共存していくのか。

◇ アプリケーションを疎結合化するハブモデル。
http://news.mynavi.jp/series/informatica_dataready/004/
… データの依存関係をスパゲティにしない手法。

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

2017年06月05日

使っていないソースのセクションをカットする DoTextShrink

vbslib の DoTextShrink コマンドは、テキスト ファイル(C言語のソースなど)から、使っていないセクション(関数など)をカットします。 なお、セクションは、NauralDocs 形式のコメントで区切ります。

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

使っていない関数をカットする例を示します。 下記のような C言語のソース ファイルがあるとします。

int main()
{
 FuncA();
}

void FuncA()
{
}

void FuncB()
{
}


プログラム(コンソール型のプログラム)は、main 関数から始まるため、main 関数は必ず使われます。 次に、上記の FuncA 関数は、main 関数から呼び出されているので、これも使われています。 しかし、FuncB 関数は、どこからも呼ばれていないので、カットします。 カットしたら、下記のようなファイルになります。

int main()
{
 FuncA();
}

void FuncA()
{
}


ただし、DoTextShrink コマンドは、C言語の構文解析をして、関数をカットしてるわけではありません。 通常、関数(や構造体など)のすぐ上には関数を説明するコメントがあり、カットするなら、そのコメントもカットしなければならないからです。

C言語では、コメントが doxygen 形式になっていることが多いのですが、残念ながら、doxygen 形式では、関数名がコメントに含まれていないため、カットする関数のコメントであるかどうかを判断する情報がなく、カットできません。 そこで、DoTextShrink コマンドでは、NaturalDocs 形式を採用しました。 コメントがどの関数のコメントであるかの情報は勿論ありますが、NaturalDocs は読みやすいという利点もあります。 また、": "+ キーワードで検索することで、定義だけに絞り込んで、検索できるようになりますし、Snap Note の「プログラミング補助機能」で、クリックするだけで、関数定義(のコメント)にジャンプすることができるようになります。

逆に言えば、コメントを NaturalDocs 形式で書かなければなりません。 その手間がありますが、メリットのほうが大きいでしょう。 また、リリース先によっては doxygen 形式が要求されることがあるかもしれません。 そのときは、vbslib の ConvertDocumetCommentFormat コマンドで、NaturalDocs 形式を doxygen 形式に変換します。 変換できるため、マスターは、NaturalDocs 形式だけにしておくとよいでしょう。 (ただし、変換できない形式もあるので、使用する NaturalDocs の形式を限定するなど工夫してください。)

NaturalDocs 形式のコメントがあるソース ファイルをカットした場合、以下のように、FuncB のコメントもカットされます。

/*
* Function: main
*/
int main()
{
 FuncA();
}

/*
* Function: FuncA
*/
void FuncA()
{
}


NaturalDocs 形式は、主に、コメントの中の Keyword: (キーワードとコロン) を手掛かりに解析します。 よって、* を行全体に並べることもできます。

/***********************************************************************
* Function: SampleFunction
************************************************************************/


キーワードは、Function だけでなく、Structure などいろいろあります。 詳しくは、NaturalDocs のホームページを参照してください。

キーワードとコロンの次に、シンボル(関数名や構造体名など)を記述します。このシンボルを DoTextShrink コマンドがリードして、使われていないシンボルなら、そのコメントから次のコメントの先頭までをカットします。 コメントから次のコメントの先頭までを、セクションと呼びます。

使われているかいないかは、セクションの中にシンボルが単語単位・大文字小文字を区別で検索して、見つかったかどうかで判断します。 C言語の構文解析は行いません。

使われているかどうかの関係は、コンソール アプリケーションでは、main 関数をルートとしたツリー構造になっていますが、ライブラリでは main 関数とは限りません。 DoTextShrink コマンドでは、それを考慮して、特定のファイルをルートとして指定します。 指定したソース ファイルに定義されているすべてのシンボルがルート(使われているかどうかの参照元)として扱われます。

このように、使っていない関数をカットすることで、ソース ファイルを減らしたり、実行ファイルのサイズを減らしたりできます。 ただし、実行ファイルのサイズは、リンカーによっては自動的にカットすることができるため、その目的のためだけであれば、DoTextShrink コマンドを使う必要はないかもしれません。

ところで、プログラム ソースの管理の方針によっては、使っていないソース ファイルを削除することが要求されます。 開発しているうちに使われなくなった関数ができることがたまにありますが、そういった関数は余分なので削除しようということです。

しかし、使われていない関数を削除するという一見当たり前と思える方針には、副作用があります。 ライブラリ(バイナリだけでなくソースのライブラリも)では、アプリケーションによって使われれるのは一部の関数だけであることが普通で、だからといって他の関数が不要であるわけではありません。 他のアプリケーションでは使われる可能性があります。 よって(ライブラリからも完全に)削除するわけにはいきいません。 削除するという方針だから素直に削除しようとしてはいけません。 こういった乱暴な方針が、ライブラリという「資産」を増やせなくする要因なのです。

そこで、ライブラリとしての役割をしたソース ファイルをまるごとアプリケーションに追加して開発していき、最終テストをするとき、リリース物を作るときに、DoTextShrink コマンドで不要な関数を自動的にカットします。

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

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

◇ グーグル、Chrome に不適切広告のブロック機能を2018年に導入。
https://japan.cnet.com/article/35102147/
https://anagrams.jp/blog/better-ads-standards-starting-in-early-2018/
… 広告の大きさでブロックするのはいいが、内容でブロックされる基準は主観的。

◇ Nintendo Switch向けオンラインサービスは2018年開始に変更。料金プランなどが公開。
https://japan.cnet.com/article/35102171/
… スプラトゥーンやマリオカートなどのオンライン対戦は有料へ。1か月 200円〜300円。

◇ Intel史上もっともパワフルなデスクトップCPU Core i9-7900 シリーズ。
http://pc.watch.impress.co.jp/docs/column/kaigai/1062623.html
… サーバー用の Xeon CPU と同じか。

◇ 米政府、ビザ審査を厳格化へ。SNSのハンドルネームも対象に。
https://japan.cnet.com/article/35102165/
… 法による圧力だが技術的には穴だらけ。 軽犯罪は防げそう。

◇ Googleスプレッドシート、AIでグラフ作成が簡単に。自然言語を理解。
https://japan.cnet.com/article/35102157/
… MS-Office のイルカにならないか。 Google の AI で証明されたのは囲碁しかない。

◇ SketchとFigma、UIデザインの共同作業にはどっちが向いている?
https://www.webprofessional.jp/figma-vs-sketch-who-wins-the-war-on-multiplayer-design/
… 複数の Web デザイナーが同時に編集できる Web デザイン ツール。

◇ Webマーケターのための統計学入門(仮説検定・回帰分析編)がスタート。
https://www.webprofessional.jp/statistics-hypothesis-testing/
… Googleアナリティクスなどでアクセス分析した結果をどう判断したらいいのか。

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

2017年05月21日

ツイッターの機能にフォーラムの機能を追加したマストドン

2017年 4月、マストドン(Mastodon)というツイッターに似た SNS のサーバーが日本の各所で立ち上がるというブームが発生した。

マストドンの機能はツイッターとほぼ同じだが、ツイッターのようにサーバーが中央集権的ではなく、マストドンは P2Pで分散している。 新しいマストドンのサーバー(インスタンス)を立ち上げるときは、ソフトウエアが GitHub にオープンソースで公開されているので、ハードウェアさえ用意すればできる。

サーバーが分かれていることのメリットは、ツイッター社もしくはその会社があるアメリカの法律の影響を受けずに、ルールを作ることができることだ。

国によっては、タバコを吸うことが悪として広告を禁止したり、エロは規律を乱したり一部の人が不快に思うとして表現を禁止したり、国益に反するとして国の批判を禁止したりする法律があるが、禁止していない国もある。 サーバーが分かれていれば、他国の法律の影響を受けなくしたり、自国の法律に合わせたりすることができる。

また、サーバーは通常コミュニティ(フォーラム)ごとに分かれているので、コミュニティを快適にするためのルールを細かくしても合意を形成しやすいし、コミュニティを乱す人を出禁にしたりすることができる。 いわゆるクソリプの原因の一部を取り除くことができる。 インスタンスの中に入れば共感を得やすい投稿に出会う可能性が高くなり、インスタンスという場所を心地よく感じるだろう。 ちなみに、ツイッターでは、リプライをすべてブロックすることであれば、クソリプも取り除くことができる。

一方で P2P としてネットワークを構成しているので、サーバーをまたいで検索(横断検索)したり、サイトをまたいでユーザーの投稿をフォローしたりすることもできる。 これは、ツイッターと同じだ。

ただし、現在のマストドンは、インスタンスの中の投稿(タイムライン)を自由に見ることができない。 最新のわずかなタイムラインを見ることができるが、それ以上のタイムラインを見るには、いちいちアカウントの登録をしなければならない。 前述のとおりサーバーをまたいだ検索であれば投稿を見ることができるので、投稿自体は閲覧できる状態ではある。

現在、pixiv の pawoo.net、さくらインターネトの mstdn.jp、ニコニコの friends.nico が大きいインスタンスで、それ以外は数千人以下の規模のインスタンスのようだ。 しかし、人数が少ないことは悪いことではない。 ルールを明示しなくてもトラブルが発生しないことが多いし、すべての投稿を見ることができるからだ。 よって、同じテーマのフォーラムでも規模に応じて分けるほうが心地よくなるのかもしれない。

ソース
http://ascii.jp/elem/000/001/465/1465842/
http://k52.org/mastodon/
http://mastodonsearch.jp/
http://dairexia.com/twitter-manner/

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

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

◇ Googleの機械学習マシン TPU の第2世代登場。64台グリッドでは11.5PFLOPS。
http://gigazine.net/news/20170518-google-tpu-2nd-gen/
… TFRCに参加すれば、TPU というAI用スーパーコンピューターを利用できる。

◇ WannaCry 騒動とは何だったのか? 感染理由とその対策。
http://www.itmedia.co.jp/news/articles/1705/17/news106.html
… かなりの数の Windows に感染したウィルス。

◇ WannaCry 感染の98%は Windows 7 で XP はほぼゼロ。
http://www.itmedia.co.jp/news/articles/1705/20/news034.html
… 10もほぼゼロ。 やはりウィルス定義を最新に更新しておくことが最も重要。

◇ Windows 10 S 発表。セキュリティや性能重視、教育機関に適した新OS。
https://japan.cnet.com/article/35100695/
… Chrome が使えないのはいいが、Google 検索を選べないのは自殺行為。

◇ ソニー初、Ultra HDブルーレイプレーヤーを発表。4K HDRを高画質再現。
https://japan.cnet.com/article/35100827/
http://kakaku.com/kaden/article/4k-ultra-hd/
… 4K テレビには、Ultra HD ブルーレイ。

◇ MP3は死なず、ただ眠るのみ。特許が切れても寿命は尽きない。
https://japan.cnet.com/article/35101234/
… 特許が切れると普及するものだが。

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

2017年05月07日

ソース ファイルの一部を隠す CutSharpIf, CutComment

vbslib の CutSharpIf コマンドは、C言語などのソース ファイルに書かれた特定の条件分岐ディレクティブ(#if など)のコードを削除します。 CutComment コマンドは、C言語などのソース ファイルに書かれたコメントを削除します。

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

条件分岐ディレクティブは、コンパイルしたときに一部のコードだけコンパイルするようなコードに、次のように記述します。

#include <stdio.h>
#define USE_TEST_1

void main()
{
#ifdef USE_TEST_1
  printf( "1\n" ); /* Test */
#else
  printf( "0\n" ); /* Not Test */
#endif
}


上記のコードは、#define USE_TEST_1 の行があると、USE_TEST_1 マクロが定義され、printf( "1\n" ); が有効になり、printf( "0\n" ); が無効になります。 逆に #define USE_TEST_1 の行がなければ、printf( "1\n" ); が無効になり、printf( "0\n" ); が有効になります。 無効になったコードはコンパイルされず、実行ファイルに含まれなくなります。

条件分岐ディレクティブは、たとえば、リリースするコードの一部に、テスト用のコードが含まれるときに使います。 プログラムの提出先によって一部のコードを変更するときにも使います。 こういったコードを公開するとき、テスト用のコードや公開する相手以外のコードは隠したくなるでしょう。 たとえば、USE_TEST_1 を定義したときに有効になるコードを隠したコードは、以下のようになります。

#include <stdio.h>

void main()
{
  printf( "0\n" ); /* Not Test */
}


このコードは、vbslib の CutSharpIf コマンドを使えば、自動的に作られます。

番号またはコマンド >CutSharpIf
#ifdef 〜 #endif をカットします。
変換するソースファイルのパス(★上書きします)>C:\Source.c
#define シンボル >USE_TEST_1

1) 定義されているときのコードを削除する
0) 定義されていないときのコードを削除する
番号を入力してください >1
変換しました。


CutComment コマンドは、C言語などのソース ファイルに書かれたすべてのコメントを削除します。 /* から */ の間と、// から その行末までを、削除します。 コメントだけからなる行は削除され、それより下の行は上に詰められます。 日本語のコメントを英訳する時間がないときや、コメント以外に変更がないことを確認するときに使います。

#include <stdio.h>

void main()
{
  printf( "0\n" );
}


sage_p at 22:33|PermalinkComments(0)TrackBack(0)プログラミング 

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

◇ Amazonマーケットプレイスで詐欺業者横行。 商品届かず、個人情報漏れる恐れ。
https://headlines.yahoo.co.jp/hl?a=20170425-00006004-bengocom-soci
… 申告しなくては返金されないが、いつまで実施されるだろうか。

◇ UPQの4K-120Hz液晶、実際は60Hzだった。購入者には2千円の金券で対応。DMMは返金対応。
http://pc.watch.impress.co.jp/docs/news/1056499.html
… 120Hzから 60Hz の差額は2千円どころではない。 DMMの返品・100%返金するのが普通。

◇ アマゾン、生鮮販売開始を正式発表。独自の配送ネットワーク活用。
http://www.sankeibiz.jp/business/news/170421/bsd1704210500009-n1.htm
… 配送料500円が必要になるが、本当に配送業者に全額払われているのか疑問。

◇ 大手企業のBI導入率は8割、利用者は2割未満。 ガートナー調査。
https://japan.zdnet.com/article/35100297/
… フィードバックを集めることが大事。多くは一刀両断されるだろうが。

◇ MS前CEOバルマー氏が立ち上げた USAFacts。 政府機関の財務情報など明らかに。
https://japan.zdnet.com/article/35100154/
… 数字に強いバルマー氏、事実は数字から。

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

2017年04月23日

iOS アプリ版ツイッターだけが17歳未満で使用禁止になる

2017年 3月 25日、iOS版のツイッター アプリのアップデートがあり 17歳未満は使えなくなった。 今回はわいせつであることを理由に 13歳未満に制限をかける規約をツイッターが制定したが、iOSのペアレンタル コントロールの荒さのせいで12歳未満の次である17歳未満を禁止するという、かなり高い年齢制限になってしまった。 ただし、親が意図的に制限しなければ回避することができるため、大きな問題にはなっていない。

未成年を守るという名目で年齢制限を強める動きがよくあるが、本当にそうであるのか疑問に思うことが多い。 未成年はむしろ、わいせつな内容に興味がある。もしくは興味がない。 拒否反応を示すのは、一部の未成年の女性または年齢を重ねた女性だろう。 そして拒否するということは多様性を認めないことにつながる。 自分の子供とわいせつな話をすることに拒否反応する親も多い。 子供が全然言うことを聞かないから強制したい親も多いだろう。 その結果のような、大人げない対応をしているものばかりだ。 ツイッターに関しては、フォロワーから外すだけで簡単に見ないようにすることができるというのに。

問題があるとすれば、悪意のあるフォロワーからダイレクト メッセージを受け取り、言葉巧みに誘って被害に会ってしまうことだろう。 また、ホームページをクリックして架空請求をされてしまうことも未成年のほうがが多い。 請求された金額を不本意ながらでも支払う能力が未成年にはないので、親が禁止したがるのだろう。

未成年が犯罪に会うことが多い理由はおそらく、誘いに乗ったりクリックしたら危険な目に合うことを察知できないからだろう。 そして、大人数で会うようにするなどの対策を取ることに気が回らないからだろう。 よって対策は教育である。 年齢制限によって見られないようにすることは、そもそも危険に接しないので安全と考えられるが、そのような乱暴な対策は、副作用があるものだ。 回避方法を探ることを通じて危険な行動をしたり、学習する機会を失ってしまうことだ。 完全に遮断してしまったら、情報源となるませた子どもがいなくなってしまうことであり、悪い手口に対抗できない弱い人になってしまう。 よって、危険なことが起きることを教育する画面をスキップできないようにすることを年齢制限にすればよい。

そもそも、iOS のアプリに13歳未満に制限をかけることができれば、ここまで問題は大きくならなかっただろう。 他の SNS アプリや YouTube も 13歳未満を禁止または一部の機能を禁止にしている状況であるのに、アップルは全く改善しようとしない。 アップルのCEOであるティム・クックは、ゲイであることを告白しているが、子供の権利に関しては軽視しているようだ。 マイノリティの味方と思うのは間違いだ。

しかし、回避ができる制限というのは絶妙なバランスになっていると考えることができそうだ。 年齢制限を付けたい人々からのクレームを回避しつつ、それによって被害を受ける人が少ないからだ。 こういったダブル スタンダードの片方を真面目に守っていては副作用が大きいだろう。

ソース
https://japan.cnet.com/article/35098920/
https://news.allabout.co.jp/articles/c/468660/
https://news.allabout.co.jp/articles/o/20683/
https://www.youtube.com/watch?v=GYJEE92J-PI

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

注目ニュースリンク 4/24

◇ いま話題の Mastodon って何? 怒濤の1週間を振り返る。
http://www.itmedia.co.jp/news/articles/1704/20/news018.html
https://it.srad.jp/story/17/04/17/0746204/
… 自分もツイッターのサーバーの管理者としてルールを決められる。

◇ テレワーク全面導入の富士通に学ぶワークスタイル変革。
http://www.itmedia.co.jp/business/articles/1703/28/news120.html
… 回数制限がなくなったのが画期的。 疑心暗鬼になるか悪用されると成功しない。

◇ MasterCard、指紋センサを搭載するカードをテスト。
https://japan.cnet.com/article/35100128/
… スキミング対策はあるのだろうか。

◇ 生鮮食品を配達する Amazon Fresh、まもなく日本で開始へ。
http://buzzap.jp/news/20170418-amazon-fresh-japan-2017apr/
… 今のタイミングで開始するのは悪すぎないか。

◇ バーガーキングの新CM、OK Google と呼びかけ商品宣伝。グーグルが無効に。
https://japan.cnet.com/article/35099715/
… Googleの音声認識の宣伝になるけど、特定の顧客だけ有利にできないと判断。

◇ AKG初のLightningコネクタモデル N20LT。
https://japan.cnet.com/article/35099767/
… すぐ USB Type-Cになりそう。

◇ タイプライター風レバーをガチャっとできるBluetoothキーボード PENNA。
https://japan.cnet.com/article/35099727/
… 楽しそうだけど疲れそう。

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

2017年04月10日

マージがコンフリクトしても自動解決する ThreeWayMerge

vbslib の ThreeWayMerge コマンドは、同じテキスト ファイルをそれぞれの人が編集したことで、それぞれの編集内容が入った2つのファイルを、マージして1つのファイルに結合します。 一般に 3ウェイマージ (3 way merge) と呼ばれている処理です。 また、コンフリクトするようなときでも、設定ファイル作成して指定すれば、自動的にコンフリクトを解決します。


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

編集前(以後、前)、1つ目の編集後(以後、左)、2つ目の編集後(以後、右)のテキスト ファイルがあったとき、ThreeWayMerge の出力ファイルがどうなるかのサンプルを示します。
(等幅フォントでご覧ください)

前      左      右      出力
-------------------------------------
1 1 1 1
2 LLL 2 LLL
3 2 RRR 2
4 3 3 RRR
5 Both Both 3
LLL 4 4 Both
6 LLL RRR 4
RRR 5 5 <<<<<<< Left.txt
7 6 LLL LLL
Both RRR 6 ||||||| Base.txt
8 7 7 =======
8 8 RRR
>>>>>>> Right.txt
5
6
7
8


左の2行目では、前の 1の行と 2の行の間に LLL を追加しています。
右の3行目では、前の 2の行と 3の行の間に RRR を追加しています。
それらをマージした結果は、1, LLL, 2, RRR, 3 (コンマは改行)になります。

左と右で同じ内容を追加したときは、その追加がされたままになります。
左と右で異なる内容になったとき(コンフリクトしたとき)は、
<<<<<<< Left.txt
(左の内容)
||||||| Base.txt
(前の内容)
=======
(右の内容)
>>>>>>> Right.txt
となります。
左と右で追加したときだけでなく、削除・変更したときでもマージできます。

使うときは、vbslib Prompt.vbs をダブルクリックして、以下のように入力します。

番号またはコマンド >ThreeWayMerge
---------------------------------------------------------------
3ウェイ マージ(3方向マージ)をします。
ベースにするファイル >C:\Base.txt
更新したファイル(左側) >C:\Left.txt
更新したファイル(右側) >C:\Right.txt
マージした結果の出力先ファイル(★上書きします) >C:\_Merged.txt

コンフリクトしたときは、上記のように前・左・右のそれぞれの内容が入りますが、それではマージした結果としては良くありません。 そんなときは、手動でマージすることになります。 出力ファイルを開いて、<<<<<<< などで検索して、編集します。 これは、SubVersion や Git などのバージョン管理ツールを使うときと同じ手順です。

vbslib の ThreeWayMerge コマンドは、さらに一歩進んで、コンフリクトした内容によっては、自動的にコンフリクトを解決できるオプションがあります。

両方並べるオプション(IsOutEach)を設定すると左右で追加した内容を並べます。 左の内容と右の内容に間には空行が入ります。

(左の内容)

(右の内容)

シングルトン キーワード(SingletonKeywords)を設定すると、左右で追加した内容が、その設定に書かれた正規表現にマッチしたときに、右の内容だけ出力します。 プロジェクト名など、1つしか設定できない設定に使います。

(右の内容)

ユニーク ライン キーワード(UniqueLineKeywords)を設定すると、左右で追加した内容が、その設定に書かれた正規表現にマッチしたときに、同じ内容の行が削除されます。 #include など、複数並べても同じ内容を並べないときに使います。 コンフリクトした前後の正規表現にマッチする行も含めて、同じ内容を並べません。

(左の内容)
(右の内容) … 左の内容と異なる場合のみ

マージ テンプレート(MergeTemplate)を設定すると、出力内容を置き換えます。 同じ内容のマージが行われるときに、完全自動化することができるようになります。 置き換える前の内容として設定する内容は、IsOutEach の設定の影響を受けます。

これらの設定は、マージ設定ファイルと呼ばれる XMLファイルに記述して、ThreeWayMerge コマンドの最後にそのパスを指定します。

<ThreeWayMerge>
<IsOutEach>False</IsOutEach>
<SingletonKeywords>#include</SingletonKeywords>
<UniqueLineKeywords>ProjectName=</UniqueLineKeywords>

<ReplaceTemplate before="#Before" after="#After"/>
<Text id="Before" cut_indent="yes"><![CDATA[
<<<<<<< Left.txt
LLL
||||||| Base.txt
=======
RRR
>>>>>>> Right.txt
]]></Text>
<Text id="After" cut_indent="yes"><![CDATA[
Merged!
]]></Text>
</ThreeWayMerge>

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

注目ニュースリンク 4/10

◇ 17歳以下はTwitterが使えなくなる大騒動に見る危険性。
https://japan.cnet.com/article/35098920/
… 海外の大人が勝手に問題にして雑な対策をしたことで、子どもの権利が奪われる。

◇ YouTube、視聴1万回未満のチャンネルは広告禁止。
https://japan.cnet.com/article/35099423/
… 審査プロセスが問題。 国内で問題がないのに海外で問題になる産業が成り立たない。

◇ Google、検索結果のファクトチェックのラベル表示を世界で開始。
http://www.itmedia.co.jp/news/articles/1704/08/news015.html
… トランプ大統領を批判してしまったグーグルでは、そのラベルは信用されない。

◇ まるで武将?Adobeのフォント源ノ明朝。名前の由来は。
http://www.itmedia.co.jp/news/articles/1704/06/news101.html
… 明朝体のフリーフォント源ノ明朝。

◇ 未来を変える眼力。トビーCEOが確信する視線によるインターフェース革命。
https://japan.cnet.com/article/35098765/
… 目線を検知する精度が高いと、いろんなことができてくる。

◇ SIEJA、PlayStation Now for PC のサービスを開始。
https://japan.cnet.com/article/35098446/
… ゲームの著作権を守る仕組みは、本体からクラウドへ。

◇ マイナンバーの本人確認機能、iPhone対応へ。
http://www.itmedia.co.jp/business/articles/1703/29/news081.html
… モバイルSuica と同じようにマイナンバーも iPhone の中へ。

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