Tizenの.NET対応について
5月27日の「JXUGC #23 Xamarin 無料化一周年記念勉強会!」にて、Tizenの.NET対応について登壇してきました。
発表した資料はこちらです。
以下、資料の補足です。
Tizenとは?
Tizenの特徴
.NET対応する前のTizenはC/C++ベースとHTML5+JavaScriptベースの2つの開発方法が用意されていました。
TizenにはTizenコンプライアンスというものが定義されており、Device Profileの共通コンポーネントを「Tizen Common」レイヤーで管理することでDevice Profileの依存性を軽減できます。
アップストリーム・ファーストは素晴らしい考えだと思います。
バグを直した独自のソースを管理するのは非常にコストがかかるものです。
アップストリーム・ファーストによって、常に最新の安定板をOSS側のリポジトリから取得できます。
Tizenの状況
Linux Foundationの公式プロジェクト
TizenはSamsungの所有物ではなく、Linux Foundationで開発が進められているオープンソースソフトウェアです。
スマートフォン
徐々に展開先を増やしているようです。
ロシアについては断念せざるを得ない事態がありますが後述します。
スマートウォッチ
スマートウォッチはAndroidWearのシェアを上回っており、日本でも展開されているので期待が持てるのではないでしょうか。
スマートTV
スマートTVについては最近のシェアを確認できるものが見つからなかったのですが、Samsungのテレビ販売台数が10年連続世界一なことも考えると期待は持てると思います。ただし、日本はB-CASの仕組みがあり一度撤退しているので、再参入してくるかは疑問です。
車載用OS
TizenにはLiMo Foundationの流れからあるモバイル端末OSとしての役割以外に、Automotive Grade Linux(AGL)の流れからある車載用OSとしての役割も重要でした。
しかし、車載用OSについてはTizenとは異なるUnified Code Base(UCB)へ移行することとなってしまいました。Tizenの車載用OSについては現在は開発が停止しています。
TizenOS誕生までの流れ
この流れで注意しなくてはいけないのはSailfish OSです。
前述のロシアでTizenの展開が中止となったのはロシア政府がAndroidの代替OSとしてSailfish OSを認可したからです。
ロシア以外でも中国、ボリビアなどの、Google主導のAndroidの独占に疑念を持つ国がSailfish OSに興味を持っています。
ひょっとしたら第3のOS第4のOSはTizenではなく、Sailfish OSとなるかもしれません。
Tizen Assosiation
現在のBoard Membersは上図の通りです。 そして、Tizen Assosiationのパートナープログラムに加入している日本企業は、Access、KONAMI、NTT DATA、Panasonicなどがあります。 まだ、日本市場でワンチャンあるかもしれません。
Tizen Mobile App Incentive Program for 2017
Samsungがスポンサーになっているインセンティブプログラムです。
期間中TOP100を独占すれば900万ドルがゲットできるのですが、そのような状況にはなっていません。
日本での状況
芳しくない状況です。
特に書籍についてはGOOGLE WAVEの悲劇が思い出されます。
Tizenちゃん、かわいいよ、Tizenちゃん...
Tizenの初めての.NET対応
MonoTizen の誕生
Kitsliano Software社のコーポレートスローガンってカッコいいですよね。
この会社はMono for Sailfish、MonoHTML5にも着手していました。が、完成はしていないようです
MonoHTML5はTizenのHTML5実装にヒントを得ていたようです。
MonoTizen の開発延期
開発開始からわずか2か月で開発延期となったのは、本当に驚きです。
MonoTizen の開発延期の理由
Kitsliano SoftwareのメンバーはMonoTizenの開発を延期した今でもEathereumのクライアントライブラリをTizenやSailfish向けに開発しているなんて本当にLinuxが大好きなんでしょうね。
Tizen.NETの誕生
Tizenの.NET対応について
2016年11月16日にTizenの.NET対応が発表されてから定期的にPreview版がアップデートされています。
Tizenの.NET対応に最も驚いた人
MonoTizenのリードプログラマだったDimitar Dobrev氏がTizenの.NET対応に加わりたい旨を表明しています。
CppSharpの貢献者でありQtSharpの開発者である彼が加わることで、Tizenの.NET対応が加速することを期待しています。
なぜ.NET対応をするのか
Tizen ProjectではC言語ベースとHTML5ベースで開発する際の課題を.NETの採用により解決できると考えています。
Tizen.NET アーキテクチャ
前述のTizenの特徴で表示した図の左側に.NET関連の機能が追加されました。
TizenではMonoではなく.NET CoreをRuntimeとして選択しています。
.NET Coreを用いてTizen Platform-Specific APIはP/Invoke(プラットフォーム呼び出し)により.NETのコードから、TizenのC/C++のAPIを呼び出しています。
Xamarin.AndroidやXamarin.iOSと同様にネイティブの機能を呼び出しています。
Tizen Platform-Specific API 構成例
DevDaysのハンズオンアプリなどでみんな大好きなText-To-Speechの機能についてリポジトリを見てみると、Interopフォルダ内に「Interop.Libraries.cs」と「Interop.Tts.cs」が存在します。ここでP/Invokeの処理を実装しています。
実際にC#でのコーディング時にアプリのコードから呼び出すのはTizen.Uix.Ttsフォルダ内にあるクラスとなります。
Tizen .NET Developer Preview1
最初にリリースされた際の状況です。 正直、このままでは実用に耐えうるものではありませんでした。
Tizen .NET Developer Preview2
Preview2ではOpenGLViewが不完全とはいえ、Formsの部品は一通りそろえています。固有のAPIについても31pkgから49pkgに増えました。
SmartTV向けの開発もできるようになりTool類も充実し始めました。
Tizen .NET Developer Preview3
Preview3では開発環境の充実もさることながら、Tizen固有のForms部品であるTizen.Xamarin.Forms.Extensionとして、ボタン、ポップアップ、グリッド、カレンダービューなどが実装されたことが特徴です。
本来、共通部品を用意することが主目的なはずのFormsで独自部品のみ用意するとはUIをXamarin.Forms頼りにしているTizenならではかと思います。
Tizen .NETのRoadmap
Preview3でほぼ機能は実装したので、Tizen4.0 M1 リリースに向けてブラッシュアップをしていることでしょう。
Tizenの .NET関連のリポジトリ
定期的にコミットが観測されており、開発は進んでいるようです。
Tizen 関連情報
Tizen関連のサイトのURLです。
Tizen ExpertはTizenの状況を幅広く知るために良いサイトです。
資料の説明については以上です。
.NETラボでAI×Office365についてLTしてきました。
報告にずいぶん間があいてしまいましたが、4月22日の.NETラボ勉強会でAI×Office365についてLTしてきました。
LTのタイトルは「AI時代のOffice365」です。
MicrosoftはAIに注力しておりOffice365製品・サービスにもAIが活用されています。
日本マイクロソフトも働き方改革第2章によってOffice365で蓄積されたデータからAIによる気づきを活用することで働き方の質を目指すと発表しています。
その営みの中でOffice365を活用すべきと判断する企業が増えてくることを期待して、Office365開発を学ぼうという趣旨の資料です。
今回はLTの5分用資料だったのですが、活用方法、開発方法等もまとめて30分~40分くらいのセッション資料にはまとめたいと思っています。
初心者歓迎XamarinのLT会!Xamarin入門者の集い #2 でLTしてきました。
ずいぶん間があいてしまいましたが、4月17日に「初心者歓迎XamarinのLT会!Xamarin入門者の集い #2」 でLTしてきました。
一般枠で申し込んでいたのですが急用の方のキャンセルで前日の段階でLT枠が空いたのでLT枠に乗り換えました。
そして私が1日で作成するとしたらどんなテーマを選ぶかですが、当然Tizenですよね。
ちょうどPreview3が出た直後で、それを紹介したいこともあり、さらっと作成できました。
Preview3で一通り機能を出したという認識になったのか、Gitのログを見ても新しいAPIを実装するよりもすでに実装したAPIのテコ入れをしている感じです。
Tizen.NETはTizen4.0で正式リリースとなります。待ち遠しいですよね。
.NETラボでTizen .NET Developer Preview2リリースについてLTしてきました。
3月25日の.NETラボ勉強会でTizen .NET Developer Preview2リリースについてLTしてきました。
当日はBotFrameworkについてのセッションで登壇したのですが、Tizenについても語りたいので資料を作成しました。いつものネタ枠です。
内容について以下に補足します。
Tizen .NET Developer Preview2 リリース内容
- 2017/1/31 リリース
- Visual Studio Tools for TizenがVisual Studio 2017に対応
Preview1の時は2015にしか対応していなかったですが、Preview2で2017に対応しました。 また、Tizenの.NET対応についてMicrosoftからの反応もConnect();2016に引き続き観測できています。
Visual Studio 2017 launch eventではミゲルからTizenという言葉が出ていました。
日本マイクロソフトのVisual Studio 2017 Release Celebrationでもスライドで
「Visual Studio Tools for Tizen for Visual Studio」
という表記がありました。明らかにVisual Studioが被っているのをおかしいと思わなかったのかな...
Tizenの.NET対応やXamarin.Forms対応はMS主導ではないので、MS側からの情報発信はあまりないのかな、と思っていたのですが、発信してくれているようです。
- TVアプリケーションの開発に対応
Preview2からTVアプリケーションも.NETで開発できるようになりました。
- プロジェクトウィザードを実装
パッケージ名の入力や、Mobile,TVのProfileに対応するか否かを選択できるようになりました。
- 証明書マネージャ
Preview1ではダミーのものを入れることしかできませんでしたが、ちゃんとGUIから作成して管理できるようになりました。
- マニフェストエディタ
Preview1ではマニフェストファイルを直接編集していましたが、GUIから編集できるようになりました。
- エミュレータマネージャ
以前は単一のスマートフォンエミュレータのみだったのですが、画面サイズの指定ができるようになり、TVかモバイルかを選べるようになりました。
バッテリー状況やGPS情報などをGUIからコントロールできるようになりました。
- プラットフォーム固有のAPIを追加
- Media Recorder (capi-media-recorder)
- Push (libpush)
- Smart Card (capi-network-smartcard)
- NFC (capi-network-nfc)
- System Setting (capi-system-system-settings)
- Media Controller (capi-media-controller)
- Web URL Download (capi-web-url-download)
- Speech to Text (stt)
- Text to Speech (tts)
- Account Service (account-svc)
- Media Vision (capi-media-vision)
- Geofence Manager (capi-geofence-manager)
- OAuth2 (liboauth2)
- WiFi Direct (capi-network-wifi-direct)
Preview1リリース時は60%しか対応していないとしていましたが、だいぶ追加してきたようです。
Roadmap
これは若干悲しい発表でした。
たぶんTizen3.0では正式に.NET対応をリリースせず、Tizen4.0のリリースに合わせてくる内容だったからです。
Tizen4.0の一部として2017年9月にリリースするとありますが、Tizen4.0はPublicM2が2017年10月ということなので正式リリースは年末か年明けになるんじゃないでしょうか。
Tizen.NETを実機で動かせる日が待ち遠しいですね。
.NETラボでBot Frameworkについて登壇してきました。
3月25日の.NETラボ勉強会でBot Frameworkについて登壇してきました。
Bot Frameworkについてのノウハウが蓄積してきたので、.NETラボ主催者の木澤さんに登壇を申し出たところ、枠を確保してくださいました。
そんなわけでTwitterでつぶやいたところ、以下のようにテーマが重なっていることが判明。
@nakasho_dev まじすかっ♪私もBot xLUISでお願いされてたので...調整した方がいいかもですね♪内容特に決まってないんですがw
— BEACHSIDE (@BEACH_SIDE) 2017年3月11日
でも、俯瞰的な内容メインとLUISメインでそんなに重ならないかな、と思いつつ、より俯瞰的な資料にしようとして作成したものがこちらです。
内容について以下に補足します。
P.4 ~ P.6 チャットサービス
チャットを利用している人は年々増え、チャットボットプラットフォームも様々なものが増えています。
なぜ、チャットボットプラットフォームが増えているのでしょうか。
それにはチャットボットの可能性について色々な期待があるからです。
P.7 ~ P.10 チャットボットへの期待
チャットボットへの期待について以下の方々からの意見を載せています。
- 三菱総合研究所
- 野村総合研究所
- Facebook CEO マーク・ザッカーバーグ氏
- Microsoft CEO サティア・ナデラ氏
なぜ、IT業界だけでなくシンクタンクの情報を重視するかというとお客様や自社の営業に提案する際には有効だからです。
ITに詳しくない人へFacebookやMicrosoftのCEOの意見だけ見せても、売りたいものを魅力的に言っているんでしょ、と判断されてしまうことがあります。また、直接のお客様担当者はITの知識があり魅力的に思っても、その上長や役員クラスを担当者が説得できないこともあります。
そんなとき、国内のメジャーなシンクタンクの記事や総務省の情報通信白書は経験上有効です。古い体質の大きな会社ほどその傾向があります。
今回の資料にはありませんでしたが、以下のような記事も参考になります。
P.11 ~ P.12 Microsoftによる知的アシスタントといえば
笑いを取ろうと狙っていたのは事実ですが、イルカも立派な対話的インタフェースでした。
MicrosoftはこのころからAIに力をいれていたと考えさせられます。
セッションでは伝え忘れてしまいましたが、りんなはしっかりビジネス展開できていることも紹介したかったです。
また、Tayによる失敗の際にナデラ氏が語ったことは非常に前向きで共感できました。
- 「我々が対処した最初の方法は、実際にリスクを取った行為をチームが悔やまないように念押しすることだった」
- 「もし過ちを犯したら、必ず(過ちから)学ぶようにしなければならない」
P.13 AIの民主化
誰もが人工知能の恩恵を受ける世の中にあるとき、人間との橋渡しの一部はチャットボットが担うと私は考えています。
P.16 ~ P.19 BotFramework関連図
Bot Connectorの説明でワンソースでマルチチャネルの説明の際にXamarinの話を絡めたのは意図的です。だってJXUGだもの。
P.20 ~ P.32 Bot Builder
ワンソースでマルチチャネルと言っても、チャットサービスによっては対応できないものもあります。
それをかくにんするのにChannel Inspectorは重要です。
サンプルアプリはDialogやStateの使い方がすごく参考になります。
また、ここで紹介するのを忘れたのですが、なぜかDirectX関連のGitHubのところにもサンプルがあります。
P.33 ~ P.42 Developer Portal
Botの登録・管理について説明しました。
各チャットサービスとの連携方法についてDeveloper Portal上で丁寧に説明してくれているのはありがたいです。
チャネルについて説明ついでにDirectLineAPIについて説明しました。
LINEに公式対応して欲しいですね。
また、DirectLineAPIの紹介でXamarinのサンプルを絡めたのは意図的です。だってJXUGだもの。
P.43 ~ P.45 Bot Directory
そういや公式には検索機能があるって記述あるけど検索フォームなくなっていますよね。
P.46 Azure Bot Service
・・・
P.47 ~ P.51 サーバ構成例
全部Azure上で構築したほうがレスポンスは速くなります。
クラウドには社内ルール等で置けない情報資産を扱う場合はオンプレミスでの方法もあるが、インターネット上の通信が多くなるのでレスポンスが遅くなる懸念があります。
オンプレミスの注意点として.NET Coreに対応していないので原則WindowsServerとなります。
現在、コミュニティがPorting中だけれど待てない人はmonoでXSPを使いましょう。
自分でPortingしてContributeするのもありですね。
P.52 情報資産に関する注意点
Bot Directoryで公開することが前提であり、Bot Connectorは会話情報を匿名化してサービス改善の目的で使用するかもしれません。
でも、Skype for Business や Microsoft Teamsなど、守秘義務を扱いそうなサービスでもBot Frameworkの利用を促しているので、方針変更するのを期待しています。
P.53~P.56 関連情報
参考になるので見てください。
では、楽しいチャットボットライフを!
.NETラボでXamarin.Formsについて登壇してきました。
1月28日の.NETラボ勉強会でXamarin.Formsについて登壇してきました。
登壇するきっかけは11月の.NETラボ勉強会でMicrosoftMVPの西村誠さんが登壇された「Xamarin入門(技術というより心構え編)」というセッションで色々とコメントしたら、西村さんから「君がXamarinについてしゃべりなよ」と言われたので、登壇することとなりました。
Xamarinを始めたのが昨年の無償化後で、まだまだXamarinが使えているとは言えない状況の自分ですが、ハンズオンのメンターなどを何度か経験し、初心者向けのセッションであれば対応可能だと判断しました。
そんなわけでタイトルは「Xmarin.Formsから始めるクロスプラットフォーム開発」として、資料を作成しました。
構成は以下のようにしました。
- Xamarin
- Xamarin.Forms
- コードの共通化
- Xamarin.FormsでPlatform固有の機能を扱う手段
- Xamarinのデメリット
- Xamarin.Formsの学び方
- 書籍編
- ハンズオン編
- ツール・ライブラリ編
- Prism編
- Azure編
- DevOps編
- サンプルアプリ編
- コミュニティ編
- Xamarin関連情報
- Xamarin Advent Calendar 2016
40分も時間をいただいたので、なるべく詰め込もうとしたらスライド88枚にもなり詰め込みすぎ感が...
また、発表練習が足りず、だいぶパワポのメモに頼ったスピーチになってしまいました。参加者の方からは「スライドを見ながらナレーションを聞いているようで聞きやすかった」との意見ももらいましたが、メモを見ずにスピーチしたいものです。
今回の発表で自分にとって良い復習にも予習にもなりました。 今後もセッションの機会があれば積極的に対応したいと思います。
後日共有いただいたアンケート結果では、このセッション目当ての方もけっこういらっしゃって期待に応えられたか不安ではあるのですが、おおむね好意的な意見を頂けました。
もっと突っ込んだ内容が聞きたかったという意見の方は、なぜ隣の部屋でやっていたJXUGのイベントに行かなかったんだ、と小一時間問い詰めたい。
おまけ
真面目にしゃべったら知恵熱が出てしまったので、ネタをやらねばとLT枠でTizenについて発表してきました。
Tizenの.NET対応についての始まりとこれから
はじめに
本エントリーは、 Xamarin(その2) Advent Calendar 2016 の13日目です。
Tizen の.NET対応の発表について
記憶に新しい Connect(); 2016 では様々な発表がありました。
皆さんは何が一番のサプライズでしたでしょうか。
もちろん
Xamarin.Forms.Platform.Tizen
の発表ですよね。
そこで、本記事ではTizenの.NET対応についての始まりとこれからを探っていきたいと思います。
MonoTizen
Xamarin.Forms.Platform.Tizenが初めての.NET対応ではありません。 Tizenの.NET対応としてMonoTizenが世に出ています。
MonoTizenの誕生
2014年5月20日 Kitsilano Software がMonoTizenを発表しました。
MonoTizenkitsilanosoftware.wordpress.com
この会社は「C#と.NET開発の生産性をGNU / Linuxモバイルにもたらす」というコーポレートスローガンをを持っています。
Tizenの.NET対応を推進するのにふさわしそうなスローガンですよね。
MonoTizenのロゴは以下になります。可愛いですよね。
そして、2014年6月4日からGitHubにて開発がスタートしました。
Tizen向けアプリの開発者たちは完成を待ちわびたことでしょう。
MonoTizenの開発延期
なんということでしょう。
2014年8月13日にMonoTizenの開発が延期になりました。
誕生したばかりで、停止?とお思いでしょうが停止にあたって、 Kitsilano Software は明確な意思表示をしています。
MonoTizenの開発は当面延期されます。 私たちは将来復帰したいと考えていますが、Tizenプロジェクトがポジティブな方向に変わらない限り復帰できません。 ロードマップを持たず、パートナーとの有意義なコミュニケーションがないプラットフォーム上ではソフトウェアビジネスはできません。(意訳)
Tizenを推進するはずのサムスンの対応を見限っての発言かもしれません。
その時の気持ちはどのような気持ちだったのか想像に難くありません。
某D社のTizen版xxモードやTizen版専用アプリの開発や端末検証を担当していた某下請け会社も「有意義なコミュニケーションがない」には同意するのではないでしょうか。
そして開発は延期になりましたが、2014年10月20日に Kitsilano Software はTizen AssociationにJoinしました。
Tizen AssociationはTizenの産業的役割を主導するために組織された非営利コンソーシアムです。
MonoTizenの開発復帰に向けて、ビジネスの在り方を議論したかったのかもしれません。
Kitsilano Software joins the Tizen Associationkitsilanosoftware.wordpress.com
Tizen.NET
時は移り行き、2016年。Xamarin.Forms.Platform.Tizenが誕生します。
サムスンの.NET FoundationへのJoin
2016年6月27日 サムスンが.NET FoundationのTechnical Steering GroupにJoinします。
.NET Foundation - Samsung joins the .NET Foundation Technical Steering Group
この時、Tizenの.NET対応について想像された方もいらっしゃると思います。
Connect();2016でTizenが公式に.NETに対応したと発表
Congratulations Samsung!
Xamarin.Forms.Platform.Tizenの発表に全世界が歓喜したことでしょう。
しかし、この発表に最も驚いた人は Dimitar Dobrev さんではないでしょうか。
この方はみなさんもご存知の通り、MonoTizenのリード開発者の一人です。
.NETへの対応が発表されたTizenProjectの以下のBlogに彼はコメントしています。
BY Dimitar Dobrev, 17 NOV 2016 9:09 AM
Hello,
My name is Dimitar Dobrev. I developed the C# language bindings for MonoTizen by Kitsilano Software. That effort unfortunately got suspended for financial reasons but I believe my expertise can help you with your current work.
MonoTizen stepped on CppSharp (hosted at GitHub) of which I am one of the lead developers. It is an open source project which generates C# wrappers for C++ libraries. The process is fully automatic and only requires passing the headers and libraries as file paths. I believe Tizen can use it to automatically generate the C# layer instead of it being slowly and expensively coded by hand.
I think I can be of great help to you and Tizen .NET. I would really like to start a discussion about this possibility.
Best regards,
Dimitar Dobrev
MonoTizenの立役者だった一人であるのに何も知らされていなかった感がありありですが、彼の熱意が伝わってきますね。
ぜひとも彼には Tizenの.NET対応のリードを頑張っていただきたいです。
Tizenの.NET対応状況
Tizenのページを見ても発表以降更新はないです。以前の記事をみてください。
NuGetでのライブラリのバージョンは上がっているのだからWebページも更新してよ、とは思います。
でも、Tizenに興味津々で公式からの発表が待ちきれない人も大勢いますよね。
そんな人たちはソースを見ましょう!Tizenはオープンソースです。
Tizenの.NET関連のソース
TizenのソースはGitで管理されています。以下のサイトで確認できます。
.NET 対応に関するリポジトリは以下を確認しました。 ※他にもあるかもしれません。
csapi
TizenのネイティブをC#で呼び出すラッパーAPIを管理しています。
リポジトリを確認すると、対応していないはずのTelephonyなどが存在し、今後の拡張に期待が持てます。
また、プラットフォーム固有のAPIにはUI関連がないと思ったのですが、ElmSharpにより実現しているようです。そもそもプラットフォーム固有のAPIがなくて、どのようにXamarin.Formsを実現するんだ、って話になりますよね...
ElmSharpとはTizen NativeのUI FrameworkであるEFLをベースに開発したもののようです。
Xamarin.Forms.Platform.TizenのUIはこのElmSharpを使用して実現しています。
dotnet
ビルドツール等を管理しているようです。
xamarin-forms
皆さんの本命、Xamarin.Forms.Platform.Tizenについて管理しています。
ソースツリーを見ると何やら、まだNuGetからダウンロードしたものには存在しないクラスがあります。
おや?
なんと! Xamarin.Forms.Maps.Tizenが!
さっそくXamarin.Forms.Maps.Tizen.MapControl.csのソースを見てみます。
using TLabel = Xamarin.Forms.Platform.Tizen.Native.Label; namespace Xamarin.Forms.Maps.Tizen { public class MapControl : TLabel { public MapControl(ElmSharp.EvasObject parent) : base(parent) { Text = "Can not supported Maps"; TextColor = ElmSharp.Color.Red; } } }
"Can not supported Maps"...
期待した私が愚かだったのでしょうか。
しかし、リポジトリに登録しているからは実装しようという意気込みは感じます。
そしてオープンソースなので、自分でcsapiを増やして現在のネイティブにないものも対応することは可能だと思われます。
おわりに
いかがでしたでしょうか。
Tizenの.NET対応についての始まりとこれからを紹介しました。
過去に停滞していたTizenプロジェクトですが、Connect();2016から再始動した感じはありありと伝わってきました。
しかし、Tizenプロジェクトの本気度を確認するのはこれからです。
皆さんも早くTizenの開発をしたくなったのではないでしょうか。
Tizen 3.0の正式リリースが待ちきれません。