next Ionic and Ionic Japan User Group.

この記事は、[Ionic Advent Calendar 2018](https://qiita.com/advent-calendar/2018/ionicframework) 25日目の投稿です。

# next Ionic
2018年も終わりが近づき、アドベントカレンダーも最終日ということでIonicの`next`についていろいろ考えていきたいと思います。

## v3 support
現在多くのユーザが利用しているv3についてですが、現在公式にはAngular 5.2.11をサポートしています。Angular 6がLTS、現行バージョンがAngular 7ですので、時折「Angularのバージョンあげて大丈夫ですか？」と聞かれます。

結論を先に書きますが、
[[非公式] Ionic v3でAngular 6を使う方法（追記あり）](https://qiita.com/rdlabo/items/4849bac0d099f993b8e6)の内容通りにしていただくか、`@rxjs/compat`を入れることによってAngular 6までは現在でもアップデート可能です。しかしながら、Angular 7はビルドでコケるので、利用することはできません。

現在、Ionic teamはv4のリリースにリソースを集約しておりv3の開発は止まっていますが、先日v3のレポジトリが`ionic-team/ionic`のブランチ（v4と共存してました）から`ionic-team/ionic-v3`の独立レポジトリに変更されたので、おそらくv4リリース後、Angular 6までは正式にサポートするのではないかなと思ってます。
Ionic1のサポートの手厚さを考えると、あと2年ぐらいは使い続けること可能じゃないかな（私見）

なお、CLIベースの話をしますと、Ionicは以下のようにプロジェクト名がついています。

| プロジェクト名 | Ionicのバージョン |
|:-----------------|:------------------|
| ionic1 | ionic1 |
| ionic-angular | ionic2-3 |
| angular| ionic4 |

Ionic3リリース後は、CLIでのIonic2のプロジェクトの新規作成はできませんでしたが、Ionic4リリース後もIonic3のプロジェクトはできます。

## v4
2019年春にリリース予定です。リリース時は、Web ComponentsとしてのVanilla JSでの利用と、Angularのみのサポートが予定されておりますが、ReactとVueを将来的にサポートすることが正式に発表されています。

v4の特徴としては、以下のようなものがあります。

- Web Componentsベースとしてフレームワーク非依存（`@ionic/core`)
- フレームワークで利用する時に便利に書けるラッパーは別で提供（`@ionic/angular`など）
- Web Componentsは呼び出し時にLazyLoadingされるので、表示速度が圧倒的に改善
- ServerSideRenderingをサポート

### @ionic/**
Ionicでは、デモアプリとして`ionic-conference-app`を公開しています。v3でも公開されてましたし、v4でもすでに（開発状況はフレームワーク毎に差はありますが）GitHub上で公開されています。
そのレポジトリと、それをForkしてWebで公開したURLをご紹介しておきます。v4をさわる上で参考にしていただけましたら幸いです。

| フレームワーク名 | GitHubのレポジトリ | デモURL（12/25時点でビルド） |
|:-----------------|:------------------|:------------------|
| Angular | [ionic-team/ionic-conference-app](https://github.com/ionic-team/ionic-conference-app) | https://ionic-conference-angular.netlify.com |
| React | [ionic-team/ionic-react-conference-app](https://github.com/ionic-team/ionic-react-conference-app) | https://ionic-conference-react.netlify.com |
| Vue | [ionic-team/ionic-vue-conference-app](https://github.com/ionic-team/ionic-vue-conference-app) | https://ionic-conference-vue.netlify.com |

ReactとVueもTypeScriptで書かれていますので、Ionicを使う上でTypeScriptを使うことはこれまで通りになるかと思います。

## next Ionic eco system
続いて、Ionicの周辺システムについてです。 

### Capacitor
Ionic 4に続いて、一番注目を浴びてるのはnext CordovaとなるCapacitorじゃないでしょうか。PWA/iOS/Android/Electronへのコンパイルをこれひとつでできることや、ネイティブコードとの連携が重視されています。

- [新しいHTML5 APPプラットフォーム「Capacitor」とは。HTML5を1ソースで、PWA、iOS/Androidアプリ、デスクトップアプリをリリース！](https://www.rdlabo.jp/article/973)
- [新しいHTML5 APPプラットフォーム「Capacitor」を試してみた](https://qiita.com/rdlabo/items/c76e0321096318489513)
- [Ionic 4(PWA Toolkit) + Capacitorでカメラを動かして顔認識してみる](https://qiita.com/xiaca/items/8cedc310d59ea014c983)

あたり参考になると思います。

### Ionic Native
CordovaアプリをAngular上で使うためのラッパーです。現在は、例えば`Geolocation`を使う場合

```
import { Geolocation } from '@ionic-native/geolocation';
```

という記法なのですが、他のフレームワークサポートにともなって、次バージョンからは

```
import { Geolocation } from '@ionic-native/(フレームワーク名)/geolocation';
```

となります。例えば、Angularだと `ngx` がフレームワーク名のところに入る感じです。

### Ionic Storage
ローカルストレージをPromiseベースで使うためのライブラリです。ドライバを`indexeddb`, `sqlite`, `websql`から選択することができるので（そしてデバイスが非サポートの場合は自動切り替え）、マルチデバイス展開で活用されていました。

こちらはまだ次バージョンの開発がはじまっていないので、どうなるかなというところ。

# next Ionic Japan User Group
Ionicの日本コミュニティとして、主に以下で活動しています。

- [Ionicの知見を共有するためのslackのオープンチャンネル](https://ionic-jp.herokuapp.com)
- [Ionicをテーマにしたイベント](https://ionic-jp.connpass.com/)

## コミュニティでできたこと
2017年8月にした[Ionic Meetup #1 Tokyo](https://ionic-jp.connpass.com/event/61051/)をきっかけにして、コミュニティ活動を開始しました。その懇親会で、コミュニティとしてやっていきたいと話にあがった

- 全国でのMeetup => https://ionic-jp.connpass.com/
- Ionicをテーマにしたカンファレンスの開催 => https://html5app-conf.connpass.com/event/87730/
- 書籍出版 => https://amzn.to/2BAVfFO

は2018年に達成できました。
当時は、Ionicでプロダクトをつくってる人は片手で数えるほどだったのですが、2018年はいろいろなプロダクトリリースの話を聞き、直接面識ない方がカンファレンスでIonicについて話し、技術書典では2冊も！！2冊もIonicについて取り上げた書籍がでて、うち1冊は商業出版の話もあるということで、日本でもIonicが一部の人にとどまらずに利用されはじめているのをみることができました！！

参考： [技術書典5にはじめてサークル参加して感じたこと、得たこと](https://note.mu/sinack/n/n40c43846d040)

あと、これは個人的な話になりますが、`ionic/core`や`ionic CLI`のコントリビューターにもなりました。Ionic3だと、Listで表示した時、日本語だとわずかに文字の上1pxが消えるのでCSSでの調整が必要でしたが、Ionic4では直ってますよ！

## ドキュメンテーションの翻訳
当時どうしてもできなかったこともありました。ドキュメントの日本語化です。
当時、Ionic Docsのレポジトリは、ドキュメントのマイナーバージョンごとにフォルダが分かれてまして「これ、ひとつ翻訳してもバージョンあがったらやりなおしだし、diffとるの実質不可能だぞ？！」という状態でした。

しかしながら、Ionic 4でリニューアルされるIonic Docsは、そのフォルダ分けが解消されてまして、翻訳作業が可能なレポジトリ構造でした。そこで、Ionicのドキュメント日本語化に取り組みます。

[Ionic日本語ドキュメンテーション](https://ionicframework.jp)
[Ionic日本語ドキュメンテーション GitHubレポジトリ](https://github.com/ionic-jp/ionic-docs)

試しにトップページとあとほんの少しだけ翻訳をしました。かなり分量あるので、多くの方に手助けいただく必要があります。「ドキュメントを日本語で読みたかった」「翻訳ちょっと手伝ってやろう」という方は、ぜひコントリビューションいただけますと幸いです！

不明点などありましたらIssuesあげていただくか、Ionic Japan User Groupのslackの `#translation` をご利用ください！

# まとめ
今年もIonic Japan User Groupのコミュニティ活動であったり、また、Ionic Advent Calendarにお付き合いいただきありがとうございました。
来年もよろしくお願いいたします！！それではいいお年を！！