2016年12月23日

Twitter上で久々にエゴサをしてみたら・・・ジョークソフトについて

昨日、Twitter上で久々にエゴサをしてみたら、ジョークソフトに関するツイートを見かけました。

あるウイルス対策ソフトで、検出対象を選択するダイアログ上に「ジョークソフト」というのがあった、というもの。そこから、

  • かつて、INASOFTで作っていたジョークソフトが、ドキュメントを削除された状態でメールに添付され、チェーンメール化したことがあったらしい。
  • ジョークソフトを検出するって、どんな技術的方法を用いるのだろうか。
  • また、当時みたいにジョークソフトは作られることはないのだろうか。

というもの。

チェーンメール化したのは、「疑似アクティブデスクトップ」の旧バージョンでして、チェーンメール化の発覚時(2000年ごろだったかと思います)に、ウイルスとして検出するよう、私の方からセキュリティ企業に依頼した経緯があります。

そういえば、ウイルスバスターでもジョークソフトが検出対象カテゴリになっているという話があって、無害なジョークソフト・・・例えば立ち上げたウィンドウが下に落ちていくだけでも検出対象とするのかと抗議したら、有害無害関係なく十把一絡げに扱うような非常に不明確な回答を返されて呆れ果てた・・・なんてことがありましたけど、どうやって、それぞれのソフトウェアをジョークソフトであると見極めて検出するのか、といったような、技術的な話は聞いていないですね。

1つ1つのプログラムファイルについて、ジョークソフトかどうかを人間で判定し、MD5とかSHA-1とかで判定するとかでしょうか。
幸い、Vector等のソフトウェア配布サイトには、ジョークソフトとしてのカテゴリがありますから、プログラムファイルの収集は容易かも知れません。

ちなみに、2012年ごろに書かれたあるブログ記事ですと、現在ではジョークソフトというのは「時代遅れ」なんだそうで、「かつて人気だったソフトウェアだろうと、現在の時代にそぐわないのならばウイルスとして検出されるのは当たり前」なのだそうです。

そこまで後ろ指を指されながら、ソフトウェア製作するモチベーションは保てませんからね。どんな気持ちで作ったら良いか、もうわからない。たぶん、よっぽどのパッションでも沸いてこない限りは、当時みたいにジョークソフト製作を定期的に行うようなことは、しないだろうと思います。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング

2016年11月06日

最近は内向きにモノ作りしていることが多いですね。

生後37年が経過しました。
そろそろ、おっさんの域など、もうだいぶ前に突入しています。

最近は内向きにモノ作りしていることが多いですね。
自分のソフト開発が、自分向けに特化しすぎるツールの開発だったり、自分だけがアクセス可能なサイト上での開発だったり。

先日も、最近の自作ソフトの使い方について、「改行コード変換」と、「コピペテキスト修飾除去」と、「マウスふるふる」について触れました。

改行コード変換」は、無効なコントロールコードの除去用に、「コピペテキスト修飾除去」は、修飾除去ではなく行単位の文字列加工(コピー⇒(自動加工)⇒ペーストというコンボ)に、「マウスふるふる」は、スクリーンセーバー&スリープ移行抑止(ゲームプレイしながら攻略サイトを見続けるため)に、それぞれ使っています。

この他に、自分向けのサービスとして、サーバ上のファイルに新規作成・置換・削除があったときに通知してくれる自分向けサービスとか。
自分の家族が生後何日目かをひたすら表示する自分向けサイトとか。
Yahoo!とか窓の杜とか、自分がよく閲覧するサイトからひたすらRSSを読出し、集約して提示する自分向けサイトとか、そんなようなのも作っていたりします。

そういえば最近、対外向けにやっていることといえば、Flashコンテンツの置換があります。
Google Chromeにしても、Firefoxにしても、Flashコンテンツを排除する方向に進んでいます。
セキュリティ的にも脆弱で、レガシーになってきて、いろいろと限界にきているFlashなので、その流れは重要なのですが、自サイトで構築してきたFlashコンテンツが表示できなくなるというのは、問題になります。

というか、iPhoneやiPadのSafariでは、Flashコンテンツは見られないわけで、その方向に進んでいるとか問題になるとかではなく、すでにだいぶ前から実害は出てきていると考えた方が良いです。

まぁそもそも、Flashで作られたコンテンツは、そのコンテンツそのものがレガシーなことが多く、いまさら更新するのも億劫なものだったりもします。例えば、「巫女ブラスター2」の宣伝ページとか。「神緒のべるず」のFlashゲームとか。

でも、これらが置いてけぼりを食らってしまうのも悲しいので、非Flashコンテンツへ置換することにしました。
巫女ブラスター2」の宣伝ページは、単なる画像上のリンクでしかないので、クリッカブルマップに置換しました。
神緒のべるず」のFlashゲームは、コンテンツ内容を維持したいならば「HTML5+JavaScript」で置換するのが適当ですが、全体として小説コンテンツであるということと、現在のコミカライズが10話まで到達する期待があること(その時までにコミカライズに耐えうるストーリーを構築しないといけない)を考慮し、ストーリーを新たに起こし直し、通常の新作小説コンテンツに置換しました。

挿絵は新しく、早希さんに描いてもらっています。
10wasi.jpg
▲前も載せましたが、新しい挿絵

そういえばこれが、僕の現在の唯一の同人活動ってことになりますかね。たまに、コミカライズ版頒布でコミティアにも売り子で行かせてもらっていたりしますし。細々と、ここら辺は続けて行けたらと思っています。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング

2016年11月03日

プログラミングはできるけど、電子回路の仕組みとかはわからないけど、

車の運転はしていても、車がどうやって動いているか、その詳細を事細かに知っている人は少数派かと思います。

特にアメリカだと、都市部と都市部を繋ぐ、何も無い道路だけの区間が多く、自力で修理できる能力を持っていなければならないことが多いのに対し、日本ではそういった事情がないため、自力で修理する方法を知らない人も多いと聞きます。
ちなみに僕は、運転免許は持っていますが、ここ10年ほど運転すらしていません。車の修理なんてもっての外ですね。

話が逸れましたけど、それと同じように、コンピュータを使うことはできるけど、コンピュータがどうやって動いているのかは知らない人も多いと思います。

この話は階層化できる話でして、例えばブラウザ上でゲームを楽しむ場合ですと、

@人間が見ている表層部分 (ゲームのアイディア、プレイヤーのテクニック)
AHTML5+JavaScript (スクリプト)
B機械語に翻訳されたプログラム (プログラム)
C電子回路
D古典物理の世界
E量子の世界

@人間が見ている表層部分は軽視して良いのかというと、これはこれで非常に大事なところです。
何せ、プレイヤーは表層の部分を見てお金を払うわけですからね。
ゲームを企画する人、プロデュースする人が、ゲーム制作陣の中で最も多くのお金をもらうケースが多いことからも分かるとおり、非常に重要な要素です。

また、ゲームのプレイもまた重要な要素であり、プレイする人があってこそのゲームだし、この人がお金を払ってくれないと or 課金してくれないと、話が始まりません。

ところで、これとは別のところに、ゲームの宣伝・営業とか、ゲームの販売チャネルいう、ゲームを成り立たせるための重要な分野も他にありますが、話がややこしくなるため、今回は除外しました。

Aスクリプトの部分。ゲームのアイディアを直接実現している部分とも言えます。Aで書かれた文字列を、B機械翻訳されたプログラム(HTML5+JavaScriptならブラウザのエンジンでしょうか)が実行することで動いています。プログラミングの知識が必要になってくるのは、このあたりでしょうね。

私がプログラマとして名乗っているのは、このAとかBの部分が好きだからでして、@CDについては興味が無かったり、苦手だったりします。Aができる人が@ができるとは限りませんし、@ができる人がAができるとは限りません。ABができる人がCもできるとは限りません。

ちなみにAの超人は、プログラミングのコンテスト等で、ある与えられた課題を、非常に短いステップ数で解ける仕組みを考えたりしているそうです。素人目に見てもすごいと思えるのは、例えば、489バイトのテトリスでしょうかね。読めなくても(読む必要はない)、すごいことは通じやすいかと。

Cは、最近、動画文化の普及で、よく目にするようになった部分のような気がします。
マリオメーカーで加算機を実現してみたり、プラレールで半加算器を設計してみたり、動画文化の普及があるから、見ている側の人間も楽しく見られるようになったと思います。

通常、こういうのは、CPUの小さな回路の中に大量に詰め込むものです。電子の粒が、マイクロメートルとかナノメートル級の小さな回路の中を進み、演算・読み出し・書き込みを実現します。C・・・つまり、先ほど見た、マリオメーカーによる加算機や、プラレールによる半加算器のような知識をたくさんの種類・たくさんの回数繰り返すことで、Bが成り立っているというのは知識としては知っているものの、直感ではなかなか理解しにくいものです。

この世界の話を聞いていると、「信号はせいぜい光の速さでしか伝わらない」という話も聞こえてきます。
1秒で地球を7周半する光ですら、この世界では「遅いモノ」扱いなんですね。
遅い信号を早く伝えるには、電子が通る経路(スタートからゴールの距離)を短くしてやる必要があるんでしょうけど、回路設計を小さくするにも限界があるとのこと。電気の通る線の幅を小さくすれば電圧を高めなければならないとか、発熱が激しくなるとか、電子が通ると磁力が漏れるとか、かつて科学の授業で聞いた知識が、だんだんと大きくなってきます。

CPU 1つ1つの速度に限界があるならば…と、空いた回路を効率的に使おうとするマルチスレッドのテクニックとか、あるいはCPUコアそのものを複数搭載して並列処理させてしまおうというマルチコアのテクニックとか、CPUの世界は、アイディアを詰め込むことで、まだまだ上を目指せそうです。
プロセッサの技術者の皆さんは、日々こうした、一つ上のアイディアを盛り込んでいくことで、がんばっているんだと思います。

Cを実現しているのがDの世界ですが、さっき出てきた電圧とか発熱とか磁力の発生とか、物理世界のルール(自然法則。仕組みや限界)そのものになってくるかと思います。プロセッサ技術者の皆さんががんばれるのも、電気を通すための新しい素子を科学者が作っているからでしょうね。

ところで、電子1粒の世界になってくると、古典物理的な効果よりは、むしろ量子物理的な効果の方が大きく出てくることもあると聞きます。たぶん、Eの世界が関わってくるのかと思いますが、まぁ、私にはよく分からないですね。ここら辺は。もしかしたら、全世界的にも、よく分からないけど使っている技術…なのかもしれません。

量子物理的な効果に期待した「量子コンピュータ」なるものもあると聞きますが、その原理は難しすぎてよくわかりません。


posted by ayacy at 08:20 | Comment(0) | TrackBack(0) | プログラミング