tomo.mobi

Representation design of material


酒Bot GitHubにやっと上げた

酒BOTやっとGitHubに上げた
https://github.com/tomoka/sake_bot

Published by tomoka , on 5月 2nd, 2015 at 9:05 am. Filled under: いまさらNo Comments
この記事を読む

Slack BOT「日本酒ランダム検索Slack BOT」作りました♪

Slack BOTを作りました。
今回使ったツールは以下の通り。

BOTのフレームワークはhubotを使いました。
【参考】http://gihyo.jp/dev/serial/01/hubot

coffeeScriptで書きました。
【参考】http://coffeescript.org/

Herokuを使いました。
【参考】https://www.heroku.com/

バージョン管理はGitです。

コンテンツ内容はAPI検索です。以下のAPIを使いました。

  • Sakenote Database API
    http://blog.sakenote.com/2013/09/06/sakenote-api/
  • 楽天商品検索API
    https://webservice.rakuten.co.jp/api/ichibaitemsearch/

内容は、ボットに都道府県を投げかけると、投げかけた都道府県のお酒をランダムで1点紹介してくれます。また、「日本酒」「おすすめ」で呼びかけると全国からランダムで1点紹介してくれます。sakenote Database APIは都道府県からお酒の名前を検索するのに使い、楽天商品APIは検索したお酒の画像を表示するために利用しています(楽天で取り扱っていない日本酒の場合はsakenote内の詳細ページのURL表示をします。)おまけ機能で「説明」とボットに呼びかけるとボットの機能を説明してくれます。

スクリーンショット 2015-04-11 11.16.00

JSONの読み込みで手こずり、優秀なエンジニアさんに助けて頂きました。おかげさまで、sakenoteのAPIだけでなく、楽天のAPIも読み込めるようになったので大大大感謝!!!

日本酒の画像も表示できて大大大満足です。

coffeeScritpは今回初めて書いたのですが、こんなに斬新な仕様だとは思っていなかったので鮮烈でした。インデントはなれるまで私の場合は後数回は作らないと駄目だと思いました。また、機会があったらBOT作ってみたいなと思いました。

Published by tomoka , on 4月 12th, 2015 at 4:11 pm. Filled under: api,app,jsonNo Comments
この記事を読む

ネイティブアプリゲームのフォントサイズ

最近、ネイティブアプリのフォントサイズが気になって調べているので漠然とメモです。

普通に読ませるサイズは12dpi 。それよりウェイトが落ちる情報は少し小さく10dpi。見出し等には16dpi〜20dpiまであるようです。

個人的にはパラメータ等の表示は12dpiが多いけど、英数字だったら見やすいので10dpiにしても良いかなぁと、思いました。

Published by tomoka , on 3月 1st, 2015 at 11:51 pm. Filled under: appNo Comments
この記事を読む

surfaceViewのcanvase run()終了時のnull問題

Surfaceviewを使ったとき、端末のバックキーを押すタイミングでアプリが強制終了するのはthreadの破棄の設定だけでなくcanvasのdrawcolorの時にonDestroy( )のタイミングでcanvasにがnullとして返って来てしまう事にやっと気が付いた。

実装した対策は、そもそもthreadがnullになっていないかどうかを分岐して、threadがnullの時はholder.lockCanvas();からholder.unlockCanvasAndPost(canvas);の中に書いた描画を実行しないようにしました。

surfaceCreated()でフラグを立てる /* boolean canvasFlag = true;
surfaceDestroyed()でフラグを折る /* boolean canvasFlag = false;

if(canvasFlag){
holder.lockCanvas();
/*画面の初期化。というか描画の準備のために白で塗りつぶす。
c.drawColor(Color.WHITE);



holder.unlockCanvasAndPost(canvas);
}

Published by tomoka , on 6月 11th, 2014 at 7:26 pm. Filled under: Android,app,java,smartphoneNo Comments
この記事を読む

独自、tweenの実装

viewでのアニメーションはプラグインを使いつつなんとか実装できたのですが、surfaceViewでのアニメーションの実装がうまく行かず、tweenの式を調べて移植してみました。
とりあえず、tweenしてくれました。ので、メモ書き。。。。

実行部分
[Mole.Obj.java]
float moleScale /*変化させたい数値
long passed_time /*経過時間
int mole_max_count /*変化を続ける時間
/*
* 第1引数:経過時間
* 第2引数:変化させたい数値の初期値
* 第3引数:変化させたい数値の最終値
* 第4引数:変化し続ける全体の時間
*/
moleScale = (float) TweenAnimation.easeOutCirc(passed_time,1,2,mole_max_count);

移植したメゾット
[TweenAnimation.java]
public class TweenAnimation {
float t;
float d;
float c;
float b;
    
/*とある1つのみ。Tweenerとかでも使っているtweenの式*/
static double easeOutCirc(float t,float b,float c,float d) {
t /= d;
t–;
return c * Math.sqrt(1 – t*t) + b;
};
}

passed_timeは[Mole.Obj.java]ないにmoleUpdate()を作って、常に変化させてます。
long old_time; /*最初の時間
public void moleUpdate() {
//時間の更新のみ
passed_time = System.currentTimeMillis() – old_time;
}

Published by tomoka , on 6月 11th, 2014 at 7:13 pm. Filled under: Android,animation,app,javaNo Comments
この記事を読む

Java Universal Tween Engineのalpha

最近はJava Universal Tween Engineを理解しようと必死なのですが、
そのなかで、メモにしておこうと思ったことが1点。

alphaはTween.set()が必要です。

Timeline.createSequence()
/*
* public static final int POSITION_X = 1;
* public static final int POSITION_Y = 2;
* public static final int POSITION_XY = 3;
* public static final int ROTATION = 4;
* public static final int SCALE = 5;
* public static final int ALPHA = 6;
*/
  //alpha値の設定
.push(Tween.set(cont, 6).target(0))
.push(Tween.to(cont, 6, 2.0f).target(1).ease(Back.OUT).delay(1.0f))

.push(Tween.to(cont, 4, 2.0f).target(360).ease(Bounce.OUT))
.push(Tween.to(cont, 1, 1.0f).target(3000).ease(Expo.OUT).delay(0.5f))
.push(Tween.call(callBack).delay(1.0f))
.start(tweenManager);

Published by tomoka , on 5月 19th, 2014 at 9:03 am. Filled under: Android,animation,app,java,smartphoneNo Comments
この記事を読む

java-universal-tween-engineのcallback

APIを見つけてからやっと、コールバックをとる事ができた。
長かった。。。。。

//インポートクラス
import aurelienribon.tweenengine.Timeline;
import aurelienribon.tweenengine.TweenCallback; ←受け取るクラス
import aurelienribon.tweenengine.TweenManager;

//コールバックイベントの登録
TweenCallback callBack = new TweenCallback(){
@Override
public void onEvent(int arg0, BaseTween arg1) {
// 処理
Log.v(“tag222”,String.valueOf(arg0));
TweenCallbackObj(); ←コールバック受け取り後に起動するメゾット。
}
};

//タイムラインの登録。
Timeline.createSequence()
.push(Tween.to(cont, ViewContainerAccessor.POSITION_XY, 0.5f).target(100, 200).ease(Bounce.OUT).delay(1.0f))
.push(Tween.to(cont, ViewContainerAccessor.POSITION_XY, 0.5f).target(100, 200).ease(Bounce.OUT).delay(1.0f))
.push(Tween.call(callBack).target(100, 200).ease(Bounce.OUT).delay(1.0f))
.repeat(5, 500)
.start(tweenManager);

Published by tomoka , on 5月 18th, 2014 at 1:03 pm. Filled under: Android,app,smartphoneNo Comments
この記事を読む

ネイティブ アンドロイドアプリのフォントサイズの設定

デバイス文字を使う時の文字のフォントサイズの設定は、数値を決め打ちするよりもデザインした横幅を基準に設定すると便利でした。
他素材も、割合で設置したり素材を調節すると同じ素材を使い回しても問題なく、調節しやすかったです。

例えば、横480pxでデザインした場合は。。。。

WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();

/*
*    横向きの画面にある事もあるのならば、ぶれないように小さい値をとる。
*     割合をだす。
*/
float block_size = Math.min(disp.getWidth(),disp.getHeight()) /480;

//デザイン上14pxだった場合。
paint.setTextSize (14 * block_size);
//デザイン上24pxだった場合。
paint.setTextSize (24 * block_size);

Published by tomoka , on 3月 16th, 2014 at 9:08 pm. Filled under: AndroidNo Comments
この記事を読む

コンソールのメモ

alert();で変数を渡した方が確実のとき、
変わりにconsole();を使う。

Published by tomoka , on 12月 26th, 2013 at 6:36 pm. Filled under: javascriptNo Comments
この記事を読む

phpでRSSリーダー

久しぶりにphpに触りました。
RSSのアメブロのフィードを読み込みました。
なので、次の時も開発しやすいようにメモです。

使った関数は以下の通り。
simplexml_load_file();
文字コードが違う場合もあるので。。。

mb_language(“Japanese”);
mb_internal_encoding(“EUC-JP”);
//改行削除
$addrssTXT = ereg_replace(“\r|\n”,””,$rssTXT);
//表示文字コード変換。 UTF-8 からの EUC-JP
$addrssTXT = mb_convert_encoding( $addrssTXT, “EUC-JP”,”UTF-8″);

あとは、いつも通り解析して、書き出しですが、($Feed->item as $entry $entry->titleや$entry->linkなどなど)
そのとき、javascriptとして書き出してjQuery等を使って(使わなくてもいいけど、便利なのは使う)htmlへ挿入するのが便利です。contextの設定ヘッダの書き出しも忘れずにー。

ちなみに、アメブロのxmlのパスは、読み込みように表示されるパスはID以下スラッシュが無いパスが良いです。
http://feedblog.ameba.jp/rss/ameblo/Blog-ID
※”Blog-ID”はブログのID

Published by tomoka , on 12月 11th, 2013 at 12:54 am. Filled under: javascript,いまさらNo Comments
この記事を読む