モバイルアプリ開発のトレンド調査

POINT

株式会社LINEの記事から、LINEのサービスで使用している技術情報をチェック。

・クライアントサイドは、iOSはswift。Androidはcotlinが基本線。状況に応じてflutterを使用。
・flutterとは、ワンソースで複数のプラットフォーム(iOS、Android、Web等)に対応したアプリを開発できるフレームワーク。
・サーバサイドは、Java→Kotlinに徐々に移行中。フレームワークはSpring Boot。
・その他ツールとして、GitHub、Slack、Jira(redmineみたいなチケットツール)を利用。

株式会社LINEの記事から、LINEのサービスで使用している技術情報をチェック。

ラインのサーバサイドエンジニアの募集をたまたま見て、採用のウェビナーを開催していた。
LINEサービスで使用されている技術がかかれており、その中でKotlinが使用されていた。
https://logmi.jp/tech/articles/323912
最近よく聞く、Kotlinって何なの?
仕事の性質上、新しい技術はあまり使用しないので、どういう特徴があるか調べてみた。

<LINEのサービスで使用されている技術>

 〇クライアントサイド
  ◆iOS向け
   ・基本的には、swift
   ・古いサービスは、Object-C
   ・flutter

  ◆Android向け
   ・基本的には、Kotlin
   ・古いサービスは、Java
   ・flutter

 〇サーバーサイド
  ・基本的に最近はJavaがほとんど
  ・新しいサービスは、Kotlinを使用。Java→Kotlinに徐々に切り替える予定
  ・フレームワークはSpring Boot

 〇インフラ
  ・全部自社でインフラを構築
  ・Verdaという名前で作られています

 〇使っているツール類
  GitHub、Slack、Jira

■swiftの特徴

・iOS、Mac、Apple TV、Apple Watch向けのアプリを開発するためにAppleが作ったオープンソースのプログラム言語。
・Objective-Cとも共存可能。Objective-C、C言語と共存できるように、共通のObjective-Cランタイムライブラリが使用されている
・開発環境は、基本的にMacのXcodeという開発環境で行う。
・文法は、PHPに似ていると感じた。型の自動変換があるところもPHPに似ている。
・Vator(ベイパー)という、Swiftのフレームワークがある。現在、最も人気のあるFW。オープンソース。

■flutterの特徴

・Google 社が開発しているオープンソースのアプリケーションフレームワーク。
・クロスプラットフォームに対応。ワンソースで複数のプラットフォーム(iOS、Android、Web、Windows、Mac、Linux)に対応したアプリを開発できる。
・Dart 言語 による開発
・マテリアルデザインによる美しい UI を利用することができます。
・高速な動作

■Kotlinの特徴

・2017年5月にAndroidアプリ開発公式言語としてKotlin(コトリン)が採用され、Javaに続く公式言語となった。
・Kotlinは、ロシアのJetBrains社が開発。JetBrains社は、Javaの統合開発環境IntelliJ IDEAの開発元として有名な企業。
・Java言語をもっと簡潔かつ安全になるように改良した産業利用向け汎用言語として開発されている。
・Java言語と同様に、Javaバイトコードにコンパイルされて、Java仮想マシン上で動作する。
・Java言語との連携が言語仕様として組み込まれているため、Java言語のプロジェクトにKotlinのソースを段階的に追加したり、KotlinからJava言語のクラスやメソッドを呼び出することもできる。
https://developer.android.com/kotlin?hl=ja
https://news.mynavi.jp/article/programinglanguageoftheworld-14/

■ネイティブ開発(swift、kotlin)クロスプラットフォーム開発(flutter)の比較

・下記のURLにまとめられている。それぞれメリデメがあるのでプロジェクトに合わせた選定が必要。
https://zenn.dev/tetsukick/articles/c297b6ee1e64397432e5

■Spring Bootの特徴

・Spring BootとはSpring Frameworkベースのアプリケーションを手軽に作成することができるフレームワーク。

■Verdaの特徴とシェア

・「Verda」とは、LINEのプライベートクラウド。
・オープンソースであるOpenStackをフルに活用して作られている。
・社内にいる2,500名を超える開発者向けに提供されている。
・AWS等のパブリッククラウドという選択肢もあるなかで、多大な開発コストを支払ってまでプライベートクラウドをやっている理由は
 問題発生時に迅速に対処が可能となることにある。その結果、プロダクトの価値を高めることができる。
・例えば、ロードバランサで不具合があったら、まずベンダに調査依頼を投げ、ハードウェアの調査から行う。
 でも、ロードバランサをソフトウェアベースで実装していると、調査から自分たちで行え、バグFIXも即時対応できる。

■Slack

基本的には、マイクロソフトのteamsと同機能。slack特有の機能は、調べた限り見当たらない。
<特徴>
・あとから参加してもコミュニケーションの流れが追える。グループに参加すれば、過去のやりとりを見ることができる。
・外部Webサービスとの連携が可能(Googleカレンダー / Googleドライブ / Confluense / JIRA / Trello / Asana / Zendesk / Zapier)
・頻繁に使用する画面共有機能付きのグループ通話の機能は、有料版(スタンダード:890円)の機能。

■GitHub

・Subversionは、集中型データベース。Gitは、分散型データベース。両者の違いは、下記のURLが参考になる。
https://www.ricksoft.jp/blog/archives/9483/
・GitHubは、企業や個人を問わずにベースとなる部分は無料で使うことができます
・GitHubに作成されたリポジトリは、基本的にすべて公開。指定したユーザーだけがアクセスできるプライベートリポジトリもある。
・オリジナルのファイルに対する編集アクセス権がない場合でも、自分の場所に取り入れることによって編集が可能になる。(フォーク)
・例えば、masterブランチをメインとし、ここに機能Aを追加したい場合、次のような流れになる。
1.masterブランチをクローンする
2.クローンしたローカルリポジトリで、機能開発用のブランチを作成する
3.作成したブランチで開発を行う
4.開発が完了したら、すべてコミットする
5.コミットしたデータをプッシュする
6.プッシュしたデータを確認してプルリクエストを送る(masterへのマージリクエスト)
7.プルリクエストをもらったmasterの管理者は、内容を確認の上、masterにマージする

https://www.modis.jp/staffing/insight/column_30/
・【初心者向け】git fetch、git merge、git pullの違いについて
https://qiita.com/wann/items/688bc17460a457104d7d

■Jira

チケットツールみたいだが、redmineみたいなもの?
・プロジェクト管理・課題管理のツール。Jira Software社の製品。
・トヨタのカンバン形式でタスクの状況が視覚的に確認できる。
https://qiita.com/iguchikoma/items/e712a29ad0750c7719ac
https://www.atlassian.com/ja/software/jira

おわり

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です