2021年はKotlinがすごい!

習得することで莫大なメリットがあります!

ここ最近勢いを伸ばしているKotlin(コトリン)

プログラミングジャパンプログラミングジャパン

Kotlinはプログラミング言語の一種で、androidアプリ開発に使用します。

  • Kotlinは初心者にオススメの言語なの?
  • Kotlinの案件数推移はどのようになっていて、転職や就職に有利なの?
  • Kotlinの言語的特徴はどのようなもの?

という疑問があるのではないでしょうか。

そこで当記事では

  • Kotlinとはどんなプログラミング言語なのか
  • Kotlinがプログラミング初心者におすすめの理由
  • Kotlinはどんなサービスやプロダクトを開発できるか
  • Kotlinは採用に強い?どんな仕事につけるのか

について掘り下げるとともに、Kotlinの学習方法についても解説していきます。



Kotlinとはどんなプログラミング言語なのか

KotlinはJVM言語であり、Android公式開発言語に採用された言語になります。

JVM言語とは

JVM(Java Virtual Machine)上で動作するJavaバイトコードにコンパイルされる言語のこと

Javaバイトコードに変換されるため、JavaからKotlinのコードが呼び出せたり、逆にKotlinからJavaのコードが呼び出せるなど完全な互換性を有します。

参考:Android Delvelopers

ビズリーチ-プログラミング言語別年収ランキング2018によると、言語別年収ランキング2018で4位で平均575万円というデータも出ています。

ただ2021年にはオリンピックがあり、Androidでの更なるサービス提供が予想されるため、Kotlinの市場はさらに高まる見込みです。

なぜここでAndroidかというと、世界基準で見たときに、AndroidのシェアはiOSのシェアを大幅に上回っているからです。

参考:KANTER社/2020年6月

では、次によく比較される、JavaとScalaとの違いはどのようなところにあるのかを解説していきます。

Javaとの違い

Javaとの明確な違いとして代表的なものは以下の点があります。

  • Javaに比べてKotlinは簡素なコードである
  • Javaで有名なNullPointerExceptionを未然に防いでくれる

といったものがあります。

Javaに比べてKotlinは簡素なコードである

特に簡素なコードであることは非常に重要なポイントです。

プログラムの行数的にはJavaの半分程度で同等の機能が実現できるような革新的な言語になっています。

プログラミングジャパンプログラミングジャパン

そのため、Android版のYahoo!ニュースではKotlinを導入することにより、数千行のコード削減に成功したという事例もあるんですよ

参考:「Kotlinで書くとJavaには戻れない」Androidアプリ開発にKotlinを導入したヤフーが感じたメリット

プログラマー志望者プログラマー志望者

数千行というのは非常に大きな工数の削減ですね

IT業界では、1人月(一人が1日8時間×20日)で大凡1,000行のプログラムを書くことが標準の見積もりとして通っていることが多いです。

※当然言語や現場によって異なるケースもあります。

数千行のコードが削減できたということは数人月の作業を削減したことに相当し、その分のコストが削減出来たことになります。

その削減できたコストを新規サービス立ち上げに回したり、エンジニアに還元することで利回りが良くなることは明白です。

Javaで有名なNullPointerExceptionを未然に防いでくれる

Java使用者なら100%と言っていいほど悩まされる「NullPointerException」を、Kotlinならば未然に防いでくれます。

実はシステムがクラッシュする最も大きな要因となるエラーがこのNullPointerExceptionになるといっても過言ではありません。

KotlinにはImmutable属性(値が変わらない)であったり、Nullの場合はクラッシュするのではなく、Nullの危険性のあるものについてはコンパイルエラーとしてくれてNull参照を未然に防ぐ言語仕様になっています。

エンジニアエンジニア

これをNull Safetyと呼んでいます。

このNull Safetyのおかげで、Null参照でエラーが発生する箇所は明示的にNullを受け入れるか(Nullableにするか)、Nullが入らないような処置を取らないとコンパイルすることが出来なくなります。

Javaから移行するデメリットはないとされていますが、Javaでは割と使われている参考演算子と呼ばれるIf-elseを1行で表現できるプログラムが使えないなど、Javaにあったものがなくなっていることで戸惑いを覚えるかもしれません。

Scalaとの違い

KotlinとScalaはコンセプトがそもそも異なっており、KotlinはJavaを進化させてメリットを増やすことを目的にしたことに対して、ScalaはJavaを超えた新たな言語として開発されました。

そのため、言語としてのプログラミング手法であったり、Javaとの互換性、習得難易度が異なってきます。

以下に比較表を掲載します。

KotlinScala
プログラム手法オブジェクト指向型プログラミング関数型プログラミング(※1)
Javaとの互換性完全互換性あり高いが完全互換ではない
習得難易度低い高い(※2)

※1:関数型プログラミングとは関数の組み合わせによって組み立てるプログラミング手法です。
代表例として「Haskell」があります。

※2;関数型プログラミングは自由度が高いため、独力で関数が最適化できないとメリットを発揮できず苦労します。

参考:関数型言語

Scalaで作られた有名なアプリ/サービスとしては以下のものがあります。

  • Chatwork
  • Twitter
  • ビズリーチ

その他現在では人口知能の分野にも進出をしています。

プログラミングをはじめるなら
スマホアプリ開発』が未経験者にはおすすめ!
その理由をLINE@で配信しています。

Kotlinがプログラミング初心者におすすめの理由

Kotlinが初心者にもオススメな理由としては大きく分けて以下の3点になります。

  • Javaの後続言語
  • OSによらず全てのアプリが作成できる可能性がある
  • 安全・簡潔なコードが書ける

簡単に触れては来ましたがそれぞれについてさらに掘り下げていきましょう。

Javaの後続言語

「Scalaとの違い」で述べたようにKotlinはJavaを進化させた言語になります。

そのため、Javaについて少しでも知識があればKotlinに馴染むことは決して難しい事ではありません。

プログラミング用語も「スーパークラス」「コンストラクタ」「thisインスタンス」といったJavaと同じ意味で使われるものも多いため、VBやC言語といった他の言語から移行するより遥かに楽です。

プログラミングジャパンプログラミングジャパン

Javaについて全く知識がない初心者であっても、Kotlinのプログラムは非常に簡素なつくりをしているため、お作法であったり構文を理解するのに時間がかかりません(後述)。

この他にAndroid OSの開発元であるGoogle社とJavaの運用元であるOracle社(開発元はOracle社に買収)の間には政治的問題もあります。

参考:GoogleとOracle、著作権めぐり米最高裁で対決

この審判は最高裁判所までもつれ込んでおり、1兆円規模の損失や裁判の長期化を懸念するGoogle社としてはAndroid OSの次期言語としてはJavaからKotlinに切り替わるのではないかとも予想されます。

そうなると、世界シェアとしてはAndroid OSの方が多いため、Kotlinのサポート体制であったり、需要が増えます。

JavaはOracle社に買収されてからライセンス料がかかるようになったことと比較して、Kotlinはオープンソースになっています。

今後Kotlinでの開発事業に参入する企業や個人が増えることにより、情報量であったりKotlinの言語仕様の改善が物凄いスピードで行われます。

結果として初心者でも参入しやすい環境が出来上がるのではないかという考えもあります。

OSによらず全てのアプリが作成できる可能性がある

Kotlinは全OS上で開発を行うことができます。

エンジニアエンジニア

またAndroid開発のイメージが強いKotlinですが、iOSであったり、Windowsアプリを開発する手法も確立されてきています。

つまり、KotlinはどのようなOS上でも開発が出来て、どのようなOSに対応するアプリを開発することが出来る言語になっています。

Kotlinは全OS上で開発を行うことが出来る

Kotlinの開発にはAndroid StudioもしくはEclipseという統合開発環境(IDE)を利用します。

Android Studioは以下のOSに対応しています。

  • Windows
  • Mac OS
  • Linux
  • Chrome OS

参考:Android Studio

次にEclipseは以下のOSに対応しています。

  • Windows
  • Mac OS
  • Linux

参考:Eclipse IDE 2020-12 R Packages

上記以外にも強引な方法ではあり、公式にサポートしているわけではありませんが、探すとAndroid Studioをタブレット端末で動作させたという実績もネット上には存在します。

これらから分かるように、Kotlinによる開発は環境を選ばず、PCやタブレットがあれば誰でも開発に参入できるようになっています。

どのようなOSに対応するアプリでも開発することが出来る

KotlinはAndroid用のアプリのみならず、Windowsアプリであったり、iOSのアプリを開発することもできます。

最近の話では2020年11月12日にKotlinの開発元であるJetBrains社はデスクトップアプリの開発を容易にするJetpack Compose for Desktopを発表しました。

「デスクトップアプリ」と言うとWindowsかと思われますが、実はLinuxであったりMac OSにも対応したアプリの開発ができます。

また2021年3月4日に最終更新されたKotlinの公式資料の中には「Multiplatform Programming」という資料があり、その中でKotlinはiOSにも対応していることが明言されています。

参考:Multiplatform programming

従来のアプリ開発であれば、組んだプログラムを必要に応じてSwiftやJava、Objective-Cに変換してリライトする作業が発生したため、かなりの時間とコストがかかっていました。

それと同時に、リライトを行うために複数の言語についての知識が必要とされていたためスマホやタブレット向けのアプリ開発は単価の高い上級エンジニアもしくは人海戦術を用いて多大なるコストをかけていました。

エンジニアエンジニア

それがこのKotlinの台頭により大幅に削減出来て、誰でも一定の品質でのプログラムが組みやすい環境になったのです。

安全・簡潔なコードが書ける

Kotlinが最も革新的だといわれる所以はその安全性であったり、簡素なコードが書けることにあります。

先にもお話した通り、Javaでほぼ確実に全員が数回泥沼にはまっている「NullPointerException」は発生する可能性があるようなプログラムを書くとコンパイルエラーが発生するようになっています。

エンジニアエンジニア

そのため開発者は常にNullの可能性を意識してプログラミングをしなくてはいけません。

これだけ聞くと面倒な言語に思われてしまうかもしれませんが、数万行のプログラムの中からたった一つのNullの可能性を見つけ出すことは極めて困難です。

下手をするとNull考慮をしたがために新たな不具合が出てしまうことすら有り得るために「泥沼」という表現をしました。

しかしKotlinになってからその言語仕様の安全性のために、クラッシュする確率が大幅に減ったということは「Javaとの違い」でも紹介した通りです。

Nullによる不具合は物凄く厄介です。

  • いつどのように発生するかが全く予見できない
  • データ不良なのか、操作不良なのか、プログラム不良なのか切り分けられない
  • 複数のクラスが階層形式で参照されている場合、どこのクラスでエラーが発生したのか分からない
  • 類似箇所が特定できない

というプログラマを悩ませる問題があります。

実際にこのNullによる不具合のせいでメインシステムが動作しなくなっただけではなく、不具合解消に1カ月以上の時間を要してしまうといったケースも決して珍しくありません。

Kotlinはそれを事前に摘み取ってくれるような言語仕様になっています。
エンジニアエンジニア

プログラマからしたらたった数文字多く書くだけでこれらの問題を回避できるのであれば喜んで数文字多く書きます。

もう一つの特徴である簡素なプログラムを作ることが出来るというのも品質や作業工数の削減には非常に重要なポイントになります。

簡素なつくりになるということは以下を意味します。

  • スパゲッティソースにならない
  • プログラム行数が大幅に削減できる
  • 作り手の特徴があまり出ず、一定の法則のプログラムになる

プログラマの格言にこれらを表したものがあります。

  • 「なぜ不具合がでるのか?」それはプログラムを書いているからだ
  • バグを出さない方法。バグが無いとわかるくらい簡素なプログラムを書くこと
つまり簡素なつくりというのは工数削減だけではなく品質確保にもなっているのです。

そしてこういった簡素なプログラムを組むと作り手の特徴というのはあまり出なくなります。

誰が書いても一定のプログラムが組めるということもあり、初心者が参入しやすいのもそこに理由があります。

Kotlinの開発環境

Kotlinの開発環境として2つ紹介いたします。

  • Kotlin Web Demo(現在はKotlin Playground)
  • Android Studio
プログラミングジャパンプログラミングジャパン

何れも無料で利用することができます。

Ecliplseも紹介しようか考えましたが、非常に動作が重たいというのとKotlinやAndroid開発に特化した開発環境を紹介したいためここからは除外します。

Kotlin Web Demo

引用元:Kotlin Playground

現在は「Kotlin Playground」となっていますが、Web上でKotlinを組むことが出来るサービスになっています。

こちらはKotlinの開発元であるJetBrainsが無料で公開しているサービスであり、Kotlinの組む練習を目的としたサービスになります。

ただKotlinを練習用に組むだけではなく、豊富なハンズオンサンプル集が充実していて誰でもKotlinに触れやすい環境になっています。

このKotlin Web DemoのオリジナルのプログラムはGitで公開されています。

プログラミング学習者プログラミング学習者

ただ、Dockerの知識であったり、ymlやバッチの知識も必要になってきますので、初心者が構築するのは不可能です。

公式サイトの「Kotlin Playground」を利用して、知識やエンジニアとしての経験値が付いたころに構築に挑戦してみてはいかがでしょうか。

PHPアプリを作ったことがある人や、Javaアプリを作ったことがある人であれば環境を構築することが出来ます。

プログラミングジャパンプログラミングジャパン

Kotlinにスキルチェンジしたい別の言語のエンジニアであったり、Dockerなどカスタマイズできる知識がある人はここから始めてもいいかもしれません。

Android Studio

引用元:Android Studio

Kotlinのプログラムに慣れてきたら実際に自分でアプリを開発してアプリの実行ファイル(apkファイル)を公開するためにAndroid Studioというものがあります。

Android Studioは今でこそiOSにも対応していますが、もともとはAndroidアプリの開発や開発したアプリがAndroid上でどのように動作するのかエミュレーションを行うために開発されたIDEになります。

Android Studioを利用することで実際のapkファイルを作成し、それを配布したり、Google Playに公開することも出来るようになります。

GPS機能であったり、ジャイロ機能(スマホの傾きとかを計算する機能)も備わっているため、サードパーティ(他社のライブラリなど)を全く必要としないほど機能は豊富です。

エンジニアエンジニア

それでいて無料という部分が開発者からの支持を得ています。

多少KotlinやAndroidに対しての知識を得てから利用することが好ましいですが、「早く触れてみたい」という初心者のために「Kotlin を用いた Android の基本」が用意されています。

プログラミングジャパンプログラミングジャパン

Kotlin を用いた Android の基本」にはAndroidやKotlinについて基礎から説明しているので、読み終わるころには簡単な表示系のアプリであれば組めるようになっているはずです。

Kotlinはどんなサービスやプロダクトを開発できるか

Android向けの開発言語として公式に採用された言語ですので、

  • スマホアプリの開発
  • Webアプリの開発

に適した開発言語になっています。

実際に具体例を見ていきましょう。

スマホアプリの開発

まず、Kotlinはスマホアプリの開発では物凄い力を発揮します。

エンターテインメント、SNS、地図アプリなど多種多様なところでKotlinは使われています。

その中で皆さんに馴染み深いものとしては

  • Line
  • Yahoo!ニュース
  • Abema TV

がKotlinで開発された代表作になります。

他にもビジネスマンが利用する「Slack」もKotlinで開発されたものです。

このように「Unityであればゲームやモデリング」「ASP.NetであればWebシステム」といった言語による得手不得手をなくしてあらゆる場のアプリを開発できるのがKotlinの強みになります。

Webアプリの開発

スマホアプリのみならずWebアプリの分野においてもKotlinはその多様性を遺憾なく発揮します。

スマホアプリで紹介した「Yahoo!アプリ」のWeb版の一部もKotlinで作られています。

Kotlinは新たなサーバサイドプログラムの一種とも言われていて、JavaからKotlinに移行する動きもあります。

実際にJavaのSpring FrameworkがKotlinのサポートを始めました。

参考:Spring FrameworkのKotlinサポート最新動向 (2020年版)

実際にSpring Frameworkが利用されているWebアプリケーションは数多く存在します。

  • 電力供給システムのWebサービス
  • ECサイト
  • 金融サイト

が主にこのSpring Frameworkを用いて開発されています。

まだWebアプリケーションとしては途上のKotlinですが、Spring Frameworkのサポートの拡充であったり、スマホ向けアプリとWeb版のアプリの同時開発の案件もあることは確かです。

まだ若い言語なので動向をチェックする必要がありそうですが、JavaやC#、Swiftに代わってサーバサイドの言語の大手になる可能性は否定できません。

Kotlinは採用に強い?どんな仕事につけるのか

冒頭でも述べた通り、Kotlinの言語別年収は575万で第4位になっています。

ではKotlinを習得するとどのような仕事があるのか、就職や転職に有利になるのか解説していきます。

Kotlinを使う仕事の求人数

2021年3月現在のKotlinの求人数は1390件あり、これは全求人言語の中で11位となっています。

参考:Nojov(※2021年8月サービス終了)

これは先に紹介したScalaやiOS開発用に登場したObjective-Cを上回る求人数になっています。

2020年の9月の段階で約600件の求人があったことから比較してもここ数カ月で倍にまで求人数を増やしたことになります。

また実際にPaiza転職でKotlinの求人を探してみると、年収にかなりのばらつきはあるものの、上限1000万円の求人が1ページ目から数件見つかります。

2020年の9月段階では575万円でしたが、今ではもっと高い年収を望むことができます。

Androidが公式に採用したことからしばらくは安泰の言語であり、求人数はさらに伸びることも予想されます。

JavaやC#、Swiftに代わるのはまだ先になりますが、案件数の推移を見ているとC言語は2021年か2022年には超えて来る可能性は十分にあります。

Kotlinを使ったサービスなど

Kotlinを使ったサービスとして求人に掲載されている中には

  • 保険
  • 医療
  • ビットコイン

など多種多様に渡ります。

エンジニアエンジニア

何れも年収単価は上限を1000万としている案件になります。

「スマホアプリの開発」でも紹介したAbemaTVの開発・運営を行っている株式会社サイバーエージェントも上限1300万円という高単価でKotlinエンジニアを募集しています。

Kotlinの年収推移はかなり早いペースで上っていて、これからのマーケティング戦略にはAndroidをはじめとしたスマホアプリへの参入が不可欠であることが見て取れます。

今後IT業界の求人の主戦場はパソコンやサーバからスマホやタブレットを中心としたものにシフトしていきます。

Kotlinのおすすめ学習方法

最後にKotlinのオススメの勉強法としてスクールに通うケースと独学で勉強するケースを紹介します。

Kotlinは簡素なプログラミングであることから一定の質のプログラムが組める反面、効率化であったりJavaとの結合の部分は独学だと限界があるので、スクールに通うことをお勧めします。

Kotlinを学べる学習サービスのおすすめスクールは「プログラミングジャパン」

プログラミングジャパン

Kotlinを学ぶなら、スマホアプリ開発に特化した学習指導をしているプログラミングジャパンがおすすめです。

プログラミングジャパンなら最短1カ月でエンジニア転職を目指せます。

さらに現役のエンジニア講師によるマンツーマン指導で弱点を克服し、強みをさらに伸ばす指導を行っています。

特にスマホアプリ開発の分野に至ってはスマホ開発企業と直連携しているので転職も有利になり、入学した当初は超初心者であっても高年収での転職も夢ではありません。

プログラミングジャパンプログラミングジャパン

その強みを支えているのは全コースに対してスマホアプリの開発の講義を入れているからであり、一人でも多くの実践的なエンジニアを世に輩出することを使命としているからです。

Kotlinを独学で学ぶなら

冒頭でも申し上げた通り、Kotlinはやや言語仕様に特徴があるため独学で勉強することは推奨していません。

  • スクールに入る前に少し予備知識をつけておきたい
  • 多少は理解しているけどまだ少しぼやけている
  • スクールや会社では初歩的な質問ではなく、より技術に踏み込んだ質問をしたい

という方向けに書籍やサイトを紹介します。

Android Basics in Kotlin

Android Basics in Kotlinはアンドロイドデベロッパーが公式に公開しているチュートリアルサイトです。

レイアウト配置や画面遷移、オブジェクトの移動など基礎的な部分を掲載しており、Kotlinとはどのようなものかを勉強するにはちょうどいいサイトになっています。

ただ、技術に踏み込んだ内容は書いていないので、あくまでもとっかかりの部分しか理解できないかもしれません。

やさしいKotlin入門

プログラミング未経験者はKotlin入門者向けに書かれた「やさしいKotlin入門」から初めると理解が深まります。

Kotlinを始めるにあたり、基本的な構文であったり、簡単なサンプルソースが掲載されているので、プログラミング未経験者であっても苦労することなく読むことができます。

ただ、レビューにもある通り、サンプルが短すぎるのでアルゴリズムの勉強には適していません(本当に入門者向け)。

また、この手の書籍を入門者が読むとそれをバイブルとして扱う傾向があり、実はそれがコーディング規約違反であったり、最適なコーディングでないということが多々あります。

「あくまでも一例」という程度の理解に留めておいた方がいいでしょう。

まとめ

Kotlinはここ数カ月の間で爆発的な伸びを見せてきました。

そのバックボーンとなっているのがやはりAndroidが公式言語に採用したということが大きいでしょう。

しかしここ数カ月でいきなり伸びてきた言語なので、日本国内にKotlinのエンジニアは多くありません。

現在エンジニアは不足しており、売り手市場だと言われています。

そんな中Kotlinという新しい技術に目をつけて習得することにより高い年収であったり、プロジェクトによっては先駆者になれるかもしれません。

Kotlinが廃れることはこれから数年は確実に有り得ません。

  • 東京2020やワールドカップといった世界的スポーツ祭典のライブ配信
  • 工事現場や遠隔現場でのスマートグラスを利用した映像サービス
  • VRやARアプリの開発

などAndroid市場はこれからますます広がっていく一方で、Kotlinもそれに呼応するように案件数が増えていきます。

プログラミングを始めようか迷っていませんか?
プログラミングを始めてみようと思っても学習で挫折しないか
職業として生計を立てていけるか不安ですよね。

プログラミングジャパンでは全くの初心者でも最速で安定した収入を得るプログラマーになる為に必要なステップをLINE@で配信しています。