Neo Inspiration

Feed Rss

2007年にブログを初めて少しして作ったツールで、
個人的に初めて公開したツールだったので思い入れのあったSEOツールのキーワードサジェストツールですが、
YahooAPIの改定に伴い有料化するということで、今月で終了することにしました。
5年半という長い間ありがとうございました。

思い返すと当時はオーバーチュアのキーワードアドバイスツールが終了して、
何とかして検索回数を求めようとみんな躍起になっていた時期で、
あの時キーワードアドバイスツールからひたすら情報を集めておいて
サービスを開始した所とかは割と成功してますね。

まあ今となってはGoogleも少しは情報を出すようになっていますし、
あまりリアルタイムで役に立つツールにはなりませんでしたが、
少しは公開した意味があったかな?と思っています。

TwitterといいYahooといい、こういうAPIビジネスが終焉していくのを見ると
当時の流行語だったWEB2.0的なアレの終焉を垣間見てしまいますね~

ずっと更新していませんでしたが、
いくつかアプリをリリースしたりしていました。
WebViewを使った小さなアプリはちょこちょこ出したりしたんですが、
今年になってやっと大きなアプリがリリースできたのでその時のお話でも。
なおアプリは全部Titaniumで作成しています。

会社のアプリの宣伝ですw
Repoアプリ
お小遣い稼ぎ で検索すれば出てきます。

アプリはざっくりいえばお小遣いアプリでして、
記事を投稿したらそれに応じた報酬がもらえる仕組みになっています。
ただ、この投稿ってのが曲者でして、
クライアントによって細かい要望が一杯あるので、
それに臨機応変に対応するようにPC版では専用管理画面でフォームを自動作成して、
それをJSONに吐き出しています。

同じことをアプリでも求められていたので、
PC版と同じJSONを受け取ってアプリ上でフォームを作成していたんですが
まさかのメモリが足らないという。。。

10文字から20文字の間の○○というワードが入った文章、
350文字以上の○○というワードが入っていて、かつ○○という文字が入っていない文章
などの複数のフォームがあり、
回線が弱いことの多いアプリでは都度POSTしてチェックするわけにもいかないので、
書き込み終了と同時にチェックをする形にしていました。
そのため、一つのフォーム必ずeventListenerがついていて、
しかもそれが割と色々とチェック(必須ワード、NGワード、文字数など)をするので
フォームがたくさんあると旧型のiphoneとかでは描画がおかしくなります。
特に書き込み最中に(ソフトウェアキーボード表示中)に残りの画面をスクロールしたりした際には
結構な確率で描画がおかしくなりました。(ビヨンビヨンってなったのでビヨンビヨン現象とか言ってましたw)
ここら辺はEventごとの処理をまとめてなるだけ短く綺麗に書くようにしたり、
一部はあきらめてPOSTした際にチェックするようにしたりしました。
それでもまだiphone4とかでは発生したりするんですが、
一応少し待ったり画面を切り替えたりすれば(ようはメモリにきちんとロードされれば)
表示できるので、一旦Ver1としてリリースしています。

またそれ以外に
Ti.APP にカスタムイベントを追加して、それを後で着火する形で書いていたのですが、
いらなくなった時に手動で消す必要があるので、無駄なメモリを使いやすいので、
なるだけ作成した画面自体にカスタムイベントを追加するように書き換えたりしました。

また、案件一覧を表示する際も検索出来るように色々とTableRowにワードを追加していたんですが、
これがまた重い。。
案件タイトル、ディスクリプション、タグをくっつけたものをオブジェクトのプロパティに入れて
それを検索対象にしていたんですが、
こいつのせいで、100件とかを超えたテーブルになるとスムーズにスクロールできない
(表示されていない部分がメモリから落ちているかんじ)
になってしまっていたので、
これも全部きっぱり排除しました。
っていうかまずは快適に使えるように検索機能自体も削除しちゃいました。

とまあ、今回はメモリ不足に悩まされまくったアプリですが、
Ver2ではこれにローカルDBをつけてキャッシュとかもしようと考えているので、
さらに重くなりそうで今から気が重いです。。

絵画センス0に自分にはフォトショやらイラレやらは操作はできても
まともなボタンを作ることはできないので、
せめて単純な角丸グラデのボタンくらいXMLで作れないかということで。

結果こんなかんじになりました。

メインに配置するボタン

#layout/main.xml
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/submitButton"
    style="@style/myButton"
/>

ボタンのスタイル設定

#values/style.xml
<resources>
<style name="myButton" parent="android:Widget.Button">
        <item name="android:textColor">#444444</item>
        <item name="android:layout_margin">10dp</item>
        <item name="android:padding">10dip</item>
        <item name="android:background">@drawable/frame</item>
</style>
</resources>

#drawable
frame.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="1dp" android:color="#cccccc" />
    <corners android:radius="5dp" />
    <gradient
        android:angle="270"
        android:startColor="#ffffff"
        android:centerColor="#dddddd"
        android:endColor="#eeeeee"
        android:type="linear"
        android:centerX="0.5"
        android:centerY="0.5"
    />
</shape>

これでiphoneっぽいアイコンになります!

デザインができない人用に
こんな感じのXMLのテンプレートみたいなの公開してるとこないのかなぁ。。

検索しても出てこなかったので、文字ごとにバラして
一つづつ書き出し>高さ調整 を繰り返してたんですが、
その場合、一つ一つの高さを足していって合計を出したりとか
結構めんどくさいので、なんとかならんもんかと思ってたんですが、
実は単純に改行挟めばいいだけでした。

なので、こんな感じに

//文字列を1文字づつ配列にする。マルチバイトがないのであれば、str_splitでも可能
$l = mb_strlen($string,'UTF-8');
$chunked = array();
for ($i=0; $i<$l; $i++) {
  $chunked[] = mb_substr($string,$i,1,'UTF-8');

}

//配列を改行でjoin
$verticalString = join("\n",$chunked);

//指定のイメージデータに書き込み
imageTTFText($img,$fontSize,$angle,$x,$y,$color,$font,$verticalString);

単純にばらして改行でJOINしてからTTFTEXTにつっこめば問題なく改行してくれます。
ただ等幅フォントじゃないと微妙に縦がおかしいかんじですが。

今年は飛躍の年でした!
技術的には半分PHP、半分FLEXってかんじでしたね。
まあFLEXで作ったSEOツール系はだんだんPHPに置き換わっていますが。
あと、諸事情でVPS系10台近く、専用サーバ、クラウドなどサーバ周りをめちゃくさ触った1年でした。
そういうの嫌いで前職やめたんですけどね。。

ってことで毎年恒例WEB履歴

去年:総検索回数:10888
今年:総検索回数:10410

1月:1032
2月:828
3月:735
4月:742
5月:1165
6月:1340
7月:970
8月:824
9月:727
10月:826
11月:724
12月:497

トップサイト

livedocs.adobe.com

とうとうトップ10にhatenaもphp.netも入らなくなった。。
前者は時代を感じるし、後者は成長を感じる!

ということで、今年1年お疲れさまでした!