夏休みの自由研究

今年は夏休み始まる前に自由研究書いてるんだ! 偉いでしょ!

Processingの画面外でのイベントを取得するライブラリを作った

はじめに

qiita.com

この記事を読んで、jnativehookというライブラリを知った。 Processingでも使えるようにしようと思って書いていたら思っていた以上に大規模になってしまったので、ライブラリにして配布した。

リンク

僕の作ったライブラリ

github.com

元にしたライブラリ

github.com

使い方

  1. p5nativehookのjarファイルとjnativehookのjarファイルをともにProcessingにインポートする。

  2. コードを書く。

import org.jnativehook.*;
import org.jnativehook.dispatcher.*;
import org.jnativehook.mouse.*;

import p5nativehook.p5NativemouseGet;

void setup(){
  size(500,500);
  background(255);
  p5NativeMouseGet mg=new p5NativeMouseGet(this);
  //この一行を入れるとmousePressedなどのマウスイベントは
  //全て画面の内外に関係なく呼び出される
}

void draw(){
}

void mousePressed(){
  background(random(255),0,0); 
}
import org.jnativehook.*;
import org.jnativehook.dispatcher.*;
import org.jnativehook.keyboard.*;

import p5nativehook.p5NativeKeyGet;

void setup(){
  size(500,500);
  background(255);
  p5NativeKeyGet kg=new p5NativeKeyGet(this);
  //この一行を入れるとkeyPressedなどのキーイベントは
  //全て画面の内外に関係なく呼び出される
}

void draw(){
}

void keyPressed(){
  background(random(255),0,0); 
}

まだできていないこと

  • jnativehookの仕様上、一番始めによく分からないログを吐く(上のQiitaの関数を使って途中でログを止めている)
  • jnativehookの仕様上、keyTypedには反応しない(keyPressedとkeyReleasedには反応する)
  • jnativehookの仕様上、keyCodeは取得できるがkeyCharは取得できない
  • mouseWheelの上下を認識していない

何をしているか

  • jnativehookで取得したNativeEventをProcessingのEvent形式に変換する。
  • 変換したEventをPAppletの持っているEventQueueにpostして、その画面内で起きた通常のEventと同じように処理させている。

つらかったこと

  • ライセンス周りが全く分からんかったので雑になってしまった。分かる人いたらContributorにするのでその辺全部やってくれ。

真夜猫の作ったモノ2017まとめ

はじめに

この記事は NCC Advent Calendar 2017 - Qiita の三日目の記事です。
真夜猫は主にNCCのAdvent Calenderは敷居が高そうと思っているNCCメンバーへ向けて敷居を下げる活動を行なっています。

本編

真夜猫は今年いろいろなモノを作っていたので、まとめることにしたよ!
プログラミングをしている過程で作られた、何の役にも立たないものもかなりあるけど気長に見てください。
真夜猫が自分で確認するためのまとめも兼ねているので、絵面が悪いために画像がなかったり調整中のためリンクがなかったりするものもあります。

2017/01/29

こんにちは
http://mayoneko.xyz/konnitiha

p5.jsのdrawの中で「document.write(<p>こんにちは</p>)」した馬鹿。
DOMの使い方が分からなくて試行錯誤していた。
drawの速度にスクロールがついていけない。
僕の2017年最初の個人作品。
今現在これを見てめちゃめちゃ笑っている。

2017/02/04

Moonless Night Catの告知サイト
Moonless Night Cat

p5.jsだけを用いて自分の初同人小説の宣伝サイトを作った。
マウスホイールやタッチパッドでのスクロールで見える範囲の大きさが変わる。
当時DOMの存在を知らないため、文字はすべてtext関数で表示している。
空白の大きさを調節するためにtextWidthを多用したり、スパゲッティコードの典型のようになっている。
今見ると恥ずかしい。

2017/02/11

温度センサと光センサで二つのサイン波の周波数を操作し、謎の音を生成する。
操作している様子が儀式のようで謎の面白さがある。

2017/03/07

speechtest

p5.jsたーのしーーって言うだけのプログラム。
左で高さの調整、右で速さの調整ができる。個人的に一押しは最高最低速。

2017/03/28

music4

音源や画像を一切使わずにp5.jsとp5.sound.jsだけを用いてDJができるようなプログラム。
音はサイン波やのこぎり波、矩形波、ノイズなどのADSRをいじったりエフェクトをかけて作っている。
曲を作るセンスが0だったので非常に恥ずかしい。
でもこういうことできるんだなって思えたことは収穫。

2017/04/28

文字の歌を聴かせて

PHPの課題で作った謎のサイン波生成装置。
UTF-8文字コードをごにょごにょした結果、周波数に変換してその値のサイン波を流す。
昲状胂衪がドレミファのそれぞれの音になっている。ハングルとかを入れても面白い音が出る。

f:id:mayo_nekoneko:20171201154951p:plain

2017/05/11

宇宙の創造

フラクタル図形を作る過程で作りたくなった、操作に合わせて描画される形の変わる図形。
自分ではフラクタルだと思っているが、いろいろな人にフラクタルじゃないと言われたのでおそらくこれはフラクタルでは無い。
いろいろな図形を簡単に作って遊べて一時間くらい溶かせる。
URLの最後の8はバージョン8のこと。
   
この自動生成の画像が好きすぎたので、iPhoneケースを作ってしまった。

suzuri.jp

Tシャツも作ってしまった。

suzuri.jp

ステッカーとかノートとかならわりと出しやすい金額。

suzuri.jp
suzuri.jp

買って。

2017/05/20

Unicodeのコードポイントと文字を表示させるぞくん

Unicodeのコードポイントと文字の相互変換が出来る。
超便利。

2017/05/20

Trump

Unicodeポーカーの試作品。
Unicodeサロゲートペア部分にはいろいろな文字が入っていて、それを使えばポーカーを作ることも可能ということを証明したいがポーカーのコードが書けない。

2017/05/28

ニセモノジェネレーター

Twitterのログから自動的に偽物のツイートを作るサイト。
形態素解析とかMySQLとかごにょごにょしてよく分からない文を作り出す。
エラーが出てもめげずに再挑戦するとできるよ。

2017/06/09

路線をサーチします

路線を検索するとその路線の路線図や標高が出てくる。
駅データAPIと標高APIを使用。

2017/07/03

points - OpenProcessing

パーリンノイズでゆらゆら揺れる円。
きれい。

2017/07/03

排水口 - OpenProcessing

ぐるぐるぐるぐる排水口。

2017/07/06

鯖スロット - OpenProcessing

鯖スロット!!!!!
Unicodeでさかなへんの文字を取ってきてスロットマシーンにした。
鯖を止めよう。
個人的にすごい好き。

Xperia Touchを使って鯖スロットをやるとこういうことになる。
楽しい。

2017/07/28

locmusic

ゼミの前期の最終課題。
位置情報のログから音楽を作るWebサービス
オープンキャンパスとかでデモをしましたが、現在調整中。 デモは出来るので見たい人は僕に声をかけてください。

2017/07/31

youtu.be

ピタゴラ装置を作る課題。
それぞれの漢字の意味を考えながら見ていると繋がるかもしれないやつ。
提出期限の直前に作り始めたのであんまり装置に凝ることが出来ず、評価は低かった。

2017/09/10

機械学習です。 DCGANのサンプルにデータセットを突っ込んだだけでプログラミングはしてません。

2017/09/16

slot-editor👹

ABProで発表した絵文字入力支援ツール。
あほ。
あほだけど画面下に表示されるリストを見ながら速度調節をすれば僕は使いやすいと思っている。

国士無双13面待ちもつくれる。

2017/10/01

qiita.com

自分のスマホに通知を送るAPIを作った。
たのしかったです。

2017/10/07

iotest2 - OpenProcessing

ゼミ合宿中に遊びで作った、Socket.ioを使って複数人でメッセージを送り合うテスト。
クリックするとコードに書いてある文章が送信されて、同時に開いている他の人のパソコンからその文章が読み上げられる。
コードを書き換えないと送るメッセージが変えられないのが難点。
でも他の人のパソコンから自分の送った文章が流れるのめっちゃ面白い。

2017/10/21

rects - OpenProcessing

2017/11/15

コンビニ判定マシン
ゼミの機械学習編のまとめ。
ProcessingのPSVMというサポートベクターマシンのライブラリを使用して、文字列を入力するとそれがどこの商品の名前に近いか判別してくれるプログラム。
既存の商品名にないほとんどの文字列がファミリーマートに判定されてしまう失敗作。
Processingなので公開はしてない。

2017/11/26

こんにちは

Kotlinが大好きになったので、KotlinのライブラリkotlinxでHTMLを生成してSpark Frameworkでサーバーを立てるプログラムを作った。 がんばってHerokuを初めて使った。

まとめ

このまとめ記事作るのに5時間くらいかかった。
しょうもないものを作りすぎていたので、除外したものも相当量ある。
でも、一番初めと最後の方と比べると雲泥の差であることがわかる。(Kotlinは別にすごい技術を使って作ったモノじゃないけどHerokuは当時の僕では達成しきれなかったであろう代物だと思ってる)
いろいろなものを作っていたという達成感に満たされたので僕は満足です。
えっ、この記事NCC Advent Calenderの三日目の記事だったんですか?