SyntaxHighlighter

2012年4月26日木曜日

2012年4月22日日曜日

オプションメニューについての覚書

onCreateOptionsMenu は初めてメニューボタンが押されたときに1回だけ呼ばれる。その後は onPrepareOptionsMenu だけが呼ばれる(初めてのときにも onCreateOptionsMenu の後に呼ばれる)。

インドからもダウンロードありました。

2012年4月21日土曜日

1.2 リリース

1.2 リリースしました。検索機能と、色のカスタマイズ機能がメインで、あとは1.1.1でできるようになったHTTPヘッダ表示を、さらにコピったり共有したりできるようにしたのと、ICS で勝手にスペルチェックされてたのを封じたぐらい。

結局、パフォーマンス改善は課題のままです。

以下、なんとかしなきゃと思っていることメモ。

  • 色分け表示のパフォーマンス改善
  • 検索結果の色分け表示のパフォーマンス改善
    フォーカスされているものがハイライトされるのは当然として、今フォーカスがないところもマッチしてるところは色変えてたんです。最初は。でも、正規表現とかで複雑なキーワードにして、はてぶレベルのソースを検索すると、めっちゃ時間がかかることに気がつき、その機能は外しました。
  • ホームページを整える
    多分使い方がわからないってことは無いと思うし、メールアドレスも Google Play に思いっきり載せてあるので必要があるかどうかは微妙なんですけど、信用のために多少は整えたほうがいいかな、と。
  • カラーピッカーが環境によっては小さすぎるのをなんとかする
    yanzm 様製のものを少しだけ手を入れて使っているのですが、大きさを変えようとして変えられないでいます。
  • Java について勉強

2012年4月20日金曜日

挫折中

色分けが早くなんねぇ・・・。これでも初期リリースに比べればだいぶ早くなってるんだが、まだまだ異常に遅い。 はてぶ(230kb以上)なんて開いた日には永久に応答が返ってこなくなってしまう。 かの有名な Jota Text Editor ではてぶの保存したソースを開いてみると一瞬で色分け表示される。 オープンソースなんでソース見て参考にさせてもらおうかと思ったんだけどソースファイル多すぎて追いきれない・・・。 ハイライト処理自体のファイルは読んだんだけど、速さの秘密はそこじゃないみたいで・・・(自力でやってる処理とほぼ同じだった・・・)。 へたれな自分が憎い。ブログを読んでみると、画面表示されてる領域しかパースしてないって書いてあって、なるほどーと思ったんだけど、でも一気に下までスクロールさせても待ち時間なしで全部ちゃんと色づけされてるんだよね。 俺の場合、最初のパースを一画面分だけにすれば確かにチョッパヤになると思うんだけど、下まで一気にスクロールさせたらそこで固まるに決まってる・・・。手詰まり(ToT)。 Jota に限らず、普通にPCのブラウザでソース表示させても、どのブラウザも一瞬で色つき表示するよね・・・。 あれは JavaScript の Highlighter かなぁ。

2012年4月18日水曜日

新機能実装中

相変わらずダウンロード数はじんわりと。1日1件ぐらいずつ増えたり減ったり。ブラジルとハンガリーからのダウンロードありました。

検索機能と色のカスタマイズ機能を実装中。あとエミュで 4.0 の動作確認してみたり。4.0(ICS) で EditText 内の文字列に下線が引かれてしまうのを防ぐには、InputType に textNoSuggestions を追加する。

2012年4月13日金曜日

1.1.1リリース

色分け高速化とHTTPレスポンスヘッダを表示する機能を追加してバージョン1.1.1をリリースしました。

Ark Web Source Viewer

一部のページが表示できなかった問題も解決。リダイレクトされていてそれを追えないのかと推測していたんですが、リダイレクトは自動的に追ってくれるみたいです。 問題は色分けしきい値のチェックのためにContent-Lengthを取得していたんだけど、よくよく調べたらそれがない場合も多々あるみたいで、そのチェック機能を外したら表示できるようになりました。

色分けは色分け自体のアルゴリズムが悪いのかと思ってさんざんいじくったものの解決せず、Debugツールで調べたりしたら遅いのは Html.fromhtml というライブラリから引っ張ってきたメソッドでした。 これを Spannable で自分で実装したらちょー早くなった。もうしきい値チェックいらないかも・・・。Spannable でもはまったのでメモしとくと、setSpan の第一引数のオブジェクトは毎回 new でインスタンス作らないと同じオブジェクト使いまわそうとしたら最後の position しか反映されません・・・。

ダウンロード数がちょっぴり増えてるのに有効端末数が増えてないってのはつまりインストールしてすぐにアンインストールされちゃってるってことかぁ・・・。ちょっとしょんぼり。

2012年4月11日水曜日

グローバル!

ダウンロードしてくれた方が4名増加してたんですが、その内訳が、日本1、アメリカ1、イタリア1、カンボジア1という構成!頑張って英語で説明書いた甲斐がありました・・・。感無量です。

2012年4月9日月曜日

有料版公開

有料版公開しました。はまったことメモはまた後日。値段設定は迷った末200円にしてみました。1本だけでも売れたらうれしいなぁ。

https://play.google.com/store/apps/details?id=jp.gr.java_conf.akr.android.wsvpro

サポート用に(?)Facebook のページも作りました。(2015/10/01追記:現在Facebookはメンテしていません。)

2012年4月8日日曜日

ハマり中

有料版にGoogleのLVLを使ってライセンス確認の仕組みを実装中なんですがどつぼにハマって抜け出せません。今日一日これで終わった・・・。

昨日の夜公開した無料版のほうはダウンロード数2wそのうち1は自分w一般向けのソフトじゃないんで仕方ないですね。競合も結構あるし。同僚や友達にも使いそうな人いないんで紹介してません・・・。有料版に四苦八苦してる間に小さいバグを見つけたので早速アップデートしてみました。ちなみに、古いブログとかでは、アップロード後すぐに反映されるようなことが書いてありますが、今現在はアップロードから反映までにはタイムラグがあります。どれぐらいかははっきりわからないですが少なくとも半日後ぐらいまでには反映されてますね。

2012年4月7日土曜日

初アプリ登録完了!

Ark Web Source Viewer

これまでにできたこと
  • TOP画面とMAIN画面のUI
  • TOP画面からMAIN画面へ入力値を持って遷移
  • ブラウザの共有からMAIN画面を呼び出し
  • TOP画面もしくはブラウザから受け取ったURLにアクセスして文字コード判定&変換しつつソースを表示
  • 画面の縦横切り替え対応
  • 色分け表示、設定によるON/OFF
  • MENU実装 ※メインページのみ
  • メール送信 ※添付は挫折
  • ファイル保存
  • 他アプリへの共有
  • 読み込み中のプログレスバー表示
  • リンククリック時の暗黙インテント受け取り
  • 設定画面
  • リロード実装
  • 文字コードを指定してリロード
  • コンテキストメニューでCopy Allの実装 ※auto-link有効時のみ
  • MAIN画面の慣性スクロール実装
  • progressDialogが止まる問題の解決
  • サイズによって色分け表示のON/OFFを切り替える
今日できたこと
  • 日本語版UI実装
  • ファイルの保存先はユーザが選べないように変更
  • 無料版へのAdMob導入
  • Google Play (旧Android Market) へ無料版を登録
残課題
  • オリジナルアイコン作成
  • 有料版登録

ついに ver1.0 完成です。アイコンは結局デフォのまま。

メモ。エミュの画面回転は Ctrl+F11。スクリーンショットは DDMS の左上の小窓でカメラアイコン。独自ドメインを持っていない人はパッケージ名はここで取得。ボランティアで運営されていてすぐに取得できて無料。ただし名前とメールアドレスが表示されるのでGoogle Play で公開されるものと合わせておいたほうがいいかも。Google Play へのアプリ登録時にはスクリーンショット2枚と 512×512 の PNG 画像必須。登録されたアプリの詳細画面へは、https://play.google.com/store/apps/details?id=パッケージ名 でアクセスできる。

はまったことメモその1。最終動作確認をしていて気付いたのだが、これまでSDカードだと思っていた /mnt/sdcard は SDカードではなかった。ここは内蔵領域らしい。でも世の中に転がっているSDカードに保存するサンプルコードを実装するとここに保存される。そして、エミュだと /data/data/appname/files に保存される内蔵領域への保存が、Xperia だとどこなのかわからない。ファイル保存でエラーは出てないのだが検索しても見つからず。めんどくさいので保存先は自動で判別・指定することにした。

はまったことメモその2。広告の View を突っ込むとレイアウトぶっ壊れた。今回広告は画面下部に表示させたかったので、オリジナル


ScrollView
LinearLayout
EditText

だったのを色々と変えてみたのだが、EditText がつぶれてしまったり横画面で幅が半分になったりと挙動不審すぎることに。結局、


LinearLayout
ScrollView  ※ layout_height="wrap_content" と layout_weight="1" が大事
EditText  ※ layout_height="wrap_content" が大事
AdView

に落ち着いた。

はまったことメモその3。Google Play で金を払ったあと、JavaScript の『予期せぬエラー』でにっちもさっちもいかなくなったらブラウザを Chrome か Firefox に変えれば進めると思います。つーか Google 系のオンラインアプリは基本そのどちらかのブラウザ使わないと問題でまくり。

2012年4月6日金曜日

Android開発そろそろ完成間近

1日空いたのは新しいノートパソコンを買っていろいろと初期設定していたから・・・。新品のB5サイズノートPC、3万円で買えちゃう時代になったんですね・・・。スマホの半額以下。一番左下のキーがファンクションキーという恐ろしい子ですが他はなかなか気に入ってます。

デスクトップにへばりついてるのが苦痛だったので色んな体制でいじくれる軽めのノートが欲しかったのです。ちなみに、DELLの商品検討段階でのチャットシステムを初めて利用してみたのですが、あれいいですね。注文してから届くまでに2,3週間かかりさえしなければ買ってたと思います。

で、開発の進捗について。

これまでにできたこと
  • TOP画面とMAIN画面のUI
  • TOP画面からMAIN画面へ入力値を持って遷移
  • ブラウザの共有からMAIN画面を呼び出し
  • TOP画面もしくはブラウザから受け取ったURLにアクセスして文字コード判定&変換しつつソースを表示
  • 画面の縦横切り替え対応
  • 色分け表示、設定によるON/OFF
  • MENU実装 ※メインページのみ
  • メール送信 ※添付は挫折
  • ファイル保存
  • 他アプリへの共有
  • 読み込み中のプログレスバー表示
  • リンククリック時の暗黙インテント受け取り
  • 設定画面
  • リロード実装
  • 文字コードを指定してリロード
  • コンテキストメニューでCopy Allの実装 ※auto-link有効時のみ
今日できたこと
  • MAIN画面の慣性スクロール実装
  • progressDialogが止まる問題の解決
  • サイズによって色分け表示のON/OFFを切り替える
  • 広告について調べる ※継続中
  • SDカードのマウント有無を確認してSAVE画面に反映
  • 細かいバグフィックス
残課題
  • 日本語版UI実装
  • オリジナルアイコン作成

だいたい完成した。もう機能的には増やさずにバグ修正とUI(日本語版は必要なんだろうか)まわり調整して、広告組み込んで終わりかな。アイコンはデフォのままかも・・・。

はまったことメモその1。慣性スクロールについてはググってもよくわからずだったので大きい本屋行ってAndroid開発系の本全部手にとって目次見たんだけどそれらしきものはなく、困り果てていたのだが・・・。ScrollView という View に入れてしまえばいいだけのことだった・・・。基礎から順番に勉強した人なら誰でも知ってるレベルだからどこにも書いてなかったのかな・・・。今までは LinerLayout の中に EditText を入れただけの UI だったんだけど、これだとスクロールはするが慣性が働かない。ScrollView→LinerLayout→EditText の順に入れ子にすればそれだけで慣性スクロールが働くようになった。

はまったことメモその2。ぐるぐる回るスピナータイプの progressDialog を使っていたんだけど、数秒すると回転が止まってしまうという現象が発生。止まっている時間が長いと結局応答なしで強制終了されるダイアログが出てしまって progressDialog 出してる意味がない状態だった。これもググり方が悪かったのかなかなか情報がなかったんだけど、ヒントになるようなQAの掲示板をやっと発見してソース見直して解決。Androidの非同期処理にはやり方が三種類ある。Thread を使う方法と、AsyncTask ってのを使う方法と、Service を使う方法。最初 Thread を使っていたんだけど、AsyncTask 使えば?っていう書き込みを見てそれに変えてみたりしたけど駄目だった。原因は handler で EditText.setText() してたんだけど、そこにめっちゃ重い処理を書いてたこと。重い処理はあくまで run() の中に書いておいて、handler では軽い処理だけにしないといけなかった。

はまったことメモその3。progressDialog の途中で、Content-Length が指定値より大きかったらアラートダイアログを出して、カラーリングをするかしないか聞いて、その返答次第で処理を分岐させたかったんだけど、返答を待たずに処理が進んでしまう。絶対に出るアラートなら、その返答ボタンのコールバック関数内で処理させてしまえば済む話なんだけど、カラーリングがONかつサイズオーバーのときしかダイアログは出さず、それを満たさないときにはとっとと処理して欲しいので、コールバック関数の中に処理を書いてしまうわけにはいかなかった。フラグ用の変数を作り、アラート条件を満たさなかったときと、返答があったときにはそのフラグ変数に値を入れる。フラグ変数が null の間は sleep(1000) し続けるループを処理の前に置いて解決。

2012年4月4日水曜日

Android開発続き

これまでにできたこと
  • TOP画面とMAIN画面のUI
  • TOP画面からMAIN画面へ入力値を持って遷移
  • ブラウザの共有からMAIN画面を呼び出し
  • TOP画面もしくはブラウザから受け取ったURLにアクセスして文字コード判定&変換しつつソースを表示
  • 画面の縦横切り替え対応
  • 色分け表示、設定によるON/OFF
  • MENU実装 ※メインページのみ
  • メール送信 ※添付は挫折
  • ファイル保存
  • 他アプリへの共有
  • 読み込み中のプログレスバー表示
  • リンククリック時の暗黙インテント受け取り
今日できたこと
  • 設定画面
  • リロード実装
  • 文字コードを指定してリロード
  • コンテキストメニューでCopy Allの実装 ※auto-link有効時のみ
残課題
  • MAIN画面の慣性スクロール実装
  • 広告について調べる
  • 日本語版UI実装
  • オリジナルアイコン作成

ファイルも開ける機能は没に。普通に優秀なテキストエディタで開いたほうがいいと思うし。色分け表示の色のカスタマイズ機能も付けようかと思ったんだけどニーズがあるか疑問なのでとりあえずv1.0では実装しない。UAや他の任意のヘッダを変更して送信できる機能も同様に見送ることにする。

すごくハマったことメモ。普通 EditText では長押しすると『語句を選択』『全て選択』『貼り付け』『入力方法』のコンテキストメニューが出るんだけど、メイン画面の EditText ではなぜか『入力方法』しか出てこなくて困った。ググっても全く情報が見つからず、自分でいろいろと試しまくった結果、AutoLink が有効だとそうなることが判明。当初はデフォルトで AutoLink 有効にしていたがデフォルトは無効に変更。AutoLink を有効にした場合だけコンテキストメニューに Copy All を追加することで暫定対策とした。

2012年4月3日火曜日

Android開発続き

これまでにできたこと
  • TOP画面とMAIN画面のUI
  • TOP画面からMAIN画面へ入力値を持って遷移
  • ブラウザの共有からMAIN画面を呼び出し
  • TOP画面もしくはブラウザから受け取ったURLにアクセスして文字コード判定&変換しつつソースを表示
  • 画面の縦横切り替え対応
今日できたこと
  • 色分け表示、設定によるON/OFF
  • MENU実装 ※メインページのみ
  • メール送信 ※添付は挫折
  • ファイル保存
  • 他アプリへの共有
  • 設定画面 ※途中
  • 読み込み中のプログレスバー表示
  • リンククリック時の暗黙インテント受け取り
残課題
  • MAIN画面の慣性スクロール実装
  • 広告について調べる
  • ファイルも開けるようにする
  • リロード実装

2012年4月2日月曜日

Android開発始めました

今更ながらついにスマホ購入し、Androidアプリの開発始めました。

とりあえず色分け表示可能で日本語も化けないHTMLソースViewer作ってみようと思います。

今日できたこと
  • TOP画面とMAIN画面のUI
  • TOP画面からMAIN画面へ入力値を持って遷移
  • ブラウザの共有からMAIN画面を呼び出し
  • TOP画面もしくはブラウザから受け取ったURLにアクセスして文字コード判定&変換しつつソースを表示
  • 画面の縦横切り替え対応
残課題
  • MAIN画面の慣性スクロール実装
  • 色分け表示
  • MENU実装
  • メール送信
  • ファイル保存
  • 他アプリへの共有
  • 設定画面
  • 広告について調べる