ckw-mod を使う
概要
Windows上で作業する時,特に git や svn を使いたいときなどコマンドラインで作業を行うことがある.しかしながら,Windows付属のcmd.exeは*nixで採用されている各種の端末エミュレータに比べて非常に柔軟性に欠ける.cygwinなどをインストールして各種シェル(bash,tcsh,zshなど)をインストールした所で端末エミュレータがいまいちでは使い勝手がよろしくない.
ここでは,Windows上で,かつ日本語を取り扱うことのでできる ckw-mod を紹介する.
ckw-mod のインストール
以下のURLからダウンロードしたものを展開するだけでよい.なお下記URLのものは,オリジナルの ckw (by Kazuo Ishii氏)に各種のパッチが当たっているもので,現在は猫ロキP氏によりメンテされているものである.
ckw-mod のシェルの設定
ckw-modではckw.cfg を編集することで設定を行う.ckw.cfgはckw.exeと同じディレクトリに置いておけば良い.
シェルを設定するのであれば以下の Ckw*exec: を編集すれば良い.たとえば,以下の例では zsh を login shell として起動するように設定している.
emacs+elscreen
elscreen とは
emacsをタブ化する方法は幾つもありますが,なかでも elscreen は有名じゃないかと思います.elscreen は以下のサイトからダウンロードすることができます.
インストール,ならびに細かいテクニックは以下の公式ページが詳しいのでスキップします.
ElScreenは以下のような特徴
以下に elscreen の特徴を並べておきます
- GNU Screenライクなキーバインド
- タブを利用したマウスでのスクリーン操作
- メニューを利用したマウスでのスクリーン操作
- 最大10個のスクリーン(window-configuration)を保持
- フレームごとに独立したスクリーン管理
- わかりやすいスクリーン一覧表示
- スクリーンへの別名の割り当て
- アプリケーションから利用しやすいインタフェイス
Windows8 developer preview - インストール編
概要
あけましておめでとうございます.さて今日は Windows8 developer preview をインストールするメモを書いていきたいと思います.
既に各所で話題になっているとおり,Windows8のdeveloper preview版がリリースされておりテストできるようになっています.前回のWindows7の時もそうだったんですが,こういったテストリリースを一般に公開してくれることは様々なテストや機能確認ができるので非常にありがたい事です.
さて,Windows7 がリリースされたのは2009年9月1日です.Windows Vistaに比べると評判がなかなか良いように思えます.つい最近ついにWindows7のシェアがWindowsXPをようやく超えたという話が話題になっていましたが,企業等でもようやくリプレースが進んできているようですね.
Windows8の特徴
個人的に特にチェックしたい項目を中心にWindows8の特徴を上げていきたいと思います.とはいってもまだ正式リリースされていませんので,今後この特徴は変更されるかもしれません.
- MetorUI - Windows Phone や Zune で導入されているUI.
- メモリ使用量の改善
- 起動速度の改善
3つが特に気になる点ですね.ただ,最後の起動速度の改善については VMware 上にインストールする予定ですので確かめようがないですね...
準備するもの
- VMware などの仮想化マシン,もしくは使用していないPC
- Windows8 preview beta Windows 8 Developer Preview downloads
インストール
以下ではVMware player 4.0 にインストールします.ちなみにVMware player 4.0 より古いバージョンの VMware には Windows8 developer preview をインストールすることはできませんのでご注意ください.
仮想マシンの作成
VMware player を起動したら,新規仮想マシンを作成を選んで,インストーラディスクイメージファイルを選択して,ダウンロードしてきた iso をファイルを選択します.このとき,ディスクのOSの種類を検出できませんでしたと出ますが,無視して進みます.
次にゲストOSの選択を行いますが,ここでは画像の通り,「Microsoft Windows」,「Windows7」を選択します.64ビット版を落とした方はx64を選びましょう.
次にすすむと Windows7 のプロダクトキーがどうこうと聞かれます.が,Windows8 developer preview版ではプロダクトキーは必要有りませんので,何も入力せずに次へ進みましょう.
そうすると「Windows プロダクト キーが入力されませんでした。Windows はプロダクト キーなしでインストールされますが、後で手動によりアクティベーションを行う必要があります。続行しますか?」と聞かれるので,はいを選択して次へ進みます.
次に仮想マシンの名前や,仮想マシンのファイルを保存する場所を聞かれるので適当に設定します.
次にディスクサイズや,ファイルの管理法について設定します.とりあえず私は以下のとおりデフォルトでいってみました.
次の画面で作成する仮想マシンの確認をして,完了です.完了する前により詳細な仮想マシンのカスタマイズを行うこともここで出来ます.
完了をおすと仮想マシンのブートが始まりますが,そのときに VmwareToolsのダウンロードをするかどうか聞かれますので,インストールしておきましょう.
インストール
さてめでたく Windows8 developer preview のインストールがはじまると・・おもいきや,以下の画面が繰り返し出てインストールにすすみません.なんだこれは・・・とおもってたら,Floppyドライブが仮想ドライブに接続されていることが原因です.
上部メニューの仮想マシンー取り外し可能デバイスからフロッピーディスクを取り外しましょう.無事にすすむと,以下の画面が現れます.
Language は English しか選べませんが,時間や通貨の表示形式にはJapanese,キーボードはJapanese106が選択できます.次にすすむと,以下の画面が現れるのでインストール.
次に以下のライセンスを確認する画面が現れますので承諾して次へ.
インストールのタイプを選択します.ここでは「Custom」を選択します.
次にインストールするディスクの選択を行います.ここではUnallocated spaceになっているはずのドライブをそのまま選択します.
インストールが始まります.
ファイルのコピーなどが終わると設定が始まります.なんか緑色の画面が Windows っぽくないですね.ここではPCの名前を設定します.適当にいれましょう.
次にSettingsの画面がでます.ここでは「Express」「Custom」が選べます.Expressでは自動的に推奨の設定をするようです.
Expressでは幾つか設定を行うようですが,この中で気になるのは
- Send us info to help make Windows and location services better
- Let apps give me personalized content based on my location, name, and account picture.
ですね,ここはカスタムインストールにしてみました.次の画面で共有をどうするか聞かれます.この時点では何を share するのかよくわかりません (connet deviceはともかく)が,Yes, share and connet の下に,For home or work netowarks と出ていることから,いわゆる Windows の共有と推測できます.ここでは Yes を選択しました.
だんだん画面のスクリーンショットをとるのがめんどくさくなってきました.次は Windows Update および Internet Explorer の Smart Screen Filter の設定です.Smart Screen Filter は個人的にはいらないのですが,すべてOnでいってみました.
次はMicrosoftに送る情報の制御です.必要ない,送りたくないと判断したものはOffにしておきましょう.私は location に関するものをOffにしておきました.
次は,オンライントラブルシューティングについての設定と,アプリケーションがシェアする情報についての設定です.トラブルシューティングはとりあえず全部Onにしておきましたが,シェアする情報はすべてOffにしておきました.
次に,Log on という画面が表示されて Windows Live に Sign in するように促されます.Windows Live を利用するとブラウザのブックマークやら履歴が同期出来ますとか書いています.がここでは Don't wnat to log on with a Windows Live ID?を選びました.
そうすると,以下の画面が表示されてログオンに関する2つのオプションが提示されます.どうやらWindows Live IDを使うと異なるPCでも同じ環境が構築できるらしいです(ブラウザのブックマークやら,履歴,言語設定,パスワードなどなど).Local Account では他のPCと同期が取れないようです.ここでLocal Accountを選んで見ました(というかWindows Live ID使いたくないともいう).ただ,Windows developer preview 版では2つのオプションがあると書いてあることから,正式版ではかわるのかもしれません.
Usernameなどの設定を行います.Password HINTを強要するのは Windows7 以来変わっていません.HINTなしにできるようにして欲しい.まあ適当にダミーをかいておきました.
以下の画面が表示されて最終プロセスがはじまります.いい加減緑色も見慣れてきました.
インストールが終了して,話題になっているタイルUIが表示されました.今日はここまで.
gdipp で一部の文字が欠けるときの対処についてのメモ
概要
gdipp はWindows 上でより良いフォントレンダリングの結果を得るために, Windows の描画を担当しているGDI (Graphics Device Interface)の一部をフックして,gdippが提供するより良いフォントレンダリングルーチンに置き換えるアプリケーションです.しかし,一部のアプリケーションでは文字に欠落が生じることがあります.ここでは,その欠落を回避できる可能性がある設定を紹介します.
gdippとは
gdipp はWindows 上でより良いフォントレンダリングの結果を得るために, Windows の描画を担当しているGDI (Graphics Device Interface)の一部をフックして,gdippが提供するより良いフォントレンダリングルーチンに置き換えるアプリケーションです.具体的には,TextOut関数をフックして,freetype によるレンダリング等に置き換えるようです.以前は gdi++ というソフトウェアが有名でしたが,色々あって gdi++ およびその修正ルーチン等などを有志でとりこんで gdipp ができたようです(このへんの歴史はかなりいい加減).
gdippは以下のURLからダウンロードでき,x64アーキテクチャもサポートされています.また,Windows サービスとして実行できるほか,特定の実行ファイルのみに対してフックを行うためのwrapper が提供されています.
gdippの問題
私が現在考えているgdippの問題は2つあります
- WPF(Windows Presentation Foundation) を利用して描画を行なっているアプリケーションに対しては無効
- 一部のアプリケーションで文字が欠落する
WPFは比較的新しいUIを作成するためのインターフェースで,例えば Visual Studio 2010 では WPF が利用されています.実は仕事で VS2010 を使っているの(Emacs/Vimと併用)ですが,gdippが効かなくて大変残念な思いをしています.
そして,2番目の問題は例えば,論文をデータベース化して閲覧するソフトウェア Mendeley や,キーストローク型(コマンドライン型)ランチャー Launchy の設定画面などで l (エル)の文字が欠落する,あるいは Google 日本語入力の設定画面でも幾つかの文字が欠落することがあるようです.実は筆者はこれらのソフトウェアの愛用者でして困っています.この文章では2番目の問題について回避できる可能性のある設定について述べます.
文字の欠落を回避できる可能性がある設定
gdippの設定はgdippをインストールしたディレクトリ(フォルダ)にある,gdipp_setting.xml を編集することで行いますが,この中に rendererという項目があります.
この renderer はフォントレンダリングのモードを変更するための設定ですが,デフォルトでは 10 という値が設定されているようです.この値は libfreetype という Linux では有名なフォントレンダリングライブラリを利用をしてレンダリングを行うモードのようです.
しかし,オリジナルの Windows のフォントレンダリングに比べて字間に影響があるようで,レンダリングの際の文字列の長さの計算がうまくいかず文字が欠落することがあるようです.
これを解決するには renderer の値を 20 にすると良いようです.このモードは字間をオリジナルに保つモードのようです.実際に筆者の環境では文字の欠落が解決されました.
Eclipse を使わない Android アプリ開発メモ ー こんにちは世界編
概要
前回の記事では,環境の構築を行いました.ここでは実際におなじみの Hello, world を作ってみたいと思います.
注意
この文章は2011/12/31に書かれています.時間の経過と共に情報の信頼性は失われます.最新の情報とは異なる場合があります
あくまで個人的なメモのため情報の信頼性に乏しいかもしれません
前提
このページの情報はある程度知識のある方が読まなければわからないかもしれません.
また Platform は Windows を前提としていますが,ここにある情報だけで十分他 Platform での運用も可能だと思います.
プロジェクトの作成
Target ID の確認
プロジェクトを作成する前に,target id と呼ばれるものを確認する必要があります.Android アプリケーションを作成するためには,サポートするAPIレベルや,液晶サイズ・・・等々を決める必要がありますが, Android SDK ではこれらの情報を target id としてデータベース化しています.そして,開発を行う前に target id を決めてから開発をスタートさせる必要があります.この target id は各個人の環境で異なります. 自分の環境での target id のリストを得るためには以下のコマンドを実行します.
> android list targets
筆者の環境では以下のようになりました
Available Android targets: ---------- id: 1 or "android-10" Name: Android 2.3.3 Type: Platform API level: 10 Revision: 2 Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 ABIs : armeabi ---------- id: 2 or "Google Inc.:Google APIs:10" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 2 Description: Android + Google APIs Based on Android 2.3.3 (API level 10) Libraries: * com.android.future.usb.accessory (usb.jar) API for USB Accessories * com.google.android.maps (maps.jar) API for Google Maps Skins: WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800 (default), QVGA ABIs : armeabi ---------- id: 3 or "KYOCERA Corporation:DTS Add-On:10" Name: DTS Add-On Type: Add-On Vendor: KYOCERA Corporation Revision: 1 Description: DTS Add-On Based on Android 2.3.3 (API level 10) Libraries: * com.kyocera.dualscreen (dualscreen.jar) Dual Screen optional platform library Skins: DTS400 (default), WVGA854, WQVGA400, HVGA, DTS800, WQVGA432, WVGA800, QVGA ABIs : armeabi ---------- id: 4 or "LGE:Real3D Add-On:10" Name: Real3D Add-On Type: Add-On Vendor: LGE Revision: 1 Description: Real3D add-on Based on Android 2.3.3 (API level 10) Libraries: * com.lge.real3d (real3d.jar) Real3D library Skins: WVGA854, WQVGA400, Optimus3D (default), HVGA, WQVGA432, WVGA800, QVGA ABIs : armeabi ---------- id: 5 or "Sony Ericsson Mobile Communications AB:EDK 1.2:10" Name: EDK 1.2 Type: Add-On Vendor: Sony Ericsson Mobile Communications AB Revision: 1 Description: XPERIA Device Based on Android 2.3.3 (API level 10) Libraries: * com.sonyericsson.media.infinite.extension_1 (com.sonyericsson.media.infinite.extension_1.jar) Library for Android Market filtering * com.sonyericsson.eventstream_1 (com.sonyericsson.eventstream.jar) Library for Android Market filtering * com.sonyericsson.eventstream_2 (com.sonyericsson.eventstream.jar) Library for Android Market filtering Skins: WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800, QVGA, HVGA_XPERIA, WVGA_XPERIA (default) ABIs : armeabi
プロジェクトの作成
Androidアプリケーションは,主に幾つかの xml 文書と,Java class によって記述されます.これらのファイルを自前ですべて用意することももちろん可能ですが,これらのファイルを自動的に作成してくれるツールが Android SDK には同梱されています.以下のコマンドでプロジェクトのテンプレートを作成することができます.
> android create project --name hello --target 1 --path ${PROJECT_ROOT} --package jp.example.hoge.hello --activity helloActivity
ここで,--name はプロジェクト名を,--target は先程説明した target id を指定します.また --path はプロジェクトのパスを指定し,--package は Java class の package そのものです.最後に acitivity について少し説明します.Android アプリケーションはアプリケーション中の画面をひとつひとつを Acitivity という概念で取り扱います.計算履歴が別画面で参照できるの電卓アプリケーションを想像してみてください.このアプリケーションは電卓に相当する画面と,履歴の画面があるため2つの Activitiy があります.プロジェクト作成時に指定している activity はアプリケーション起動時に表示される acitivity の class (Activityは android.app.Activity class の extendsとして実装します)を指定します.少し古い記事ですが, が参考になるかもしれません.
ソースコードの編集
プロジェクトで作成されたソースコードは ${PROJECT_ROOT}\src 以下に配置されます.今回の例で言うと,${PROJECT_ROOT}\jp\example\hoge\hello 以下に helloActivity.java が作成されています.
作成された時点では,res/layout/main.xml で設定されている layout (後述)をただ読み込むだけのソースですが,layout を読むだけで Hello, world になっているのでここでは編集しません
Layoutファイル
Android では Activity 上に配置するボタンなどを(一般的には)xml で記述し,それを Java class 側から呼び出して実際に配置します.Layoutの設定は ${PROJECT_ROOT}\res\layoutに配置します.プロジェクト作成時にはすでにmain.xmlが作成されています.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, HelloWorld" /> </LinearLayout>
上記が main.xml の中身ですが,見ての通り TextView が配置され,しかも, Hello World が TextView の中身としてせっていしてあります.したがって,このlayoutを読み込むだけで Hello, world が表示されます.
というわけで,プロジェクト作成後何もいじらなくても Hello, world になっています.(もちろん自力で TextViewをコード中で記述しても可能です.)したがって,コードは編集せずに,ant を呼んでビルドしましょう
> ant debug
上記で debug コンパイル~リンクが走ります.成功すれば,その旨が表示されます.
ビルドされたバイナリは ${PROJECT_ROOT}/bin 以下に出力されます.
なお,ant release でリリースコンパイルが,ant install で仮想端末へのインストール, ant uninstall で仮想端末からのアンインストールが走ります.
ADVへのインストール/アンインストール
ant install でも良いですが,adb を使ってもインストール可能です.以下のようにします.
> adb install bin\hello-debug.apk
ビルドモード(debug or releaes)がサフィックスとしてファイル名につきます.また,このインストールですが,既にインストール済みのapkに対しては失敗しますのでご注意ください.その時は一度アンインストールする必要があります.
アンインストールはすこしめんどくさくて,package 名を指定する必要があります.例えば以下のようにします.
> adb uninstall jp.example.hoge.hello
まとめ
とりあえず,Eclipse + ADT を使わず Android アプリケーションを作成する下地ができました.あくまで自分用のメモなので色々と不備がありそうですがご勘弁ください.それでは良いお年を.
Eclipse を使わない Android アプリ開発メモ ー 環境構築
概要
筆者はとてつもなく Eclipse が嫌いです.とても良いIDEだと思いますし,多くの人に使われている実績があります.しかし,筆者だけの環境かもしれませんがとにかくクラッシュしまくってとてもではないですが作業になりません.普段は Emacs/Vim + make ですべて済ましてしまうので,これだけ重く,そして(無駄に)複雑な環境に筆者はイライラしてしまいます.もちろんIDEは効率を押し上げてくれる素晴らしいもの(多くに人は特にcompletionが・・と主張しますが,実はEmacsもVimもあるいは他のエディタも素晴らしいcompletionをしてくれます.ただし設定に手間を惜しまなければですが.個人的にIDEの素晴らしさは,依存関係を自動的にうまく処理してくれることにあると思います.)だと思いますし,コンパイラ・リンカの煩雑なオプション,Makefile のハックから解放されます.しかし,こういったIDEを使うことは(場合によっては)効率性を上げる一方で, コンパイル・リンクについての作法・知識を得る機会を失うため,Android アプリケーションの開発に限らず,少なくとも一度はEclipseのようなIDEを使わないで コンパイル・リンクの流れを学習するべきだと思います.という無駄に長いまえがきをしてみましたが,ここでは Android アプリケーションを Eclipse + ADT 環境を使わず作成することを目指していきます.
注意
この文章は2011/12/31に書かれています.時間の経過と共に情報の信頼性は失われます.最新の情報とは異なる場合があります
あくまで個人的なメモのため情報の信頼性に乏しいかもしれません
前提
このページの情報はある程度知識のある方が読まなければわからないかもしれません.
また Platform は Windows を前提としていますが,ここにある情報だけで十分他 Platform での運用も可能だと思います.
準備するもの
- Android SDK - http://developer.android.com/sdk/index.html
- Java Development Kit (JDK) - http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 適当なエディタ
- ckw(+cygwin) (オプション.だがあるととても便利)
- Apache Ant - http://ant.apache.org/
Android SDKのインストール
インストールとは書いたものの,まずはzipを適当に展開するだけ.ここでは仮にD:\android-sdk に展開したものとし,以下${SDKROOT}と記します.
APIのインストール
以上の作業だけでは関連ツールはインストールされましたが,Platform APIと呼ばれるAndorid API群はインストールされていません.そこで,${SDKROOT}にあるSDK Manager.exeを起動します.(ところで余談ですが,未だにファイル名中の空白を取り扱えないアプリケーションがありますね.そもそも空白入れるなという話もありますが)
SDK Manager.exeを起動したら必要なAPIを選択するわけですが,必要なものは「Tools」と自分のターゲットとするAPIのバージョンが最低限必要です.ここではToolsと現在主流 となっているAndroid2.3.3(API10)を選択することにします.
選択した後に,Install n packages ボタンでインストールが開始・・・の前にライセンス確認があります.よく読んでから,Accept all を選択して続行します.このAPIのダウンロードにはとてつもなく時間がかかります.色々バージョンを試したいとこには寝る前に開始することをお勧めします.莫大なファイルサイズなわけではなく単にサーバーが混雑しているためだと考えられます.
JDKのインストール
特筆すべき点はありません.ダウンロードしたファイルを実行してインストールを進めてください.ここではC:\Program Files\Java\jdk1.7.0_02にインストールされたとし,${JDKROOT}と以下記します
Apache Ant のインストール
Apache Ant はコンパイル~リンクに至るまでの一連のプロセスを自動化するためのツールです.make と同様のものですが,make でいう,コンパイル~リンクの一連のプロセスを記述しているMakefile的なものを Ant では xml で記述します.詳しくは Google で検索すると良いと思います.
Apache Ant を使う理由ですが,Android のツールが自動で作成してくれるツールが build.xml というコンパイル~リンクの一連のプロセスを記述するファイルを自動生成してくれるからです.もちろん Makefile を作成しても可能ですし,Maven というツールでも可能です.が,ここでは Ant を使う前提で話をすすめることにします.
インストールですが,特筆すべき点はありません.ダウンロードしたファイルを適当なディレクトリに展開するだけです.ここではD:\apach-antに展開したものとし,${ANTROOT}と以下記します.
環境変数を設定する
PATH
以下へPATHを通してください.
- ${SDKROOT}\tools
- ${SDKROOT}\platform-tools
- ${ANTROOT)\bin
JAVA_HOME
JDKを適当に利用するためJAVA_HOMEを以下のように設定してください.
- ${JDKROOT}
ADV (Android Virtual Device) の構築
ADVの作成
次にADV(仮想端末)を構築しましょう.ADVは ${SDKROOT}/ADV Manager.exe を使って構築することができます.ADV Managerを起動したら,New を選択して新規端末を作成します.
Newを選択して現れるダイアログで設定を行いますが,特に重要なのは target で,この設定により仮想端末がサポートするAPIのレベルが決定されます.他に name, 液晶サイズ,マウントするSDカードのサイズを設定して,Create AVD から端末を作成します.ちなみに最初の画面のEditから編集も出来ますので,まずは適当に作成してみてください.ここでは,target として Android 2.3.3 (API10)を選びました.
仮想端末の起動
起動は簡単で,ADV Manager.exe 上から作成した端末を選択して,Start で実行できます.しばらくすると(時間かかりますが)立ち上がってきます.(一瞬SDLappとみえるのでSDLでVMは作ってあるのでしょうか)
作成したADVとの通信
ADVと通信するには,adb.exeコマンドを使用します.adb はADVだけでなく,実機との通信にも使用します.さて,ここでは起動した仮想端末が認識されているか確認するため,以下のコマンドを実行してみてください
> adb devices
筆者環境では以下のように表示されました.
List of devices attached emulator-5554 device
ここまでで,環境の構築はひと通り終了です.お疲れ様でした.