「OSS」タグアーカイブ

invaderz – 遺伝的アルゴリズムで動きを変えるインベーダー風ゲーム

victorqribeiro/invaderzは、上から襲い掛かるインベーダーを砲台で撃ち落とす JavaScript のゲームです。

一回に6匹降りてくるインベーダーを、地上に近づけないように撃ち落とす必要があります。合計で5匹が地上にたどり着いたら、ゲームオーバーとなります。また、6匹の攻撃が終わると、新たに次の6匹が登場します。

攻めてくるインベーダーの形はランダムに打たれたドットのパターンなのですが、このドットの形に応じて、どのように動くのかが表されています。

設定によると、撃ち落とされた瞬間のインベーダーは、母船に対して「どこまで侵攻できたか」の情報をアップロードし、次の世代では、優秀な結果を残したインベーダーの形を掛け合わせた攻撃隊が編成されます。

この次の世代を生産する時に、優秀だった個体からランダムに上下半分ずつや左右半分ずつの形をコピーしたりして新しい世代を作ることで、これまで良い結果を出したインベーダーの特徴を併せ持つ世代が作られる、ということになります。(この際に、10%の割合で突然変異も起こります) この当たりはソースコードの Genetics.js を見るとなんとなくわかります。

動くデモも公開されていますが、今はアクセスしづらくなっているようです。ソースコードを持ってくれば手元で簡単に動かすことはできました。

30世代ほど遊んでみましたが、後半になると確かにインベーダーの動きが左右に大きくなり、狙った弾を避けている(避けているように見える、だけですが)ことは増えます。ただ、進化の度合いはかなりゆっくりかなと。何百世代とやるととても優秀になるかもしれませんが、5回失敗すると終わりなのでそこまでもっていくのは大変そうです。

いろんな人が育てた結果が共有されたりすると、面白い避け方をするインベーダーがたくさん作られるかもしれないですね。

シューティングゲームなんて、結局のところコンピューターはいくらでも反応速度を上げられるため、本気でやられたら人間が勝てるものではないのですけど、こちらの打った手を学習して相手の攻撃が変わる、というギミックで、プレイするユーザー毎に違うゲーム体験を作ったりできるということはあるのかも、と思いました。

via Hacker News

Toodles – ソースコード内コメント中の ToDo を集めてやるべきTodoリストを一覧、更新できるwebツール

Toodles は、ソースコード中に書かれたコメントの ToDo を収集し、次やるべきことを可視化してくれるというオープンソースのwebアプリです。

ツール自身への入力として、Toodles 自体のソースコードを使いましたが、それとは別に適当なソースコードに ToDo コメントを仕込んで、一緒に読ませてみました。


var MAX_HEIGHT = 320;
var SQUARE_SIZE = 150;
var thumbnailBucket = process.env.DESTINATION_BUCKET_NAME;

// TODO (hoge|p=8|#js|#test|#newTag) - アレをナニしないといけない
exports.handler = function(event, context, callback) {
var originalBucket = event.Records[0].s3.bucket.name;
var key = event.Records[0].s3.object.key;

ソースコードとして指定したディレクトリ以下で、対応しているプログラミング言語(readme に一覧が載っていますが、主要なプログラミング言語やシェルスクリプト、yamlファイルなどをサポートしています)のファイルをすべて解析して、ToDo リストを更新してくれます。

また、Webアプリ側からもToDo を消したり、優先度やタグなどを更新したりでき、その結果は元のソースコード側にもちゃんと反映されます。

コメント内の ToDo の表記で、担当者、タグ、優先度などとコメントを書くことができ、webアプリ上ではそれらを使って ToDo を絞り込んだり、ソートしたりもできます。

Toodles は Haskell で書かれていて、GitHub でソースコードが公開されています。

# Haskell の環境が無かったので、Docker で動かしましたが、Stack でのアプリのインストールにかなりメモリが必要で、Docker が使えるメモリを2Gb→3Gbにしてやっと動きました。

巨大なプロジェクトの ToDo をこれで管理するのはさすがに難しいかと思いますが、個人レベルのちょっとしたのプロジェクトなんかだと、別管理することでむしろソースコードと issues の対応が取れなくなってしまうこともあるし、ソースコード内で ToDo 管理してしまうというこういうアプローチも、回る場合もあるのかもしれません。

via Hacker News

ウェブ広告を片っ端からクリックすることで広告ネットワークの追跡に抵抗するブラウザ拡張 Adnauseam

AdNauseam は、ブラウザ上に表示された広告を、自動的に見つけてクリックしてくれるというブラウザ拡張機能です。

広告ブロックをする拡張 uBlock をベースに作られた AdNauseam は、ブロックした広告に対して、間隔を空けて(=人間がクリックするかのように、ということでしょう)一つずつ、クリックして背後で広告を読み込んでいきます。

なぜそんなことをさせるのか? AdNauseam の作者たちの主張はこうです。

ブラウザの”Do not track”(私を追跡しないで)ヘッダは、多数の企業が協力しなかったため、使い物にならなくなった。広告ネットワークが我々の閲覧情報を売り渡し続けるのであれば、広告をブロックした上で、その広告をすべてクリックするしかない。すべてをクリックすることで、あなたを追跡しようとする企業は混乱するだろう。

adnauseam-io-1

何に対して興味を持っているのか、追跡して分析されたくない、という意思表明(Do not track)をしても追跡されてしまうなら、全部の広告を押すというのは確かに効果があるのかもしれません。すべてに興味を示すユーザーは、何に興味を示しているのかわからなくなるのですから。

# ただ、いろんなものを「買うかもしれない」判定しちゃう広告ネットワークもあるかもしれませんが

2017年には、このAdNauseam拡張、Chrome の拡張Store から「利用規約違反」という理由で削除されています。違反してるとされた規約にどう違反してるかの詳細な説明は受け取ってないとこの作者たちは言っていますが。

ウェブサイト上の広告での儲けが主要な売り上げであるGoogle社としては、普及すると都合の悪い拡張機能でしょうね。

開発者モードで頑張ればChromeでもインストールできなくはないですが… Firefox版Opera版は、それぞれの公式ストアからインストールできます。

現状のウェブと広告に対する抗議の意味を持った拡張機能ですが、議論を呼ぶものだし大なり小なり広告収入を得ている人にとっては迷惑と感じられるのかもしれません。

TheParallaxView – どこから見ても「深淵」が見えるスマートフォンアプリ

どの方向からiPhoneを見ても、そこにどこまでも続く深い穴があるように見える、というパララックス効果を使ったアプリが紹介されていました

iPhone X で使えるようになった人間の顔の位置を検知する機能により、ユーザーの目の位置を追跡し、目の位置に合わせた穴を描画しています。

Unity/C#製のソースコードはGitHubで公開されています。

iPhoneアプリが現在申請中ということで、公開されれば上記のソースコードをビルドしなくても手元のiPhone X で試せるようになりますね。

ユーザーの視線に応じて表示を変えるアプリが作りやすくなったことで、これまでにない発想のゲーム等が出てくるかもしれません。

is-vegan 菜食主義者のための食品判定ライブラリ in JavaScript

肉や魚だけでなく、牛乳など直接は命を奪わない食材も忌避する完全菜食主義(ヴィーガン)のためのライブラリが is-
vegan
です。

利用例はこんな感じ。牛乳はダメで、豆乳はOKと。


import * as isVegan from 'is-vegan';

// example for single ingredient
isVegan.isVeganIngredient('soy'); // true
isVegan.isVeganIngredient('milk'); // false

作りとしては src/util/canbevegan.json と nonvegan.json に食材の名前が列挙してあるだけのシンプルなもの。これを訳せば日本語でも使えるかもしれないですね。レシピサイトの材料リストを見て、菜食主義対応かどうかを表示する、なんていう拡張を作ったりできそうです。

食べ物の規制ということだとイスラム教のハラールについても is-haral 的なライブラリが有ったりするのかな、とGitHub を探してみましたが、見つかりませんでした。あちらは単純に食材の種類で決まるわけではないので同じ手は使えないのかもしれませんね。

via Hacker News

genact – 「プログラマー的な作業をしてる風」に見せるためのツール・ページ

仕事すべき時でも、忙しいフリやコンピューターの処理を待つフリをしよう! 並行して多数の仕事をこなす驚異的なスキルを他人に印象づけよう

genact は、プログラマー的な出力を画面に表示するためのツールです。

Rust製のソースはGitHubで公開されています。MaxOS X, Linux, Windows それぞれのバイナリもリリースページに有るので、ダウンロードして走らせるだけでプログラマーな感じのウィンドウが立ち上がります。

ダウンロードが心配であれば、ウェブ版もあります。カフェ等でこれを一個開いて表示しておくと、なんか難しそうなことをしてるように見えるかもしれません。

6つのモードがあり、パラメーターで指定することで切り替えられます。複数のモードを指定すると、適当に切り替えもしてくれるようです。

  • bootlog
  • cargo
  • cryptomining
  • cc
  • download
  • memdump

cryptomining で仮想通過の採掘をしてる風に見せるのなんか、今風でしょうか。

via Hacker News