海月玲二

カテゴリ別リスト:マイカテゴリ-リリース情報(102件):新しい順

検索結果:102件中 51件-75件


FetchWebをまた更新した.今回は,機能追加が

  • 外部ホストからのダウンロード可否を選択可能にした
  • User-Agent設定機能

の二つ.外部ホストを無視すると,広告なんかを無視できるので微妙に便利なのだが,画像が別サーバーに置いてあったりするとそっちも無視されてしまうのが難点である.あとは例によってバグ修正だ.1.4以降,リンク変換をオフにしてるとリンク先のダウンロード自体をやらなくなってたりとか,ダウンロードでエラーが出たときの処理がてきとうで無限ループになる可能性があったりとか,なかなか間抜けなミスも多かった.

それからいつものタグ解析ミスの修正.正直,正規表現だけで確実にタグを抽出するのに少々無理を感じる今日このごろだ.属性値の順番が逆の場合もチェックしたりとか,シングルクォートで囲う中にダブルクォートが出てきた場合とか,めんどうなことこの上ない.もういっそのことhtml解析ライブラリの類を入れようか,などと一瞬考えるほどだ.それはそれでめんどうなので結局やってないけど.

バグ報告をいただいたので,いくつか修正.

FetchWeb

・タグの属性値がシングルクォートされてる場合,タグ中で改行されてる場合でもちゃんとリンクを取得できるようにした

NoTouchLauncher

・アプリをアンインストールしたとき,それがたまたま最近起動したリストに入っていると,正常に消えなくなるのを修正

しかしタグの属性値の引用符って,シングルクォートでも許されるんだとは知らなかった.FetchWebを作ってみて,htmlやcssについて意外と勉強になってしまっている.別に何かの役に立つというわけでもないけど.

FetchWebはどうも俺以外にも使ってくれてる人がいるようなので,真面目に改修してみた.

  • 内部処理を修正して高速化した

実は今までのバージョンはかなりてきとうに書いてあったので,そうとう効率の悪い処理をしている部分があった.特にリンクを変換するのが妙に遅い場合があったのだが,それが体感できるほど改善されている.けっこう変わってるので,もし文字化けとか起こすようだったら教えてもらえるとうれしい感じ.

  • 最後にちゃんとエラーメッセージを表示する画面を作った

今までは何か変でもしれっと「完了」とか出ててダウンロードできてない場合がけっこうあったけど,かなり減ったと思う.あと,複数URLをダウンロードする場合も,エラーは最後にまとめて表示するので,いちいち一回一回止まらなくなった.地味に便利.

・タイムスタンプを見るモードをつけた

このモードをオンにすると(デフォルトはオフ),既にダウンロードしたファイルがあり,なおかつサーバー上のファイルが更新されてないなら,ダウンロードしないようになる.ただし,画像とかに関してだけで,htmlとcssは必ずダウンロードされる.これは仕様だ.

あとおまけで,URLをテキストファイルから読みこむ場合,#で始まる行はコメントとして読みとばすようになった.

いやあ,やっと多少マシになったかな.正直,俺しか使わないだろうと思ってたので,なんとも雑なプログラムだったんだよね.もしソースを見てみた酔狂な人がいたら知ってると思うけど.

AndroidSKK更新.

今回はだいぶいろいろ変えた.でかいのはフリック入力キーボードの幅とか左右位置を調整できるようにしたことかな.ほかにも,フリック入力の反応を微妙に改善したり,ハードウェアキーボードのときはSandSが使えるようになってたり,ちょっとした使い勝手がいろいろと向上している.

あ,ひとつ前に書いた,1.6でソフトウェアキーボードが出ない問題もちゃんと解決した.別に誰も得しないと思うけど.

しかしまあ,androidのIMEを作る方法についてはいまいち情報が少なくて,どうもよくわからんことが多い.StackOverflowでさえも回答がつかなくて放置されてる例がときどきある始末だ.

今回,EditText(というかEditable)で保持しているシフト状態をIME側から取得しようとあれこれ調べてみたけど,結局やりかたがわからなかった.これができれば,自前でメタキーの管理とかそんなにしなくてすむと思うんだけどなあ.なんでgetEditable()はInputConnectionインターフェースのメソッドに入ってないんだ?

あとKeyboardの高さは強引に変更する方法が見つかったのに,同じようにやっても幅はどういうわけか変更できない,というか変更するとうまく反応しなくなる.Keyboard#computeNearestNeighbors()を呼ばないとちゃんとサイズの変更に追随しないようなのだが,これがなぜかprivateなのである.というかなんで高さの場合はうまくいくのかもよくわからない.しょうがないので,今回は横幅の全パターンに対してレイアウトファイルを用意するという強引な解決をしてある.

IMEを作ってる人達はどこから情報を得てるんだろう? ひょっとして俺が阿呆なだけ?

要望があったのでFetchWebをひさしぶりに修正.主な機能追加は,

  • URLを開くインテント(メーラーとか)でも起動できる
  • URLを書いたテキストファイルを使って起動できる(複数可)

の二つ.あと,htmlとかcssにdataスキームを使った個所(小さな画像をBASE64で埋めこんであるとか)がある場合に強制終了するのを修正した.

ていうかBASE64で画像埋めこんだりする方法なんて初めて知った.今の時代にはもはやあんまりメリットなさそうだ.でもテーブルレイアウトみたいにあちこちで微妙に残ってたりするのかなあ.

AndroidSKK緊急修正.

フリック入力ガイドの設定が特定の組合せのとき,全く操作ができなくなってしまう場合がある,というバグを修正.

じつはこの「特定の組合せ」というのはデフォルト設定のことなのである.ほかに改修してるのと合わせてバージョンアップしようかとも思ったんだけど,あまりに間抜けなので急いで修正版を上げることにした.

なにしろ,たぶん去年の夏にフリック入力をつけてからずっとこうだったと思うのだが,なんで気付かなかったのか不思議だ.ほかにも動いてる人がいたようなのがもっと不思議である.というか今から見ると,フリック入力版の初期は設定の如何にかかわらず動かなそうに見えるんだけどなあ.

TreeNote更新.前のトピックで何か書いてるが,結局今回も1.6でも動くはずなのでご安心だ.

今回の主な新機能は,ノードの分割機能・前後のノードと結合する機能だ.

あとブックマークを,行番号を覚えるんじゃなくてノード自体を覚えるように変更した.上下にずれてもブックマークがずれたりはしないはず.新ブックマーク機能ではブックマークのタイトルを変える機能はまだ作ってないんだけど,そもそもあれって要るかねえ? 別になくてもいいような気がしてきた.

実はこのブックマークの仕様変更で,若干スクロール動作などが軽くなってるはず.そんなにはっきりわかるようなもんではないと思うけど,ノードがすごく多いときは多少影響があるかもしんない.

おまけとしては,無用なスクロールを減らしてみた.ノードの操作をしたときなどに無意味に画面がぴょんぴょん動くことがあったと思うけど,必要ないときはスクロールしないようになってると思う.

現実逃避は創造性の源である.

最近は主にタブレットを使っているので,ふと思い立ってNoTouchLauncherをあれこれ改造してみた.主な変更点は

・アプリのアイコンを表示
・非表示アプリ設定(複数作成可)を追加
・ピンチイン/アウトでズーム

あたり.だいぶタッチパネル機寄りになってしまったような気がする.いちおうまだすべての機能が物理キーからも使えるし,動作もあまり重くはなっていないはずだが,まだNoTouchの名で呼ぶべきかどうか微妙だ.

むかーしこれを作ったとき,2chで「アイコンも表示してくれたらいいのに〜」的なことを言われたような記憶がある.そのときは「重くなるからヤダ」と思ってやらなかったけど,AsyncTaskでやってみたら別にそんなにレスポンスは悪化しなかった.これなら当時にやっててもよかったかもしんない.すでに2年以上前の話だし,そのころ言ってくれた人はもう使ってないだろうなあ.

SKKのテストをしてるときに,TreeNoteで強制終了するバグに気付いたので修正した.

前のバージョンは,「ファイル」->「新規作成」をして,画面を一度も切りかえずに(ファイル選択や設定の画面を出したり,別アプリに切りかえたりせずに)ノードを触ると落ちるはず.新規作成を滅多に使わないので気付かなかった.あと最初から新規画面のときも落ちないし.

要するに,コールバックするActivityの参照をonResume()でセットしていたので,onResume()を通らないパターンだとセットされないままになってNPEで死ぬわけだな.Activityをセットするので,準備の終わったonResume()時点にしとこうと思ったのが逆にミスであった.

AndroidSKK更新.

けっこう長い間,ときどきブラウザとかEBPocketとかが強制終了するので何だろうと思っていた.旅行中いろいろ試していて,「SKKが日本語モードのときだけ,画面をさわると落ちる」という事実に気付き,やっとSKKが原因であると認識できた次第.なんとか修正してみた.

最初はKeyboardViewのタッチイベント処理が何か変なのかと思ったが,そうではなかった.どうも,WebViewにフォーカスがあるときに,空文字列をsetComposingText()するとNPEになるようである.WebViewClassic#setNewText()で落ちているようなのだが,うーん,これは,もしかすると単にWebViewのバグだったりしないか? setComposingText()に空文字列を渡すこと自体はComposingTextをクリアするための普通の方法だと思うし(公式リファレンスにもそう書いてある),実際EditTextとかでは別に何も変なことは起きない.WebViewでちゃんと値をチェックしてないだけのような気がするのだが…….

とりあえずonStartInput()でsetComposingText()を呼ばないようにして回避してみた.その他の場面でsetComposingText()を呼ぶときは入力中のはずで,WebViewで入力中になることはないはずだ.たぶん.でも副作用がないか微妙に心配である.

TreeNoteで,本文入力中にカーソルキーが効かないという問題の報告をいただいたので,修正してみた.たぶんこれで大丈夫じゃないかと思うのだが,どうだろう.やっぱり自分で使ってない機能のバグは気付くのが遅れるな…….

EditTextにLinkMovementMethodを設定するとカーソルキーがリンク移動になるとは知らなかった.というか,カーソルキーでカーソルが動くことはArrowKeyMovementMethodなる別のクラスが担当してたんだな.そもそもMovementMethodは複数設定できるようにしたらいいと思うのに.ほかにあまりそんな用がないからだろうか.いや,衝突したら困るからかな.

ひさしぶりにTreeNoteを更新した.大きな機能追加は,

・ホイスト(ツリーの一部だけを表示した状態にする機能)
・検索結果抽出機能

の二つかな.ホイスト機能はけっこう苦労した.ホイスト画面での操作を元の画面に伝えるのに,内部的な処理をけっこう直さないといかんかった.まあ,結果的にすっきりしたからよかったな.正直自分ではたぶんあまり使わない機能なんだけど,作るのが面白かった.

  • 検索がちゃんと動作してなかったのを修正

undoやredoをつけたとき,内部的な変更にあわせて検索処理を修正しないと動かなかったのだが,まったく気付いてなかった.1.10以降は動いてなかったと思う.検索結果抽出機能をテストしてはじめて気付いた次第である.修正自体はほんの2個所なので,ますます間抜けな感じ.

あとおまけ機能としては

・キーボードが使えるときに自動的にツールバーを隠す設定
・いわゆる「共有」機能(選択ノード以下の内容を別のアプリに渡せる)
・URLの自動リンク化

の三つ.最初のは,タブレットとbluetoothキーボードのセットで使ってるとき,いちいち設定で出したり消したりするのが面倒になったのでつけてみた.けっこう便利だ.スライド式キーボードの端末なんかでも使えるかも.

AndroidSKK更新.

前回も書いた,送りがなが濁音で始まるときに困るという問題だが,結局フリックで直接濁音半濁音小文字を入力できるようにした.斜め方向を使うので,結果として上や左右の入力が若干シビアになってしまうが,まあなんとか使えないこともなかろうかと思う.

それより,フリック入力のガイド表示を新方式に対応させるほうが手間がかかった.形や色をいろいろ変えたりするのに,PopupWindowを複数組み合わせて作る方式にしたところ,PopupWindowにちょっとクセがあってやっかいだった.全部の組み合わせを画像で用意して,単一のPopupWindowにしたほうがたぶん楽だったと思う.でも,なんかそういうのは柔軟性に欠けるしあんまりやりたくない感じ.

AndroidSKKフリック版を旅行中使っていて,気になった点を修正した.

・「飛んだ」など,送りがなが「ん」で始まる場合に変換できなかったのを修正.
・「や」を左右にフリックするとローマ字がそのまま出てしまってウザいので,とりあえず「い」「いぇ」が出るように修正.
・フリック方向の誤認識が減るように修正.

最初のふたつは単純なバグである.みっつめはちょっと微妙だ.たぶんこれで誤認識は減ると思うのだが.今までのバージョンだと,指を動かしている間はずっと方向をチェックしているので,たとえば最初に右方向にフリックしたつもりでも,指を離す前にちょっとだけ上に動かしてしまったりすると「う」段になってしまうのだ(わかりにくいな).とりあえず,最初の指の移動イベントだけを拾って,あとは無視するようにしてみた.

あともうひとつ,「再び」のように

  • 送りがなが濁音で始まる
  • 対応する清音の送りがなが存在しない(「再ひ」)

という条件のときに,単語登録モードに入ってしまうので変換できない.わりと大きな問題だが,これはどう修正したらいいものだろうか…….単語登録モードでも,濁音半濁音は効くようにしてしまおうか?

AndroidSKKを更新.

いわゆるマッシュルームアプリを呼び出す機能をつけてみた.とりあえず専用キーを用意するほどでもないかと思ってスペース長押しにしてみたけど,どんなもんだろうか.

しかしアレだ,startActivityForResult()ってServiceからは呼べないのな.何かのActivityを介する必要がある.めんどくせえ.さらに返ってきた値をServiceに戻すにも,たとえばBroadcastとかでむりやり渡す感じ.めんどくせえな.そういうもんなんだろうか.まあマッシュルームアプリの一覧を出さなきゃいけないから,Activityを一旦介するぐらいは百歩譲っていいとしてもなあ.

あとマッシュルームアプリから受けとった文字列をcommitTextとかするわけだが,onReceive()の中で直接やっても何故か何も起こらないようだ.nicoWnnGのソースを参考に,専用のHandlerを用意してpostDelayed()するとうまくいくようだが,なんでだろう.別スレッドなのか?

それから細かい修正ふたつ.

  • 横画面でもフルスクリーンモードにならないようにした
  • 改行キーの動作改善

改行は改行文字を出すだけだったのだが,そうすると検索窓とかで「改行で確定」みたいな動作に対応できないようなので,ちゃんと改行キーのKeyEventを発行することにした.

授業も終わってヒマなのでいろいろ更新中だ.今回はHowmmの更新.いわゆるバグフィックス版である.

  • 改行文字の設定がちゃんとできていなかったのを修正

TreeNoteと同じように修正したので,設定したはずなのに消えたりすることはなくなったはず.ただ,バージョンアップすると改行文字の設定が消えるので,設定してた人はもう一度設定してほしい.

  • 画面が回転できるようにした
  • ソフトウェアキーボードが出たとき,画面をリサイズするようにした

これはTreeNoteとは違って簡単であった.AndroidManifest.xmlをちょっと直すだけ.

  • 端末によっては表示するときに強制終了するのを修正

知らなかったのだが,Javaで正規表現を扱うときにMatcher#find(int n)でnが負の数だと例外になるのね.直すのは簡単だったし,Matcher関係を書きなおしてすっきりしたし,それはいいのだが,じゃあなんで今まで顕在化しなかったのか謎である.IS01やIS03やエミュレータでは全然問題は起きてなくて,MeMO Padでだけ強制終了した.

aGrepのソースを見たらやっぱり似たようなところを修正してあって,android 4.2に対応というようなことが書いてあったけど,こんなことが変更になったりするものだろうか?

TreeNote更新.まず

・ブックマークされてる行はハイライト表示されるようにした

正直,なんでやってなかったのかわからん.簡単だし.

あとはタッチパネル機での使いやすさのための更新である.

・ツールバーのボタンと境界の棒のサイズを設定で変更できるようにした

タブレットで使ってみたら,細かすぎて操作しにくかったので.

・ソフトウェアキーボードが表示されたとき,画面をずらすのではなくリサイズするようにした

これでやっと,ソフトウェアキーボードでもまともに入力できる感じ.

実はこの修正にはずいぶん苦労した.adjustResizeを普通にやっても効かなくて,原因を探すのにずいぶん手間取ったのである.結局,SpiltPaneLayoutが外部からのサイズ変更を想定していないのが原因だった.作った人はそういう目的では使わなかったんだろうなあ.この対応の副作用として,縦画面で外側の境界を動かしたときに内側がちゃんと追随するようにもなった.

というわけでタブレット端末を買ったので,SKK for androidにソフトウェアキーボードを復活させてみた.さらに,せっかくなので,日本語入力はフリック入力にしてみた.なかなか苦労した.

というか今まで,俺はIS01難民だから関係ないもんという態度を取っていたので,ソフトウェアキーボードの作成について全然知識がなく,いちから調べなおす羽目になった次第.でも,あれこれ調べてみたけど,結局フリック入力の実現には「フリック方向を調べることや,方向に合わせて必要な処理をすることは全部自前でやるしかない」ということなのかな.めんどくせえことこの上ないな.アルファベット系のキーボードを作るだけなら,用意されたAPIを組み合わせるだけでもそれなりに使えるものができるのに.

あとKeyboardクラスに高さを設定するメソッドが無いのは納得できない.ソフトウェアキーボードのサイズって,ユーザーが設定できたほうが便利じゃないだろうか.

TreeNoteを更新.

今回の目玉はUndoとRedo機能である.某chで「Undo実装してないアウトライナーとか手抜きだ」的な意見を見たので,一念発起して実装してみた.Undo・Redoできるようにするために内部をかなり変更したので,変なバグとか入ってる可能性が正直なくはない.試してみようという奇特な人は,大事なファイルは事前にバックアップしておくことをおすすめする.

あと微妙にバグ修正もある.ファイルの新規作成をしたときに,新規作成欄をフォーカスするようにしたはずなのになってなかったバグとか.でもこれ何で直ったのかいまいちわかんないんだよなあ.IS01とIS03だと直ってるんだけど,ほかの機械でも大丈夫なんだろうか.そもそもandroidのフォーカス関係はどうもよくわからない.思ったとおりに動かないことがけっこうある.

編集→バックキー→保存確認ダイアログ→バックキーなどと操作したあと,保存操作をするとそのままさっきのバックキーが発動しちゃうバグも直した.これは単なる間抜けなミスであるが,androidのダイアログまわりの不便さのせいだとも言いたい気持ち.

あと何しようかなあ.ホイスト機能とかちょっと付けてみたいような気もしないでもない.どうやって実装したらいいかよくわからないけど.ツールバーのボタンのどれを使うかを設定できるようにする,とかも考えたのだが,そもそもタッチ操作でこのアプリ使ってる人がどれだけいるやら.

Howmmをちょっと更新した.

・「保留」タイプのリマインダーを新設,というかオリジナルHowmから導入.

ほっとくと勝手に下がったり上がったりする奴.いちおう,まだ日付とか決まってない場合に使うというもののはずだが,俺のように予定の絶対量が少ない場合「別に覚え書きでいいじゃん」となりかねない気もする.

・スペースで区切って複数の単語を入れた場合,AND検索になるようにした.

ついうっかりgoogleみたいなつもりで複数単語を入れてしまい,思ったとおりの結果にならず首をかしげることがあったので.というか自分でコード書いてるはずなのに馬鹿じゃなかろうか.

TreeNote更新.

・1.7.2以前から上書きバージョンアップする場合,改行文字を設定していると保存するときに強制終了するので,とりあえず強制終了はしないように修正.

この場合,改行文字の設定がクリアされるので,バージョンアップしたときは設定をしなおしたほうがいいと思う.

1.8で内部的な整理のために設定の形式を変更したとき,テスト中に自分で再設定していたので問題に気付かなかった模様.なかなかの間抜けだ.形式を変えてるんだから問題が起きるのは当たり前ではないか.

バージョンアップするときに自動的に設定が修正されるようにしたかったのだが,そもそも古い形式の設定に問題があるのでうまいこと更新するのが難しい.というか,古い形式では,よく考えるとちゃんと動いていたのが不思議なぐらいである.androidのSharedPreferenceというのはつまるところテキストファイルなのに,改行文字を直接書いていたんだからうまくいくほうがおかしい.実際には,設定変更直後とかはキャッシュされてていちいちファイルを読まないんだろうか?

いずれにしろ,今まで「改行文字の設定がどうもときどき消えるな」とかいうのがあったら,もしかすると1.8以降にすると直るかもしれない(直らなかったらまたコメントお願いします).

あとついでに,

・フォーカスをときどき見失うのを改善.

というのもある.カーソルキーで操作しているときなど,存在しないツールバーにフォーカスしたりとかいうのを防止してみた.

何かで「小説をアウトライナーで書くときは,登場人物を書いたノードを頻繁に見にいく」というような意見を読んだような気がするので,TreeNoteにブックマーク機能を付けてみた.単に行番号を覚えておくだけの単純な機能だが,長い文章を書くのであれば役に立たんこともないのではないか.いちおう「戻る」機能もつけておいたし.

ツールバーはスクロールできるようにしたので,ボタンが画面に入りきらない問題は一応解決したのであるが,メニューはどうしようか悩んでいる.項目が六つを越えると露骨に一手間増えちゃうしなあ.

ていうか機能が増えてきたのでTreeNote.javaがあまりにキッチンシンクでウザくなってきた.ほかのソースはせいぜい8〜9kなのにこれだけ45k越えだ.しかしこれもうまい分けかたが思いつかないので困ったものである.

あとついでに,先日書いたNoTouchLauncherのインストール・アンインストール自動認識版も置いておいたが,キャッシュの自動更新中にNoTouchLauncherを起動してしまうと反映されないはずなので,使ってみる人は注意してほしい.

最近タブレット端末にも興味があるので,作ったアプリはタッチ操作でも最低限は使えるようにしたいと思ってはいる.

前2chで,TreeNoteのツールバーは画面の下にも配置できるほうがいい,というような意見を見た気がするので,そうしてみた.ついでに,横幅が足りないときはツールバーをスクロールできるようにして,多少ボタンも増やした.

まあ,なんだかんだ言っても結局今はタッチ端末使ってないから,実際便利なのかどうなのかよくわかんないんだけどね.

あと「保存確認ダイアログが一回でも出たあとで縦横を切り替えると落ちる」というバグも修正したので,タッチで使わない人も,縦横切り替えをするならアップデート推奨.

Howmmのリマインダをちょっと修正した.

まず,アクティブ化してない締切りと覚書は表示しないように変更.このほうが本来のhowmオリジナルの動作に近いと思う.それから,実は予定については同じ日で開始時刻の違う予定の並び順がおかしかったのを修正.

さてそれはそれとして.

実はそもそも,howmのリマインダの「アクティブ化」というのが正直ピンと来ないのである.そこで,オリジナルと違う基準でリマインダが表示されるモードを試しに作ってみた.設定の「リマインダ表示順をhowm互換にする」というチェックをオフにすると,このモードになる.ここを変更したらリマインダの再読み込みボタンを押したほうがいいはず.

このモードだと,

・アクティブ化という概念はない.全部のリマインダが日付に基づいていっしょくたに表示される.基本的には,期日に近付くにつれて徐々に浮上する.

・リマインダのオプションは,「最上位にとどまる日数」を指定する.つまり,予定は「期日からオプションの日付だけ最上位に表示され,その後消える」,覚書は「予定と同様だが,オプション期間が過ぎると徐々に沈む」,締切りは「期日のオプション日数前から,期日までの間最上位に表示され,その後も消されなければさらに上がる」,という動作をする.

締切りだけ,期日が「最上位にとどまる期間のはじまり」ではなく「終わり」を意味するので,ちょっと非対称だ.でも,締切りは終わりのほうが重要だしなあ.

さてどんなもんだろう.俺は普通の人より予定やtodoがずっと少ないので,たくさんある人にとって便利かどうかはわからない.