Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Xamarin & Java EE & 乃木坂46 でAndroidアプリ作ってリリースしてみました~

あまり大したアプリではないのですが…
@ytabuchiさんから以下頂いたので、晒してみます。


こんなアプリです(^^;
play.google.com
せっかくなので経緯など書いてみます。

スマホアプリ開発動機

昔から「一度はスマホアプリを作ってみたいなぁ」とは思っていて、Cordovaを触ってみるかな…と今年のはじめに書籍を買った後、突然Xamarin無償化の話がニュースになりました。

で、そこからXamarinを調べはじめ、5月にJapan Xamarin User Group (JXUG)さんの以下勉強会へ参加しました。

kikutaro777.hatenablog.com

勉強会の中で「9月くらいにアプリ作ったよLT大会みたいなものやれたら」みたいな話があって、面白そう!これを機会に何か作ってみたい!と思ったのがアプリ開発のきっかけでした。

あ、ちなみに乃木坂46の「きっかけ」という名曲があるので是非聴いてみてください!

www.youtube.com

あのミスチル桜井和寿さんがカバーするほどの曲です!

_人人人人人人人_
> 突然の宣伝 <
 ̄Y^Y^Y^Y^Y^Y ̄

www.asagei.com

実はこの宣伝もアプリと全く関係ないわけでなく(^^;実は関係大ありです。

私が大ファン(ファンクラブ会員番号11)だった堀北真希さんが結婚されて以降、自分を支えているのは乃木坂46でして…。
前々から好きだったのですが、今は好きとかいう次元を超えつつあります。

で、Xamarin関連でいえば5月に日本マイクロソフトさんのde:codeに参加して、乃木坂46エバンジェリストこと西脇さんのプレゼンに超感動したり

kikutaro777.hatenablog.com

@ytabuchiさんの色々なXamarin関連のセッションを聴いたり、その中で知ったXamarinエバンジェリストのちょまどさんのXamarin愛などに刺激を受けたり…

そんなこんな色々交じって「Xamarin + 乃木坂46」で何か作ろうと決めました。

ちょうどJava EE(というかほぼJAX-RSのみ)で、乃木坂ちゃんのRESTful API作ったりもしてたので、組み合せる形としています。

github.com

サーバサイドはOpenShift上の無償Gearなので、あまり負荷がでてくるようなら有償の使ったり色々考えないと。。

Xamarinのアプリ開発

8月ちょっと忙しそうなので…細かい技術的なことは別途書いていきたいなぁと。
ここでは簡単に。

苦労したこと

  • Xamarinの環境セットアップw
  • .NET 2.0以来のC# & Visual Studio(NuGet初だったり、昔はVS + VSSだったのでVS + Git初だったり)
  • Windows 10にOSアップデートしたらVisual Studio Emulator for Androidが起動しなくなったこと(Hyper-Vが駄目になったぽい)
  • アプリのアイコンやGoogle Play Store向けの画像の準備
  • Google Play Storeへのリリース申請で2,3回Rejectされてしまったこと

デザインセンスがないので、4点目はかなり苦労しました(^^;
人生で一番GIMP触った気が。透過とか全然やったことなかったので苦労しました。

こんなiconです。
紫は乃木坂ちゃんでN=Nogizaka、緑は妹グループの欅坂46でK=Keyakizaka。

f:id:kikutaro777:20160807120400p:plain

また、Google Play StoreからのRejectはかなり泣いたのですが、WebViewでYouTubeを使ってるのですが、レジュームしたときにバックグラウンドでYouTube動画が動かないことなど、色々条件があるためでした。ここもどこかで書きたい。

今後やりたいこと

最初色々やりたいなぁと思っていたのですが、最終的には一旦シンプルにして出すことにしました。そうしないといつまでもリリースできなさそうなので(^^;

技術的には

  • iPhoneアプリも出したい!
  • 組込みDBでオフライン機能とか入れたい(KVS AkavacheとかCouchBaseとか利用して)
  • Tabbed Pageのタブ切替をスワイプ対応したい
  • WebViewでサイト読込時にProgressBarかActivityIndicatorを出す
  • SendGridとか裏でつかって、機能要望とか障害報告飛ばしたい

自分はMacを持っていないので、現状Andoridアプリのみ。。。これだとAndroid Studio使ってるのと変わらない(*´Д`)ので欲しい。
でもiPhoneアプリ、登録料というか年間のが高いっすねぇ…。完全趣味で広告なしなのであれ。

ユーザ観点では

  • 推しメンでフィルタしたい
  • よくみるまとめサイトとかをタブに追加したい
  • ブログ更新とかあったらプッシュ通知してほしい

とかですかね。プッシュ通知はXamarin Formsでどこまで共通的にできるのか…ってかDependency Serviceなのかな。

ちなみに、似たようなアプリは結構あるのですが、とりあえずウリにしてるのは妹分の欅坂46と合わせたアプリという点と、早速ひらがなけやきに対応した辺りでしょうか。

アプリのコードは普通に下に置いてます(^^;全然C#慣れなくてあれですが。
github.com

面白いこと

Google Play Storeで「乃木坂46」と検索したら、公式から出てる「乃木恋」と同じラインに出てきて地味に興奮しました(^^)やっぱりこういうのが楽しい。

f:id:kikutaro777:20160807030249j:plain

出だし、思ってた以上にインストールされてびっくりです。サーバサイドが心配(^^;

f:id:kikutaro777:20160807121631j:plain

追記

画面イメージなど興味ある方はこちらをどうぞ↓
nogizaka46.hatenablog.jp
nogizaka46.hatenablog.jp

TravisCIでGitHubからOpenShiftへデプロイ

OpenShiftでは、Gearを作成すると、デフォルトでGitのrepositoryを作ってくれるので、ソース管理はとても簡単です。
今回は、既にGitHubで管理してるコードをOpenShiftにデプロイしたいなぁと。

以下のStackOverflowに色々情報が詰まってる感じ。
stackoverflow.com

せっかくなのでCI使ってローカルコミット->プッシュ->ビルド->デプロイができれば嬉しいなぁと思いはじめ、CIも一緒に試すことにしました。

Jenkins

OpenShiftでは構築したGearをCIしてくれるJenkinsを簡単に作れますが、Gearを1つ使ってしまうので、無償枠で遊んでる分にはちょっとなぁ、と。

Circle CI

そういえば今までWebサービスのCI使ったことないので、せっかくなのでCircleCIを試してみました。

GitHubとの連携は超簡単なので、すぐビルドはできましたが、OpenShiftへのデプロイ方法がわからず。。。調べた所、頑張ればできそうだけど。。。みたいな。

Travis CI

ぬあー、と悩んでたところ以下@grimroseのエントリを発見!簡単そう。

grimrose.bitbucket.org

試したところ、簡単でした(^^;

上記のエントリには「ユーザ名とパスワードをtravisに設定するところが気になるところですが」という記述がありましたが、パスワードは簡単に暗号化できる仕組みが用意されていました。

Encryption keys - Travis CI

gem install travis

でTravis CLIを入れます。

このあとは以下のページが役立ちます。

OpenShift Deployment - Travis CI

デプロイ対象のプロジェクトに空の.travis.ymlを置いて、以下コマンドを実行すると

travis setup openshift

対話式にopenshiftの情報を聞かれて、中身を自動生成してくれます。

最初.travis.ymlごと生成してくれるのかなーと思ったのですが、以下エラーでした。

C:\Users\kikuta\Documents\NetBeansProjects\xxxxxxxxxx>travis setup openshift

no .travis.yml found
C:\Users\kikuta\Documents\NetBeansProjects\xxxxxxxxxx>travis setup openshift

OpenShift user: xxxx@yyyy.co.jp
OpenShift password: ********
OpenShift application name: |xxxxxxxxxx|
OpenShift domain: hogehoge
Deploy only from hogehoge/xxxxxxxxxx? |yes| yes
Encrypt Password? |yes| yes

これで.travis.ymlはOK。あとはGitHubのコード側でpom.xmlにopenshiftのプロファイル入れたり、.openshiftフォルダを入れるなどすれば自動化完了です。

JJUGナイトセミナー Javaクラウドプラットフォーム大特集に参加しました!

今日のJJUGナイトセミナーは超豪華でした!仕事を置いてきてでも参加してホント正解(^^)!会社後輩は1人しか来なかった…のですが、ホントもったいないと思う…。

jjug.doorkeeper.jp

発表は以下順番でした。

  1. Heroku
  2. Amazon Web Service
  3. Microsoft Azure
  4. Oracle Java Cloud Service
  5. Cloud Foundry
  6. Google Cloud Platform
  7. OpenShift
  8. IBM Bluemix

当日のつぶやきは既に@yamadamnさんにてまとめられています!

以下、発表者の方のスライドと、過去に自分が触ったときの記事とか合わせて簡単に。

Heroku

Herokuは前にSalesforce Summer(だったかな?)に参加したときに、セッションを聞いて触ってみてました。当時の自分は、Heroku = Ruby on Railsのイメージが凄く強かったのですが、実際に触ってみると、Javaも簡単に動かせて驚いた記憶があります。

今日の発表でも「Spark」に少しだけ触れられてましたが、Sparkのひな形が用意されていて、そこからPayara Microいけるんじゃ?って思った記憶が。

ということで、以前試したHeroku

kikutaro777.hatenablog.com

とPayara Microについて

なお、タイトルにある「12-Factor App」は以下。

12factor.net

日本語訳もあるですね。

12factor.net

AWS

自己紹介の話を聞いてJavaFXの話が聞きたくなりました(^^)w

AWSのBeanstalkは、Docker + GlassFishが使えると聞いて、前に試してました。これも手軽なんですよねー。

kikutaro777.hatenablog.com

他のPaaSに比べて中身の透明性がある(AWSの仕組みで構成されているという意味で)、というのはなるほどーという感じでした。

Azure

OracleでMicrosoftのてらださんがお話をされるという、聞いてる側もまだ何だか不慣れな感じでした(^^;笑

今のMicrosoftはすごくオープン、と強調されてましたが、色んなニュースが続きますよね。

MSがEclipse Foundationに参画したり
www.publickey1.jp

ASP.NETがLinuxで動くとか、先日なんてMS SQL Server on Linuxとか、「は!?」って感じですよね(^^;

jp.techcrunch.com

Azureは自分も一時期いろいろ触ってました。記事としては古いので注意ですが。

kikutaro777.hatenablog.com

Oracle Java Cloud Service

OracleさんのPaaSはまだ触ったことがないのですが、Java Cloud ServiceとApplication Container Serviceの2種類があるとのこと。両方ともFlight Recorderが使える辺りは便利そうですよね。
無料お試しとかあるのかな…。なんとなく気軽に触ってみることができるのか、気になりました。

あと、Java Cloud ServiceはWebLogicだけなのがちょっと残念。GlassFishがあれば…。

Cloud Foundry

Cloud Foundry、よく名前は聞くのですが、全然触ったことないのと、前提知識が薄かったので、今日の@makingさんの発表で勉強になりました!

個人的には「.NETが動く」というのに驚きました。Azure以外でそんなのあるのか!と

3/31にCloud Foundry Tokyo Meetupイベントがあるとのことです!
www.meetup.com

あと、発表者の@makingさんから教えて頂きましたが.NETまわりの仕組みとか聞けるかもです(^^)これはいってみたい。

ハンズオン形式のワークショップもあるそうです。

connpass.com

connpass.com

Google Cloud Platform

やっぱりGoogleの基盤はすごそうだなーと。そして日本にデータセンターという話もホットだったんですね。

www.nikkei.com

OpenShift

Red HatのOpenShiftは、今、自分の中では一番良く利用するPaaSです。発表にもありましたが、無料で使えるPaaSが減ってる中、Java EEのAPサーバ含めて無償枠があるのが嬉しいです。

OpenShift Onlineは現在v2で、v3からはDockerを主軸としたアーキテクチャでガラっと中身を変えたとのこと。

もうすぐv3版のOnlineもでるとのことで、個人的に超たのしみです。

@nekopさんがブログ書かれていました。

nekop.hatenablog.com

OpenShiftを初めて触ったときのエントリもありました(^^;

kikutaro777.hatenablog.com

ちなみに、最近乃木坂46にどハマりしてる自分なのですが、OpenShift上のWildFly + Twitter4Jで以下アプリのっけてます。

Sakamichi46 Collection

作成動機などは以下(^^;;

nogizaka46.hatenablog.jp

脱線しすぎました。

IBM Bluemix

資料はまだでしたが、Blumixも色々面白そうですよね。話題のWatson君とか、IoT関係なども。


ということで、ホントすごく豪華でした!どのPaaSにするか、やっぱり色々触ってみるのがいいですよね(^^)自分の場合は8個中4個は触ったことありますが、少し前なので、それぞれ色々変わってる気がします。触ったことがない中では、やっぱりCloud Foundryが一番気になりました。

触ってみよー。

はじめてのOpenShift Online

ちょっとしたWebプロトアプリを一時的に公開したい場合、やはりPaaSが便利です。

Java EEを前提とした場合ですが、前まではGlassFish/WildFlyが超お手軽に使えるCloudbeesいいね!という感じでした。

CloudBeesのPaaSでJava EEアプリをクラウドへ簡単に展開! - Challenge Java EE !

でも残念ながらPaaS提供がなくなってしまい…(^^;ホント残念…。

そうなるとAWSのBeanstalkかなぁ、と去年のGlassFish Advent Calendarで以下書きました。

AWS Elastic BeanstalkでJava 8 & GlassFish 4.1! - Challenge Java EE !

Cloudbeesはクレジットカード情報などの登録なしで使えたので、そういう手軽なものが他にないかなーと探してたら、OpenShiftを知りました(^^;名前は薄々聞いたことあったのですが…。

OpenShift by Red Hat

で、OpenShift OnlineなるものがRed Hatから提供されているとのことで、ちょっと試してみました。

ちょっとポチポチして進むだけで、WildFlyの環境ができて手軽っぽい(^^)今回はユーザ登録と1つのGear(OpenShiftではインスタンスをGearと表現するようです)を作ってみました。

OpenShiftのサイトへ

OpenShiftのサイトにアクセスして、ONLINEのSIGN UP FOR FREEを選びます。

f:id:kikutaro777:20150126204533j:plain

アカウント作成

メルアドとパスワードを入れてアカウントを作成します。

f:id:kikutaro777:20150126204653j:plain

完了すると以下画面となって、登録したメールアドレスにOpenShiftからメールが来ます。
メールにあるリンクをクリックして進みます。

f:id:kikutaro777:20150126204734j:plain

利用規約を許可します。

f:id:kikutaro777:20150126204900j:plain

登録はこれだけ(^^)

アプリケーション作成

で、早速アプリケーションの作成です。「Create your first application now」を選択しました。
f:id:kikutaro777:20150126205021j:plain

選べる環境がでてくるのですが、かなり豊富!

f:id:kikutaro777:20150126205122j:plain

f:id:kikutaro777:20150126205127j:plain

f:id:kikutaro777:20150126205518j:plain

Javaでは

  • JBoss Application Server 7
  • Tomcat 6 (JBoss EWS 1.0)
  • Tomcat 7 (JBoss EWS 2.0)
  • Vert.x 2.1
  • WildFly Application Server 8.2.0 Final
  • AeroGear Push 0.X
  • CapeDwarf

などが並んでいました(2015/1/26現在)

Java以外にもPHP,Ruby,Python,さらにNode.jsやPerl、Goなども。

今回はとりあえず、WildFly 8.2.0を選択しました。あとは、URL決めたりしてポチポチ進むだけです。

f:id:kikutaro777:20150126205703j:plain

Regionは、とりあえずaws-us-east-1を選択しました。

f:id:kikutaro777:20150126205813j:plain

コードを変更する?と聞かれましたが、とりあえずNot nowで進みました。

f:id:kikutaro777:20150126205848j:plain

完成

少し待ったら、できあがり(^^)はやい;

f:id:kikutaro777:20150126205912j:plain

デフォルトだと以下のようなページになってます。

f:id:kikutaro777:20150126210007j:plain

実際のはこちら
http://jbosswildfly-kikutarotest.rhcloud.com/

今後遊んでいくので、上記環境は変わりますが(^^;

Cloudbees同様に、かなりお手軽な感じです!GlassFishが選べないのはあれですが、まぁRed Hatですし(^^;;;

次回はこのコードを落として変更してみたいと思います。

追加:@mike-neckさんによる解説ですmike-neck.hatenadiary.com

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村