「ニコWnn」を改造した時のメモ


2010/11/16 ページ作成
クロノス・クラウン合資会社
柳井政和
HP:http://crocro.com/
Twitter:http://twitter.com/ruten

はじめに

「ニコWnn」とは、Android向けのオープンソースのIME「OpenWnn」を元に作られたIMEです。

私はHT03-Aを使っています。しかしこの機種は、画面が小さく、入力キーが小さすぎて文章が非常に打ち難いです。そこで、オープンソースのIMEを改造して、自分にちょうどよいサイズのIMEを作ろうと考えました。

実際の作業は、情報収集の開始が2010年11月15日の深夜、試作の完成が早朝。その後翌日の夕方から作業を再開して16日の夜に終了しました。

完成品は、こんな感じです。左がデフォルトのIME。右が改造して作ったIMEです。

この時の作業の記録をアップしておけば、今後IMEをカスタマイズしたい人の参考になると思いましたので、以下に簡単ではありますが、手順をまとめておこうと思います。

環境はWindows Vistaです。

改造した「ニコWnn-Big」は、以下のページで野良アプリとして入手可能です。

ニコWnn-Big

また、プロジェクトはZIPとして、以下のページから入手可能です。

ニコWnn-Big プロジェクト Google ドキュメント

それでは以下、作業手順の履歴です。

Windowsで「Git」をインストール

ソースコードの入手に「Git」が必要です。以下を参考にしてインストールします。

WindowsでのGit環境構築とその注意点

msysGitでWindowsからGitを使う

「Git Bash」で「OpenWnnニコタッチ版」をゲット

「Git」を起動して、以下のコマンドを打ち込みます。「OpenWnnニコタッチ版」のプロジェクト一式がゲットできます。

$ git clone git://git.sourceforge.jp/gitroot/nicownn/NicoWnn.git

「C:\Users\\NicoWnn」に「OpenWnnニコタッチ版」がダウンロードされます。

OpenWnnニコタッチ版

Androidプロジェクトの読み込みと修正

手に入れたプロジェクトを、Androidプロジェクトとして読み込んで、以下の修正を行います。

キーボードの高さの変更

以下のファイルを修正します。

/NicoWnn/res/values/dimens.xml

<dimen name="key_height">48dip</dimen>
↓
<dimen name="key_height">60dip</dimen>

変換候補の高さの変更

以下のファイルを修正します。

/NicoWnn/src/com/hiroshica/android/input/nicownn2/TextCandidatesViewManager.java

private static final int CANDIDATE_MINIMUM_HEIGHT = 42;
↓
private static final int CANDIDATE_MINIMUM_HEIGHT = 60;

パッケージを変更

本家の「ニコWnn」とバッティングしないように、パッケージの変更を行います。

それに伴い、元のクラスパスを検索して、新しいクラスパスに全て書き換えます。

com.hiroshica.android.input.nicownn2
↓
com.crocro.android.input.nicownn2

次以降は、JNIのファイルの書き換えになります。

Windowsに「Cygwin」を導入

以下を参考にして、「Cygwin」環境を構築します。

ネイティブコードとの連携によるAndroidの機能拡張

Cygwin

Cygwinの「setup.exe」で、gccとmakeをインストールします。

方法は、上記の「ネイティブコードとの連携によるAndroidの機能拡張」を参照してください。

コンパイルできる環境を作る

Windowsの環境変数に以下の内容を追加します。

AndroidのNDK 1.5でHelloJNIを動かす手順

環境変数として、ユーザー変数「HOME」の末尾に「/home/」のフォルダパスを追加します(これはr4以降では必要なさそう)。

Android NDK r4

環境変数として、ユーザー変数「PATH」の末尾に「C:\~\android-ndk-XX」のフォルダパスを追加します。

さて、ここで重要なことを書きます。

NDKは「r4からコンパイル方法が大きく変わっています」。これは、非常に重要です。

ネットの情報を参考にしてコンパイルする際は、「r4以上の情報かどうか」確認してから読む必要があります。

r3以前とr4以降では、コンパイル方法がまったく違います。なので、r3以前の情報を見ていると、上手くいかないので、時間を無駄にします。

プロジェクトのビルド

環境が整ったら、JNIのビルドを行います。

「Cygwin」を起動します。

アプリの AndroidManifest.xml があるところに移動します。

以下のコマンドで詳細ビルドを実行します。

ndk-build V=1

nicoWnnをビルドする際の注意点

・「libs」フォルダは「jni」フォルダに名前を変更する。

・「NicoWnn\jni\libwnnDictionary\Android.mk」の「LOCAL_LDLIBS += -ldl」の周囲のif文をコメントアウトして、「LOCAL_LDLIBS += -ldl」を強制実行させるように変更する。

上記について、例を示します。

#ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
LOCAL_LDLIBS += -ldl
#endif
#ifneq ($(TARGET_SIMULATOR),true)
#LOCAL_SHARED_LIBRARIES += libdl
#endif

また、プロジェクト直下のmakeファイルは、Java側からJNIにリンクするのに必要なので削除しないようにします。

アプリの名前を変える

以下のように変更します。

    <application ~ android:label="NicoWnn-Big" ~
    <service ~ android:label="nicoWnn-Big" ~

ついでにアイコンも変えます。

あと「assets」フォルダのドキュメントにも追記します。

終わりです。

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2017 Cronus Crown (c)1997-2017 Masakazu Yanai
このWebPageに関するご意見・お問い合わせは
サイト情報 弊社への連絡
までお願いします。