Processingで少し発展的なことをしようとしたら引っかかること
matatsuna.hatenablog.com
で書いてあるのようにProcessingを使ったプログラミングの発表会がありました。
他のチームから質問を幾つかもらったので、まとめたいと思います。
ArrayListでint型を扱いたい
ArrayList型では文字列を宣言するときは
ArrayList<String>hoge=new ArrayList<String>();
と書きますが、int型を宣言するときはintではなく少し違って、
ArrayList<Integer>hoge=new ArrayList<Integer>();
と書きます。
intはIntegerの略です。
Stringの文字列比較は.equals
よくあるのが
if (hoge==hogehoge){
}
と書いてしまうのですが、これだと正確にできません。
正しくは
if (hoge.equals(hogehoge)){
}
と書きます。
詳しくはココらへんですかね?
【Java】Stringオブジェクトの(文字列)比較方法 - TASK NOTES
processing3系のminimインポートについて
processing3系ではよく使うminimやvideoのインポートが標準ではなくなったので、
スケッチ>ライブラリをインポート>MInim/Video
でダウンロードしてインストールする必要があります。
あとは2系と同じように
import ddf.minim.*; import processing.video.*;
でいけます。
(Windos版とMac版で若干標準ライブラリーが違う気がします)
java.awt.List/java.util.Listやtwitter.XML/processing.data.XML
まずListについて
The type List is ambiguous
というようなエラーが出た時の対処法
同じ"型"の名前を持つ2つのクラスをインポートしてしまってる可能性が高いです。
この場合だと、
import java.util.*; import java.awt.*;
この2つをインポートしてるかもしれません。
一番早い対処は使うクラス分だけインポートすることです。
import java.hoge.*; import java.hoge.hogehoge;
上はhogeの一つ下の階層のクラスをすべて読み込むことになります。(オンデマンドインポートと言うらしい)
下のように読み込むクラスを使う分だけ指定することをオススメします。(単一型インポート)
詳しくはここへ
Javaのpackage・import・修飾子について - Qiita
リストボックスを出したい
HSPを以前勉強していたこともあって、はっきりした名称で聞いてくれたことがすごい助かりました。実際、ボタンとかたくさんあって名前がワカラナイことも多いのではないでしょうか?
参考
Windowsフォーム・コントロールの基礎(その1) − @IT
そんな中、javaは触りたくないと言ってたので、processing用のGUI系のライブラリーであるcontrolP5のサンプルを渡しました。
はっきり言ってちょっと失敗でした。なんといっても、サンプルが少ない!!
グッグたらたくさん出てくるライブラリーを紹介するべきでした。
controlP5のイベントがクラスで動かない/ドラッグアンドドロップがクラスで動かない
イベント型の関数を自分で作ったクラスの中に入れると動かないことが多いようです。継承とかprocessingの関係かなと思うのですが、ちょっとわかりません。
素直に、すべてのクラスの外に置きましょう。(サンプルがあったら、その関数の置かれてる場所通りにする)
Twitterをリアルタイムで取得したい
勉強会を以前行っておりそこでは単なるツイートとタイムライン取得だけだったので、リアルタイムにやりたいとのことで結構聞かれました。
Tweet4JのストリームングAPIを紹介しました。
勉強会の資料とサンプル
Androidの加速度センサーをPCで取得したい
自分の研究室のチームに「Arduinoのセンサーを使うよりもAndroidでサーバークライアント使ったほうが便利かもよ」と言ったら、そうするとの事だったので協力しました。
以下のサイトのソースコードが動いてくれたので比較的簡単にできたんじゃないのでしょうか?
forum.processing.org
音楽と同期させたいとのことだったのでUDP通信を選びました。
processingでUDP通信をする場合は「UDP」ライブラリーをダウンロードしてインストールする必要があります。
import hypermedia.net.*;
これのインポートができたらOKです。
更に、processingのAndroidモードの環境についてもインストールする必要があります。それや加速度センサーの取り方いついてはAndroid開発の部分が多く占めてくるので後日記事を書きます。
主にAndroid開発が初めてのメンバーだったのでその辺りでのヘルプが多かった気がします。通信の書き方とかはノータッチです。
いろんな質問があった
「あ~そのエラーね」って言うような躓きやすいような事から「何それ?全くわかんない」と言うようなことまでたくさんありました。
いろんな人から頼られることは嬉しい事で、時には違うとの指摘を受けることもありました。短期間にありとあらゆるprocessingやjavaの問題をぶつけられたのは初めてで、正直疲れました。でも、みんながどう言うところで詰まりやすいか、どんなふうに書いているのか見れて、いい刺激になりました。よくわからないけど動く形にまで持ってく力はついたと思います。(きついけど.....)
自分が答えられる問題ならば答えてあげたいし、わからんくても一緒にググって考えてあげることぐらいならするので、どんどん頼って欲しい。プログラムはどんなにバグが多くても動いた瞬間が一番おもしろい、楽しい、感動すると思ってるのでそれを広めたい。事実、問題解決した瞬間みんな笑顔ww
P演習本番では自分が手伝った部分がこんなところに使われてるのか~と関心することが何回もありました。毎回、同級生の発想力には驚かされます。
FMS3期生の皆さん。2015年末から2016年始にかけて本当にお疲れ様でした。