Techracho

Androidの多言語対応strings.xmlを効率的に管理する

このエントリーをはてなブックマーク Share
2010.07.12    Eclipse, android, 馬場   タグ: , , , , , , , , , —    baba   

Androidは多言語対応が簡単で、

values/strings.xml
values-ja/string.xml

などの言語ファイルを作るだけで、システムロケールにあわせて自動的に多言語対応されます。

しかし、開発しながらstrings.xmlを書いていくと、複数言語を管理するのはかなり大変。
また、開発者以外の翻訳者にXMLを書かせるのも酷な話です。

ということで、万能ツールExcel君の出番です。

簡単なVBAスクリプトで、Excel管理している言語ファイルから、strings.xmlを出力する機能を作りました。
(たぶん似たようなことをやっている方は多いですよね・・・)

言語ファイル

言語ファイル

これを使えば、

・日本語にはあるのに英語には無い!などの、strings.xmlの記述ミスが無くなります
・Excelなので、XMLを分からない人にも翻訳をお願いできます
・一括生成で、スピーディーに言語のアップデートができます

作ってみたばかりで、不具合等あるかもしれませんが、是非お試し下さい。
フィードバック頂ければ幸いです。

ダウンロード

※VBAマクロなので、Excel設定でマクロを許可して下さい
※Excel 2007で作成しています
※UTF-8対応のため、UTF-8ファイル作成 for VBAのライブラリを使わせて頂きました。作者様に感謝致します。

Eclipseのパッケージ表示を階層・フラット切り替え

このエントリーをはてなブックマーク Share
2010.06.24    Eclipse, java, 馬場      baba   

Javaのパッケージは、階層構造に見せかけた単なるドット区切りの名前ですが、少なくとも見た目は階層にしたいですね。

Eclipseの設定がたまに変わってしまうことがあるのですが、階層表示・フラット表示の切り替えは↓です。

eclipse

PHPEclipseでTABをスペースにする設定

このエントリーをはてなブックマーク Share
2010.06.20    Eclipse, PHP, プログラミング言語, 馬場   タグ: , , , —    baba   

PHPでコードを書く場合、TABの代わりにスペースを使うコーディング規約を採用することが多いと思います。
Eclipose+PHPEclipseを使う場合、うっかりTABが入ってしまうことが多いので、以下の設定を忘れずにしておきましょう。

※以前の記事で、2番目の設定を忘れていました。これをやらないと、自動インデントがTABになってしまいます。

PHP Editor設定

PHP Editor設定

PHP Formatter設定

PHP Formatter設定

Text Editor設定

Text Editor設定

とくに2番目を忘れがちなので気をつけてください。
(3番目は、やらなくても良いはずですが、どうせなら念のため)

分散バージョン管理Bazaarのチュートリアル(Eclipse対応!)

このエントリーをはてなブックマーク Share
2010.05.25    Eclipse, 伊藤   タグ: , , , —    tomotaka   

こんにちは。伊藤です。

今日はアプリケーション開発とは切っても切り離せないバージョン管理システムについて書こうと思います。
BPSでは現在バージョン管理システムとしてSubversionをメインに使用していますが、
ここ数年の分散バージョン管理システムの盛り上がりから、
分散バージョン管理システムについて最近調査・検証しています。

ある共同プロジェクトでGit, Mercurialとならぶ分散バージョン管理システム3強のうちの1つ、Bazaarを試す機会があったので、
EclipseでBazaarを使うところまでを共有したいと思います。

Bazaarのインストール

Bazaarのインストールはとても簡単です。

Bazaar公式「Download and Install」のページから自分の環境を選んで、インストーラをダウンロードします。
または説明に沿ってインストールします。

WindowsもBazaarプロジェクトがインストーラを用意しています。
MacOSX用もdmgがありましたので、インストーラが用意されているものと思います。

WindowsではTortoiseBZRというTortoiseSVNのようなシェル統合もインストールされるようですが、
2010/05時点でTortoiseSVNほどの完成度はないようです。

Windowsの場合インストールが終わったら環境変数PATHが更新されているので、いったん再起動するとコマンドラインにもパスが通ります。
bzrコマンドのオプションなどは環境に依存せず同じですので、安心して使えますね。

ローカルにリポジトリを作って使ってみる

windowsでも、UNIX系OSでも、適当にディレクトリを作成して、そこにcdして
bzr init
と打ってみます。
これだけでそのディレクトリは既に立派なBazaarリポジトリです!

ここにtest.txtというファイルを作ってみましょう。
名前や内容はなんでもいいですが…

$ echo "test" > ./test.txt

この状態で、いまBazaarでどういう状態かというのを訪ねるにはbzr statusコマンドを使います。
省略してstatでもいけます。

$ bzr stat
unknown:
  test.txt

こんな感じになるはずです。
これは現在bazaarで管理されてないファイルtest.txtがあるよ、という意味です。
test.txtをBazaarに管理させましょう。svnと同じように、addしてcommitです。

$ bzr add test.txt
adding test.txt
$ bzr commit -m "added test.txt by tomotaka"
Committing to: /home/tomotaka/code/test/
added test.txt
Committed revision 1.

こんな感じになるはずです。
add, stat, commitの他にもmv, log, mkdir, remove, remove-tree, diff, revertなどのコマンドがあります。
だいたいsvnなんかと同じですよね。

詳しいコマンドのリファレンスは

bzr help
bzr help COMMAND

などで調べることができます。

もちろんBazaar公式のオンラインリファレンスを見るのもいいでしょう!

これで一つのディレクトリをバージョン管理することはできるようになりましたね。
次のセクションではネットワークのむこうにあるリポジトリのやりとりを行う実践編です!

リモートのサーバからリポジトリをbranch

ここでは前提として、リモートサーバ上にプロジェクト全員で共有するリポジトリがあり、
最終的な変更はすべてそこに集約しようという前提で話を進めます。
(ようするにSubversionの作業フローを維持してどうBazaarでモアベターに置き換えるかということです。)

どうやら分散管理システムでは、プロジェクトを複数人で共同開発する際は個人ごとにリポジトリを持つのが普通のようなので(そうしないと分散の意味がない)、
checkoutではなく、branchコマンドでリモートにあるリポジトリの複製を作りましょう。(gitならgit cloneかな?)
リモートサーバへはbzr+sshプロトコルで接続するのが簡単そうです。
sshのサービスがあがっていればなにも設定しなくても使えます。便利ですね。

$ bzr branch bzr+ssh://tomotaka@honyarara.bpsinc.jp/path/to/repository/ ./localbranch

これで自分のデスクトップで作業を行うことができますね。
このlocalbranchに対するコミットは自分だけのコミットになるので、
自分の中でのひと区切りや、一定機能単位などで好きにコミットできます。
ここが分散バージョン管理システムの利点です!
subversionなどの集中型のバージョン管理システムでは、
(とくにメンバーの多いプロジェクトでは)リビジョン番号の爆発を防ぐためや、トラッキングのしやすさを維持するために
ある程度ローカルでまとめあげてから(バグを取り除いて、完全に動く状態にする)コミットするのが慣例かと思います。

しかし、これのよくないところは「バグが取り除かれて、完全に動く状態になる」までの一切の変更はバージョン管理されていないのです!
つまり「バグが取り除かれて、完全に動く状態」にならない限り、昨日のコードに戻したい
とかができないわけですね。上記のポリシーだと。

分散リポジトリなら、自分のリポジトリにガンガンコミットしても、誰にも迷惑はかかりませんし、
むしろバージョン管理ができるのでガンガンコミットするべきです。
適切な単位=バグが取り除かれて、完全に動く状態になったら、それをまとめてリモートのリポジトリに反映してあげましょう。

リポジトリ間での差分をやりとりするには、pushとpullというコマンドを使います。
pushは自分の変更履歴を引数で指定されたリポジトリに送ります。
pullは指定したリポジトリの変更履歴を取り寄せて自分のリポジトリに反映します。

リポジトリは互いに対等ですが、Bazaarではコピーしたリポジトリは自分のコピー元の
リポジトリのURLを覚えているため、リポジトリを指定しないbzr pushを実行すると
コピー元リポジトリにpushしてくれます。これがsvnでいう中央サーバへのコミットのようなイメージですね。

$ bzr push

うーん、簡単。

となりの人のマシン(192.168.0.123)の、となりの人のリポジトリから中央サーバを介さずに
となりの人が施した変更をもらってくることもできます。

$ bzr pull bzr+ssh://tomotaka@192.168.0.123/tonari/no/hito/no/repository

これでネットワーク経由でのバージョン管理もマスターできました!?

bzr-eclipseを使ってみる

BPSではいろいろな言語をプラグインを利用して統一的なインタフェースで編集することができるEclipseを
共通の開発環境として使っています。
普段はSubclipseプラグインを使ってサーバ上のSubversionリポジトリとやりとりを行っているため、
似たような使い勝手のEclipseプラグインを探してみたところ、
どうやらBazaarにもbzr-eclipseというEclipseプラグインがあることがわかりました。

ただ、このプラグインは単独では動かず、bazaarが実行するPCにインストールされていないといけません。
先にBazaarをインストールしましょう!
あ、Bazaarだけでなくbzr-xmloutpuptプラグインが必要でした。
Windowsのインストーラは標準でbzr-xmloutputを入れてくれます。
Ubuntuだったらaptitude install bzr-xmloutputでインストールできます。

インストールは簡単で、いつものeclipseのプラグインインストーラにURLを入れればいけます。
最新バージョンがアップロードされているURLは、Bazaar公式のbzr-eclipse intallationページから参照してください。
うまくインストールできましたでしょうか。
インストールできたら設定画面のTeam > Bazaarから、Bazaarのバイナリ(bzr.exe)を選択する必要があります。
Windows 7ではインストーラのデフォルトのままインストールしたらC:\Program Files (x86)\Bazaar\bzr.exeでした。
環境に合わせて適切に設定しましょう。

しかしこれだけではbzr+sshプロトコルでリモートサーバとうまくやりとりすることができません。
とくにWindowsでは設定がめんどくさいです!(Linux版Eclipseは普段使わないのでここでは触れられません, すいません!)
bzr+sshをうまくいかせるためにいろいろ悪戦苦闘したので、ここで共有します。

まず、PuTTYで鍵交換方式によるSSH接続のページを参考に、
コマンドプロンプトで

$ bzr branch bzr+ssh://目的のリモートリポジトリURL/

を実行してパスワードが出なくなるところまで持っていきます。
おおざっぱに書くと

  1. puttygen, pagentをDLする
  2. puttygenでprivate keyとpublic keyをつくる, パスフレーズはなしで。
  3. pagentをdouble clickで起動, タスクトレイにいる帽子かぶってるやつ右クリックでadd key => つくったprivate key登録
  4. 公開鍵をサーバに転送。 ssh-keygen -i -f (公開鍵ファイル) >> authorized_keysで変換してauthorized_keysに追加
  5. コマンドラインでbzr branch bzr+ssh://user@host/path/to/repos/ localrepos/ とかやって認証なしでbranch切れるか確認する
  6. うまくいけばbzr-eclispeでもいけるはず。(File > New > Project > Bazaarにbranch作成がある)

ですね。

普段サーバ作業をあまりしない方には以下のチェックリストが参考になるかもしれません:

  • 公開鍵をauthorized_keysに登録するときに変換し忘れてない?
  • .sshディレクトリのパーミッションは700 ? オーナーは自分 ?
  • authorized_keysのパーミッションは600 ? オーナーは自分 ?
  • ファイル名間違ってない ?
  • 公開鍵と秘密鍵間違えてない ?

コマンドプロンプトでうまくいけば、bzr-eclipseでもうまくいきます。
bzr-eclipseでリモートリポジトリからbranchをつくるには、new project > Bazaarから行います。
Importではないので注意!

—-

いかがだったでしょうか?
以上で今回のBazaarチュートリアルはおしまいです。

それではBazaarで楽しい開発ライフを!

Android “A resource exists with a different case”

このエントリーをはてなブックマーク Share
2010.04.30    Eclipse, android, java, 馬場      baba   

Android開発中に以下のようなエラーが出ることがありました。
どのファイルもエラーになっていないのに、プロジェクトがエラーになる状態です。

The project was not built due to “A resource exists with a different case:

これ、AndroidManifest.xml に書いてあるパッケージ名と、実際のコードのパッケージ名で、大文字小文字が違うために発生していた現象でした。

最初にプロジェクトを作った際、パッケージ名を大文字にしたのですが、気が変わって小文字に直して、マニフェストファイルは書き換え忘れていました。

全然違うものが書いてあれば気づくのですが、大文字小文字の違いだけだと、気づくのが遅れますね・・・

Eclipse パッケージエクスプローラにフォーカスを移す

このエントリーをはてなブックマーク Share
2010.04.23    Eclipse, 芝原      shibachan   

EclipseでPackageExplorerにフォーカスを移すには、Alt+Shift+Q, Pというショートカットが用意されている。

非常によく使いたいものではあるが、Packagesを開いて、PackageExplorerを選択するというものなので2アクションになり面倒だ。

そこでWindows > Preferences > Generak > Keys からShow View (View: Package Explorer)にキーをバインドしてやると、1アクションとなり使いやすくなる。(芝原はAlt + Pとした)

PackageExplorerからEditorに戻る場合はCtrl + E1などがよいだろう。

Eclipseのショートカット

このエントリーをはてなブックマーク Share
    Eclipse, 伊藤, 芝原, 馬場      shibachan   

先ほど、同僚とEclipseのショートカットについて情報を共有する機会がありました。

今まで知らなかった便利なものがたくさんあって非常にためになったので、そのうちのいくつかを紹介したいと思います。

タブ操作系

  • Ctrl+W: いま開いているタブを閉じる
  • Ctrl+E: タブ一覧を出す。カーソルがこのメニューに移るので矢印キー + Enterでタブを自由に移動できる
  • Ctrl+PageDown: ひとつ右のタブをアクティブにする
  • Ctrl+PageUp: ひとつ左のタブをアクティブにする
  • Ctrl+F6: タブ一覧を出す。Ctrl+Eと似ている。

ファイル操作系

  • Ctrl + Shift +R: 指定したファイルを開く
  • Shift +Alt + N: 新規プロジェクト、ファイルなど

検索系

  • Ctrl+F: いま編集してるファイル内を検索/置換するダイアログ
  • Ctrl+H: たくさんのファイルを横断的に検索するダイアログ

編集系

  • Ctrl + Space : 補完(Content Assist)
  • Ctrl + / or Ctrl + Shift + C: 複数行を一気にインラインコメントアウト (Java, PHP, Rubyなど)
  • Ctrl + Tab: 複数行を一気にタブ
  • Ctrl + Shift + F: (Java専用?) インデントをフォーマットに従って正しくなおす
  • Ctrl + Shift + O: (Java専用) Organize Imports (使ってないやつを消すとか)
  • Shift + Alt + R: リファクター

Mac用

  • Command + , : 環境設定
  • Emacsキーバインドモード
    • Ctrl + A: 行頭
    • Ctrl + E: 行末
    • Ctrl + F: 1文字右へ
    • Ctrl + B: 1文字左へ
    • Ctrl + P: 1行上へ
    • Ctrl + N: 1行上へ
    • Ctrl + K: カーソルから行末までカット

拡張(設定しておくと便利なもの)

  • SVN コミット (Alt + C)
  • SVN 更新 (Alt + U)
  • SVN ヒストリーを表示 (Alt + H)

COPYRIGHT [C] 2009 BEYOND PERSPECTIVE SOLUTIONS LTD. ALL RIGHTS RESERVED.