Challenge Engineer Life !

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

自分のXamarinアプリをLTで見せてきました!

久しぶりにブログ更新です(^^)

JXUGC #17 お前の Xamarin アプリを見せてみろ!

今日はJapan Xamarin User Group (JXUG)にて開催された「JXUGC #17 お前の Xamarin アプリを見せてみろ!」に発表側で参加してきました!

f:id:kikutaro777:20161015122059j:plain

jxug.connpass.com

個人的には待ちに待ったイベントという感じでした!

というのも、5月7日に「JXUGC #13 東京 緊急開催 Xamarin のすべて!」へ参加して、そこで今日のようなイベント(作ったアプリを紹介するイベント)をやる予定です~と聞いて、そこからXamarinアプリを本格的に作り始めたからです(^^)!

kikutaro777.hatenablog.com

LT一覧

最終的には19(かな?)のLTがありました!

仕事というか商用で作られている方もいらっしゃって、最初のほうからレベルが高くて焦りました(^^;

最終アンケートにあった一覧から拾ったものですが、LT&アプリは以下でした。

  1. TomohiroSuzuki@がんばれガンプ ソルバルウを倒せ
  2. ayasehiro@しゃべる翻訳アプリ
  3. toshity1980@日本語学習アプリ(仮)
  4. キクタロー@坂道46コレクション
  5. ShunsukeKawai@Microsoft Foresight イベントアプリ
  6. yamamo@AzureVM Power Switch
  7. masatoru@縦組みアプリ
  8. kinoshita@Live Cloudia
  9. AmouKeishima@PerfumeHub
  10. サンテア@Search SQL
  11. amay077@東三河モーニングアプリ
  12. omanuke@証券取引アプリとNoteアプリ
  13. kobake@Hatenatter
  14. muak_x@色しらべ
  15. Kenichiro Nakamura@SfbPlus
  16. MasakiYoshida@ロトゆう
  17. wraith13@keep grass
  18. qwarty2501@SparrowTweet ツイッタークライアント
  19. ShoTakizawa, alienOada@GochiusaProtocol

全部紹介すると大変なので…後日YouTubeなどにアップされたりするそうなので、ここでは私が投票させて頂いた3つに触れたいと思います。

今日のツイートはtogetterでまとめられていたので、各発表の反応やスライドは以下で確認できると思います。
togetter.com

10/16追加 スライド集まるページがあるようですので追記しました
jxug.connpass.com

muak_x@色しらべ

自分が1番に投票させて頂いたのは、この発表でした!

アプリのカメラで標準を合わせたものの色を分析してくれるアプリ。

これのRGB知りたいなーと思うことがちょこちょこあるので、こんなアプリがあったのか!と。

さっそく自分が着ていった乃木坂Tシャツをうつして色の解析したりしてましたw

f:id:kikutaro777:20161015204401p:plain:w200

実用的!

サンテア@Search SQL

2位に選んだのはTwitterのツイートをSQLライクに取得できるという玄人向けアプリ(^^;

学生(院生?)さんでこんなアプリ作れるのかーすげーという感動が大きかったです。

色んなライブラリも使われてて、勉強になりました。

yamamo@AzureVM Power Switch

3位はPerfumeHubと悩んだのですが、AzureのVMを起動・停止できるアプリに投票!

Android,iPhone,UWPと3つでリリースされてて、かつビューに対するこだわりに「すごい!」と思い。

ちなみに自分の場合、これのOpenShift版がめっちゃ欲しい(^^;

投票は3つだったので、上記にしましたが、どの発表もレベル高くて、悩ましかったです(^^;

自分のLT

私のLT資料は以下です(^^;ちょっと乃木坂色が強すぎた気もしつつ…わりと良い反応が頂けたので良かったです!

久しぶりにこういう場で発表したので緊張しました。

最終的にまさかの6位(7位同率)に選んで頂きまして、Xamarinのおサルさん頂きました!

f:id:kikutaro777:20161015180051j:plain:w400

楽しかった!

イベントは13時開始で18時くらいまでだったのですが、そんな時間を感じさせないくらい、あっという間でした。

感想は

  • 色んなXamarinアプリがみれてよかった!!
  • 使ってるライブラリとか技術をたくさん知れてよかった!!
  • ちょまどさんに「発表よかった~」と言って頂いてうれしかった!
  • Prismめっちゃ使ってみたくなった!(Brianさん @brianlagunas の発表)

などなどです。JXUGすごい活気あるなーと改めて。

今日はJJUG(日本Javaユーザグループ)で「JavaOne 2016 報告会 @ 東京」があって、ほんとはJava EEの話とかも聞きたく参加したかったのですが…(>_<;
jjug.doorkeeper.jp

結果的には、こっちで発表を経験したり、色んな話を聞けて良かったなーと思いました(^^)

楽しい時間をありがとうございました!

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

XamarinでShare Pluginを使ってSNSなどにシェア

XamarinのアプリからTwitterやFacebookとかを呼び出す機能つけたいなぁと思って調べてたのですが、Xamarin純正(?)のXamarin.SocialなるComponentがありました。

Xamarin.Social / Components / Xamarin

が、自分の環境だとNuGetでのインストールがうまくいかず、、、同じようなことに遭遇してるQAで以下の「Share Plugin」が勧められていました。

GitHub - jguertl/SharePlugin: Simple way to share a message or link on a social network in your Xamarin.Forms projects.

こちらはNuGetからインストールできた。ホッ。

なお、同じライブラリでDeprecatedになっているものもNuGetのリストには出てくるので注意です。(キャプチャ最上段のがDeprecatedと書いてある)

f:id:kikutaro777:20160720222718j:plain

利用は簡単で、とりあえずXAMLにボタンを置いて

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ShareSample.SharePage">
  <Button x:Name="shareButton" Text="Share" />
</ContentPage>

ボタンイベントでCrossShare.Current.Shareメソッドを呼ぶだけ、という(^^;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Plugin.Share;
using Xamarin.Forms;

namespace ShareSample
{
    public partial class SharePage : ContentPage
    {
        public SharePage()
        {
            InitializeComponent();

            shareButton.Clicked += ShareButtonClick;
        }

        public void ShareButtonClick(object sender, EventArgs ea)
        {
            CrossShare.Current.Share("Xamarinからシェアしてみるテスト");
        }
    }
}

これで実行。ボタンがやる気なさすぎですが、とりあえず(^^;
f:id:kikutaro777:20160720223350j:plain

エミュレータで実行してボタンを押すと

f:id:kikutaro777:20160720223313j:plain

うーん(゜-゜)って感じですが

実機で試したら、おぉ、なんかそれっぽい!

f:id:kikutaro777:20160720223503j:plain

f:id:kikutaro777:20160720223522j:plain

試しにTwitterを選んでみると

f:id:kikutaro777:20160720223536j:plain

おー。ちゃんとテキストが。で、こんな感じに。

ShareLinkメソッドを使うと

CrossShare.Current.ShareLink(
    "http://46collection.sakamichi46.com/",
    "坂道グループのTwitterランクWeb");

こんなコードでメールとか選ぶと

f:id:kikutaro777:20160720223700j:plain

Title属性(引数の2つ目)はメールの表題などにはいるようです。シンプルで良さそう。

Xamarinの勉強会で色んな話を聞いてきた

今日は日本マイクロソフト品川本社にて行われたXamarinの勉強会へ行ってきました。

jxug.connpass.com

f:id:kikutaro777:20160507230316j:plain

自分が登録した時は既に補欠で、参加枠が140人に対して300名を超える登録がありました。GWなのに凄い人気だなぁと。ギリギリで補欠から繰り上がって無事参加できました。

着いたらやっぱり会場はコミコミ。

13時から19時前くらいまで、17名もの方々が発表されるという怒涛の内容でした(^^;

自分はXamarin初心者なのですが、すごい満足感ありました。

内容的には初心者向けから上級者向けまで揃っていて、技術的にわからない場合でも話自体が面白くて惹きつけられる発表が多くて、とても良かったです。

各発表資料は以下に既にまとまるようです。

jxug.connpass.com

当日のつぶやきもまとめられていました。はやい!
togetter.com

また、当日の発表動画も公開されるとのこと!

ということで内容はここでまとめるより実際に上記スライドや動画をみたほうがいいと思うので割愛(^^;

良かった、と思った点をつらつらと挙げてみます。

  • Xamarinの盛り上がりがすごい!
  • Xamarinの歴史が面白い!
  • モバイルアプリの開発、色々と大変なんだなぁ…
  • 自分、Xamarin.Formsに夢をみすぎてるっぽいw
  • Mac買わなきゃ
  • 入り口から会場までの案内、その他諸々、運営がすごいしっかりしてるなぁ
  • じゃんけんでゴリラおサルさんゲットー!*1

f:id:kikutaro777:20160507230353j:plain

色々と勉強になりました、ありがとうございましたm(_ _)m

*1:中の方からご指摘頂きましたm(_ _)m 参考→Xamarin Monkeyの歴史を振り返る - ものがたり

XamarinでType ControlTemplate not found in xmlnsエラー

Xamarinのアプリで、ヘッダ部分とか共通化したいよなーと思ってControlTemplateを触ってました。

以下に解説ページが。

Creating a ControlTemplate - Xamarin

上記ページのサンプルをほぼ写経で書いたサンプルが動かなくて、Type ControlTemplate not found in xmlnsなるエラーが。

f:id:kikutaro777:20160417213603j:plain

そもそも、そんなタグないよ、って怒られてるような…とググってたら、以下ページにバージョンのことが書いてあって

ticktack.hatenablog.jp

もしや、と思って確認したら、手元の環境のXamarin.Formsはv2.0.0.6482となってました(^^;

バージョン確認は「NuGetパッケージの管理」から
f:id:kikutaro777:20160417213823j:plain

こんな感じに
f:id:kikutaro777:20160417213809j:plain

ということで、最新の安定版として出てる2.1.0.6529に更新
f:id:kikutaro777:20160417213935j:plain

f:id:kikutaro777:20160417213943j:plain

f:id:kikutaro777:20160417213956j:plain

以上でバージョン2.1.0.6529となり、ControlTemplateが普通に使えるようになりました。

まだまだ初歩的な所でつまずく感じ(^^;

Xamarin.FormsのWebViewでerr_name_not_resolved

先日のBuild 2016でXamarinが無償で利用可能となったので、早速使ってみてます。

www.publickey1.jp

Android/iPhoneアプリを作りたいなぁと思っていて、Cordovaを調べていたのですが、その矢先に上記ニュースを聞いて、久しぶりにC#も書いてみたくなったのでXamarinへ。

日本語情報も多そう!
ytabuchi.hatenablog.com

また、既にMSさんが無料と思えないようなガイド本出してて(PDF)良い感じです。

Xamarin.Forms - Xamarin

f:id:kikutaro777:20160406011456j:plain

ということで本題。

err_name_not_resolved

VAIO Duo 13 + Windows 8.1環境でVisual Studio + Xamarinで環境を整えました。

色々試してる中で、Xamarin.FormのWebViewを以下のように利用してみたのですが

var webView = new WebView
{
    Source = "http://google.co.jp"
};
Content = webView;

GoogleとかYahooを指定しても画面が以下のような表示でした。

f:id:kikutaro777:20160407004509p:plain

err_name_not_resolvedとは…。どうもDNSが引けてない感じ?

Androidのシミュレータの問題っぽいですが、Macを持っていない+WindowsPhoneの環境までは入れなかったので、現状Androidだけしか確認できず(^^;

情報は色々あり、チェックポイントの整理を兼ねてまとめてみます。

Android ManifestのINTERNET permission

インターネット接続のパーミッションがあるとのこと。Androidのプロジェクト、プロパティから

f:id:kikutaro777:20160408023244j:plain

Android ManifestのINTERNETにチェック

f:id:kikutaro777:20160408023541j:plain

実体としてはAndroidManifest.xmlに書き込まれてるみたいです。

f:id:kikutaro777:20160408023854j:plain

f:id:kikutaro777:20160408023900j:plain

これ自体はDNSと関係ない所なので、まぁ動かず。

以下サイトに色々と。

Deep Shah's Blog: Android - Fixing the no internet connection issue on emulator

Androidエミュレータ起動時にDNS指定

上記サイトの下に「-dns-server」オプションをエミュレータ起動時に指定する、とありました。Visual Studioからだとどこだろうか…と探したのですが、以下っぽい。

ツールメニューのオプションから

f:id:kikutaro777:20160409232915j:plain

XamarinのAndroid Settingsを選択

f:id:kikutaro777:20160409232857j:plain

Additional Emulator Launch Argumentsとあり、ここで指定できそうです。試してみたけど、自分の環境では駄目でした。

AndroidエミュレータのDNS設定確認

以下サイトにエミュレータでのDNS設定確認方法がありました。

Getting Signals: [TIPS]Androidのエミュレータでネットに接続できない

Visual Studioからだと、どこなんだろう…と。以下で確認できました。

Open Android Adb Command Prompt

f:id:kikutaro777:20160409173420j:plain

Dos窓が立ち上がり、adb shellと打てば上記サイトと同じ確認ができました。
DNSの設定が空欄だったので、Google Public DNSとかipconfigで確認したやつとか打ったのですが、自分の環境では駄目でした。

f:id:kikutaro777:20160409173804j:plain

LAN接続

結構あちこちで「ここをみな」って引っかかったのは以下情報。ネットワーク接続のLANを無効に、って感じなのかな。VAIO DUOは直接のLANポートがないので…

stackoverflow.com

vEthernetの確認

で、自分がうまくいったのはこれでした。

superuser.com

Androidエミュレータの話でない情報源ですが、vEthernetの設定とかみて、無効にしたりしてみ、みたいな。

確かに自分の環境、前にvirtual box入れたり、boot2docker入れたりで何かvEthernetたくさんあった気が…と。
以下のような感じ。

f:id:kikutaro777:20160409232514j:plain

で、一通り無効にしてみていたら

f:id:kikutaro777:20160409233349j:plain

出た!

ということで解決しました。vEthernetだと何がどうなってDNSあれだったんだろう…ってイマイチわかりきってない感じですが、、、

ということで遊べる。

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