「OSS」タグアーカイブ

Aileen – 周囲のWiFiデバイスをカウントしてその場の人数を記録するツール

Aileen は、WiFi の電波から周囲にあるスマートフォンなどのデバイスを数え、記録するためのツールです。

WiFi がオンになっているデバイスのMACアドレスを使って、周囲にあるデバイスの数を記録し、時系列データなどをダッシュボードでまとめて表示します。(MACアドレスはハッシュ値のみ保存されます)

Aileen は、利用者として NGO による人道的な活動を想定しているということ。たとえば、難民キャンプでの人の出入りや活動を見守る、といった使い方です。キャンプの中にいる難民の数の変化をより正確に計ることで、サービス提供側の人員計画などを立てやすくすることができるのだとか。

先月にはコードがオープンソースで公開されており、WiFi 情報を収集して利用するというセンシティブな目的に対し、正体不明の第三者のツールに頼らずに済むのが利点だということです。

また、難民キャンプなどでは常に安定したインターネット接続が使えるとは限りません。そのような利用シーンを考え、Aileen を動かすPC自体はインターネット接続が無くても動けるようになっています。複数台を設置してデータ収集している場合は、ネットに接続した時点で情報を送信するそうです。(ハッシュ化された個々のMACアドレスを送信するのではなく、集計した結果のみを送るそうです)

今月には、ギリシアのレスボス島にある実際の難民キャンプで、2セットが試験運用を開始しているそう。

難民といえども、今は普通にスマートフォンを持っているのだろうと思います。むしろ情報収集等のために無いと困るぐらいかもしれません。デバイスを持たない人もいますが、スマートフォンの存在から人数を計るというのは、人手を掛けずにすむ効率的な方法なのかもしれないですね。

日本に今難民キャンプはありませんが、プライバシーへの配慮がされていることや、オープンソースとして動作の仕組みが公開されていることから、NGO などで他の人道的な運営に転用したりすることもできるかもしれません。

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