2013年2月19日火曜日

mavenを使ってAndroidアプリケーション開発(1)

mavenを使い倒したいので、Apache Maven 3 クックブックを読みながら、

Androidアプリケーション開発環境を構築していました。Maven自体のインストールは
無くても良いということでしたが、インストールしていても問題ありません。(私はインストールしてから環境を構築してみた)

コマンドは
$mvn archetype:generate -DarchetypeCatalog=http://repository-malachid.forge.cloudbees.com/public-snapshot/archetype-catalog.xml

とかでプロジェクトは作成できるのですが、
mvnコマンドを使うよりは、EclipseのMaven-Android-Pluginを利用した方が簡単に作成できるようになります。

Eclipse Marketplaceのインストール


このMaven-Android-Pluginを適用するためには、Eclipse Marketplaceをインストールする必要があって、メニューのHelp→Install New Softwareで、"http://download.eclipse.org/mpc/indigo/"を入力してインストールします。

Maven-Android-Pluginのインストール
メニューのHelp→Eclipse Marketplaceを選択して、"android m2e"で検索するとAndroid Connectorというのが出てくるので、それをインストールしてください。

実際に環境を構築して…

プロジェクトの作成はEclipseから作成できるようになるので、MavenProjectとして作成します。

プロジェクト作成後にEclipseからでもRun→Maven buildを選択してもコンパイルはできますが、実機にインストールされないことと、Goalの設定を"Compile"にする必要があります。

コマンドラインから
$ mvn clean install android:deploy

とすると、コンパイルされて、起動しているエミュレータか接続されている実機
(adb installができる状態にしておく)にインストールされます。

その後、アプリケーションを実行すると確かにHello Worldが見えるのですが…。

開発をする上で、色々問題がありました。

問題


  1. Eclipse上でAndroid関連(だけか?)のクラスが全て赤線(エラー)表示
  2. プロジェクトからアプリケーションの実行ができない
  3. 書籍にもAndroidアプリケーション開発の章があるが、内容が薄いし、役に立たない…。


これからも苦戦しながら、いろいろ理解が進むかな…。

Google+の投稿
https://plus.google.com/u/0/114183076079015753160/posts/eRQpXH9qDkQ



Jenkins実践入門を読みました。(1)

Jenkins実践入門を読みました。


ただし、途中(5章 JUnitでテストする)までで中断しています。

その理由は、「実際に使ってみないとイメージが沸かない」というのがあって、
(サンプルコードを使えば動きは見れるのでしょうが)
実際のプロジェクトで試してみたいと思って、ひとまず、テストを実行させる所で
中断して、別の書籍を読んでいます。

今回はほぼ環境構築で苦戦しましたが、
Scientific Linux上に構築する場合はパッケージのTomcatを使わずに、公式からダウンロードした物を
利用した方が良いと思います。(パッケージだとtomcatユーザで動作しますが、ログイン不可であるため、gitのコマンドを実行させる事が”そのままだと”できません。)

この書籍はSubversionで動作させる前提で説明していますが、
私はGit Pluginを導入して動作を確認しました。
操作は全く違いますが、書籍と大幅に違う表示になるという事は無いのと、
10章にGitとの連携についても記述があるので、困ることはないと思います。

後は、ant、またはmavenの使い方がわからないと自分のプロジェクトで動きを確認することは
難しいので(antのbuild.xmlや、mavenプロジェクトのpom.xmlあたりの記述がわからない)
同時にantやmavenの書籍を読み、ある程度知っておいた方が良いかもしれません。

という事で、今後もまた読むことになると思うのでタイトルは(1)としました。

関連したGoogle+の投稿

https://plus.google.com/u/0/114183076079015753160/posts/GtRGRr85aQT

https://plus.google.com/u/0/114183076079015753160/posts/AxLauhRC2CG

JenkinsにGit Pluginを導入した。
https://plus.google.com/u/0/114183076079015753160/posts/E8L5bT1Cb3E

Tomcatはパッケージのやつを入れない方がハマらない…。
https://plus.google.com/u/0/114183076079015753160/posts/1949ByXFohW

読み方がわからん…。
https://plus.google.com/u/0/114183076079015753160/posts/Tq5Cx3fHiwf

Antタスクでハマる
https://plus.google.com/u/0/114183076079015753160/posts/cqoQk5kB1JZ
https://plus.google.com/u/0/114183076079015753160/posts/AwsYPtijrVH
やっと解決
https://plus.google.com/u/0/114183076079015753160/posts/3zshn4H4ZSB

2013年2月16日土曜日

GDG Chugokuのマネージャの活動目的

年末に、私が思う勉強会についての記事を書いたのですが、
大体はその記事にも書いた通りなのですが、私が2年9ヶ月ぐらいの活動を通じて
ずっと一貫した考え方があります。

繰り返しになりますが、それは「身近な、まだ見ぬ技術者の発掘と参加者のレベルアップ」という事です。
実際、活動を始めた頃からその考え方で活動しようと決めていたのですが、
Google Developer Day 2010の基調講演でも同じようなコメントが発信され、
より強く考えるようになりました。


実際、目的が達成できているかどうかは私にはわかりませんが、
勉強会というのは、勉強をするのが目的なので、「人集めに奔走し始めたら終わりだ」とも
思っています。

参加者がいなくなったら、「需要がなかった」とあきらめるのも一つの考え方のようにも
思います。(これは、人から言われたことですが)

中国地方だとGoogle技術が仕事に結びつくというのが少ないようにも思えるので、
どうしても扱うプロダクトによっては、ほとんど人が来ないということもあるかもしれません。

ただ、マイペースでやらないと疲れるので、(特に最近は辞めたくなったりもしたので)
GDGのアピールやら、イベントの人集めやら、良いプロダクト生み出す事とかは他のマネージャ達に託して
今後は、まったりと告知をしながら、裏番組をぶつけられながら(笑)活動していきたいですね。
(長く続けると疲れてくる頃もあるんだろう…。恐らく)

という事で、なんとなく早朝のバイト中に思ったので記事にしてみました。

最後に、久しぶりにGDD 2010の事を思い出した(と言っても、私は京都会場でスタッフしてましたがw)ので


「ジュニアなエンジニアは、次の世代を支える存在かもしれないので、彼らを育てるような活動をしていただきたい」というセリフが印象的でした。

Google Developer Day 2010の基調講演

2013年2月11日月曜日

JUnit実践入門を読みました。


JUnit実践入門を読みました。
この書籍はJavaで動作するユニットテストフレームワークのJUnitを利用した
テストコードの書き方が書かれていて、私も途切れ途切れに読んだので
この書籍もまた読もうと思っていますが、サンプルコードも掲載されているので
実際に入力して動かした方がいいかもしれません。

特に個人的に発見だったのが、カテゴリ化テストとパラメータ化テストで、
書き方を知らなかったのもありますが、これまではいろいろなテストが混ざってしまって
読みにくく、メンテナンスもしにくかったのですが、この辺りの書き方を利用すれば
もう少しデータの種類も増やせそうだし、テストの分類もできるので
「どのような視点で」テストをするのかが明確にできそうな気がしました。

最後に演習問題のページがあり、そこで如何にJavaの力がないのかを
思い知るのも良いかもしれないです。
(私はJDK1.4あたりで止まってるっぽい感じがしました…)

他の使い方としては、リファレンス的に参照しても使えると思います。
(恐らく私はこの使い方になりそうな気がします)

やっぱり書籍は繰り返し読んだ方が良いですね。

Two-legged OAuthを利用してGoogle Appsにアクセスするには

Google Appsの業務をやり始めてから初めて知ったTwo-legged OAuthの認証について
あまりいい記事がなかったので、書き残しておきます。

結論からいうと、毎度のごとく、+keisuke oohashiさんの助けにより
うまく動作させることができました。(ありがとうございます!)

Two-legged OAuthがGoogle Apps無料版でも利用できるのかどうかを
確認した時の投稿(あまり参考になりません
https://plus.google.com/u/0/114183076079015753160/posts/j4sHzchyHWs

Two-legged OAuthを検証し始めた時のGoogle+の投稿(参考にするならこちら)
https://plus.google.com/u/0/114183076079015753160/posts/8NCiJghLapC

Two-legged OAuthのポイント


  • 認証用のオブジェクトと、各種APIにアクセスするためのオブジェクトを生成する。(以下の例はCalendar API)

OAuthHmacSigner signer = new OAuthHmacSigner();
signer.clientSharedSecret = "<クライアントシークレット>";
    
OAuthParameters param = new OAuthParameters();
param.version = "1";
param.consumerKey = "<コンシューマキー>";
param.signer = signer;
    
Calendar calendar = new Calendar.Builder(httpTransport, jsonFactory, null)
      .setHttpRequestInitializer(param)
      .setCalendarRequestInitializer(new CalendarRequestInitializer("<Simple API AccessにあるAPI KEY>"))
      .build();
    
service = new CalendarService(calendar);

コンシューマーキーはGoogle Appsだと、取得したドメイン名のスーパーキーが標準で用意されているのでそれを使うのが簡単ですが、実際に運用する場合は自分で作った方がいいでしょう。作成する場所はGoogle Appsの管理コントロールパネルから高度なツールを選択して「サードパーティのOAuthクライアントアクセスを管理する」から作成して下さい。コンシューマーシークレットも同じページの「管理」リンクをクリックすることで見ることができます。次にSimple API AccessにあるAPI KEYですが、これは、「Google APIs Console」を表示してAPI Accessメニューをクリックすると表示されるKEYを指定します。(Google Appsの管理者アカウントでアクセスした方が無難です)

  • 編集する対象のユーザを指定する。


ArrayMap<String, Object> customMap = new ArrayMap<String, Object>();
customMap.add("xoauth_requestor_id", "<対象のアカウント>");

com.google.api.services.calendar.Calendar api = service.getService();
com.google.api.services.calendar.Calendar.Events.List eventList = api.events().list(target_email)
               .setTimeMin(new DateTime(fmt.format(Calendar.getInstance().getTime()) + "T00:00:00+09:00"))
               .setFields("items(id,summary)")
               .setMaxResults(1000);
   
eventList.setUnknownKeys(customMap);
   
Events events = eventList.execute();

Two-legged OAuthは管理用途で利用される機能(?)なので、編集する対象のユーザを指定しないとどのユーザのデータを編集するのかがわからないので対象のユーザを指定して下さい。

以上で、Two-legged OAuthを使った管理作業が可能になると思います。

2013年2月2日土曜日

4月から高校教師になれそうです。

今日、岡山県の教職員課から「4月から常勤の講師としてお願いしたい」という旨の連絡をいただきました。そこで、以前からアプローチをしていただいていた事もあって快諾しました。
(私は教員免許(工業)をもっているので、以前、金に困っていた時に申請していたのが、今、効果が出たという感じで…)

なので、私は4月から高校教師になれそうです。契約期間はひとまず1年間みたいです。(とりあえず、電話連絡だけなので”なれそう”ということにしておきます。)

一応、公務員ということになるので「副業NG」という制約がついてしまうことになってしまいます。
なので、今携わっている以下の仕事は全てやめないといけなくなりました。

  • 朝の食品配達のパート
  • 専門学校の講師
  • 自営業(一応、個人事業主なので廃業届を出さないといけないですね)
とりあえず、朝のパートは「XX日に辞めます」で良いと思うのですが、
専門学校の講師は、来年度の依頼を受けていたので、代役を探さないといけません。(ある程度、お願いしてみようという候補はいますが…)

一番面倒なのは、自営業の部分ですね。「廃業届」を出せば、ひとまずなしにはなりますが、
ブログ、Androidアプリ、いろいろな所に貼りまくったアフィリンクとかどうしようかな…と考えています。

ブログの広告はひとまず非表示に設定を変えたのですが、アフィリエイトリンクはそこら中に貼ってしまったので、もうどうしようもないな…。G+のプロフィールのやつは変更できるか…。
(これまで、まともな収入になったことは無いのですが…)

ということで、広告系の収入はGDG中国の活動費として利用していこうと思います。
(交通費、設備の利用料などなど)

OKかどうかは、次に連絡があった時にでも聞いてみるか…。
(多分だめなんだろうな…)

何か、いいアイデアがあったら教えて下さい。