2021年はKotlinがすごい!
習得することで莫大なメリットがあります!
ここ最近勢いを伸ばしているKotlin(コトリン)。
Kotlinはプログラミング言語の一種で、androidアプリ開発に使用します。
- Kotlinは初心者にオススメの言語なの?
- Kotlinの案件数推移はどのようになっていて、転職や就職に有利なの?
- Kotlinの言語的特徴はどのようなもの?
という疑問があるのではないでしょうか。
そこで当記事では
- Kotlinとはどんなプログラミング言語なのか
- Kotlinがプログラミング初心者におすすめの理由
- Kotlinはどんなサービスやプロダクトを開発できるか
- Kotlinは採用に強い?どんな仕事につけるのか
について掘り下げるとともに、Kotlinの学習方法についても解説していきます。
目次
Kotlinとはどんなプログラミング言語なのか
KotlinはJVM言語であり、Android公式開発言語に採用された言語になります。
JVM(Java Virtual Machine)上で動作するJavaバイトコードにコンパイルされる言語のこと
Javaバイトコードに変換されるため、JavaからKotlinのコードが呼び出せたり、逆にKotlinからJavaのコードが呼び出せるなど完全な互換性を有します。
ビズリーチ-プログラミング言語別年収ランキング2018によると、言語別年収ランキング2018で4位で平均575万円というデータも出ています。
なぜここでAndroidかというと、世界基準で見たときに、AndroidのシェアはiOSのシェアを大幅に上回っているからです。
では、次によく比較される、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ならば未然に防いでくれます。
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を超えた新たな言語として開発されました。
以下に比較表を掲載します。
Kotlin | Scala | |
プログラム手法 | オブジェクト指向型プログラミング | 関数型プログラミング(※1) |
Javaとの互換性 | 完全互換性あり | 高いが完全互換ではない |
習得難易度 | 低い | 高い(※2) |
※1:関数型プログラミングとは関数の組み合わせによって組み立てるプログラミング手法です。
代表例として「Haskell」があります。
※2;関数型プログラミングは自由度が高いため、独力で関数が最適化できないとメリットを発揮できず苦労します。
参考:関数型言語
Scalaで作られた有名なアプリ/サービスとしては以下のものがあります。
- Chatwork
- ビズリーチ
その他現在では人口知能の分野にも進出をしています。
プログラミングをはじめるなら
『スマホアプリ開発』が未経験者にはおすすめ!
その理由をLINE@で配信しています。
Kotlinがプログラミング初心者におすすめの理由
Kotlinが初心者にもオススメな理由としては大きく分けて以下の3点になります。
- Javaの後続言語
- OSによらず全てのアプリが作成できる可能性がある
- 安全・簡潔なコードが書ける
簡単に触れては来ましたがそれぞれについてさらに掘り下げていきましょう。
Javaの後続言語
「Scalaとの違い」で述べたようにKotlinはJavaを進化させた言語になります。
プログラミング用語も「スーパークラス」「コンストラクタ」「thisインスタンス」といったJavaと同じ意味で使われるものも多いため、VBやC言語といった他の言語から移行するより遥かに楽です。
Javaについて全く知識がない初心者であっても、Kotlinのプログラムは非常に簡素なつくりをしているため、お作法であったり構文を理解するのに時間がかかりません(後述)。
この他にAndroid OSの開発元であるGoogle社とJavaの運用元であるOracle社(開発元はOracle社に買収)の間には政治的問題もあります。
参考:GoogleとOracle、著作権めぐり米最高裁で対決
この審判は最高裁判所までもつれ込んでおり、1兆円規模の損失や裁判の長期化を懸念するGoogle社としてはAndroid OSの次期言語としてはJavaからKotlinに切り替わるのではないかとも予想されます。
JavaはOracle社に買収されてからライセンス料がかかるようになったことと比較して、Kotlinはオープンソースになっています。
今後Kotlinでの開発事業に参入する企業や個人が増えることにより、情報量であったりKotlinの言語仕様の改善が物凄いスピードで行われます。
OSによらず全てのアプリが作成できる可能性がある
Kotlinは全OS上で開発を行うことができます。
またAndroid開発のイメージが強いKotlinですが、iOSであったり、Windowsアプリを開発する手法も確立されてきています。
Kotlinは全OS上で開発を行うことが出来る
Kotlinの開発にはAndroid StudioもしくはEclipseという統合開発環境(IDE)を利用します。
Android Studioは以下のOSに対応しています。
- Windows
- Mac OS
- Linux
- Chrome OS
次にEclipseは以下のOSに対応しています。
- Windows
- Mac OS
- Linux
参考:Eclipse IDE 2020-12 R Packages
上記以外にも強引な方法ではあり、公式にサポートしているわけではありませんが、探すとAndroid Studioをタブレット端末で動作させたという実績もネット上には存在します。
どのようなOSに対応するアプリでも開発することが出来る
KotlinはAndroid用のアプリのみならず、Windowsアプリであったり、iOSのアプリを開発することもできます。
最近の話では2020年11月12日にKotlinの開発元であるJetBrains社はデスクトップアプリの開発を容易にするJetpack Compose for Desktopを発表しました。
また2021年3月4日に最終更新されたKotlinの公式資料の中には「Multiplatform Programming」という資料があり、その中でKotlinはiOSにも対応していることが明言されています。
従来のアプリ開発であれば、組んだプログラムを必要に応じてSwiftやJava、Objective-Cに変換してリライトする作業が発生したため、かなりの時間とコストがかかっていました。
それと同時に、リライトを行うために複数の言語についての知識が必要とされていたためスマホやタブレット向けのアプリ開発は単価の高い上級エンジニアもしくは人海戦術を用いて多大なるコストをかけていました。
それがこのKotlinの台頭により大幅に削減出来て、誰でも一定の品質でのプログラムが組みやすい環境になったのです。
安全・簡潔なコードが書ける
Kotlinが最も革新的だといわれる所以はその安全性であったり、簡素なコードが書けることにあります。
先にもお話した通り、Javaでほぼ確実に全員が数回泥沼にはまっている「NullPointerException」は発生する可能性があるようなプログラムを書くとコンパイルエラーが発生するようになっています。
そのため開発者は常にNullの可能性を意識してプログラミングをしなくてはいけません。
これだけ聞くと面倒な言語に思われてしまうかもしれませんが、数万行のプログラムの中からたった一つのNullの可能性を見つけ出すことは極めて困難です。
下手をするとNull考慮をしたがために新たな不具合が出てしまうことすら有り得るために「泥沼」という表現をしました。
Nullによる不具合は物凄く厄介です。
- いつどのように発生するかが全く予見できない
- データ不良なのか、操作不良なのか、プログラム不良なのか切り分けられない
- 複数のクラスが階層形式で参照されている場合、どこのクラスでエラーが発生したのか分からない
- 類似箇所が特定できない
というプログラマを悩ませる問題があります。
実際にこのNullによる不具合のせいでメインシステムが動作しなくなっただけではなく、不具合解消に1カ月以上の時間を要してしまうといったケースも決して珍しくありません。
プログラマからしたらたった数文字多く書くだけでこれらの問題を回避できるのであれば喜んで数文字多く書きます。
簡素なつくりになるということは以下を意味します。
- スパゲッティソースにならない
- プログラム行数が大幅に削減できる
- 作り手の特徴があまり出ず、一定の法則のプログラムになる
プログラマの格言にこれらを表したものがあります。
- 「なぜ不具合がでるのか?」それはプログラムを書いているからだ
- バグを出さない方法。バグが無いとわかるくらい簡素なプログラムを書くこと
そしてこういった簡素なプログラムを組むと作り手の特徴というのはあまり出なくなります。
誰が書いても一定のプログラムが組めるということもあり、初心者が参入しやすいのもそこに理由があります。
Kotlinの開発環境
Kotlinの開発環境として2つ紹介いたします。
- Kotlin Web Demo(現在はKotlin Playground)
- Android Studio
何れも無料で利用することができます。
Ecliplseも紹介しようか考えましたが、非常に動作が重たいというのとKotlinやAndroid開発に特化した開発環境を紹介したいためここからは除外します。
Kotlin Web Demo
現在は「Kotlin Playground」となっていますが、Web上でKotlinを組むことが出来るサービスになっています。
ただKotlinを練習用に組むだけではなく、豊富なハンズオン、サンプル集が充実していて誰でもKotlinに触れやすい環境になっています。
このKotlin Web DemoのオリジナルのプログラムはGitで公開されています。
ただ、Dockerの知識であったり、ymlやバッチの知識も必要になってきますので、初心者が構築するのは不可能です。
PHPアプリを作ったことがある人や、Javaアプリを作ったことがある人であれば環境を構築することが出来ます。
Kotlinにスキルチェンジしたい別の言語のエンジニアであったり、Dockerなどカスタマイズできる知識がある人はここから始めてもいいかもしれません。
Android Studio
引用元:Android Studio
Kotlinのプログラムに慣れてきたら実際に自分でアプリを開発してアプリの実行ファイル(apkファイル)を公開するためにAndroid Studioというものがあります。
Android Studioは今でこそiOSにも対応していますが、もともとはAndroidアプリの開発や開発したアプリがAndroid上でどのように動作するのかエミュレーションを行うために開発されたIDEになります。
GPS機能であったり、ジャイロ機能(スマホの傾きとかを計算する機能)も備わっているため、サードパーティ(他社のライブラリなど)を全く必要としないほど機能は豊富です。
それでいて無料という部分が開発者からの支持を得ています。
多少KotlinやAndroidに対しての知識を得てから利用することが好ましいですが、「早く触れてみたい」という初心者のために「Kotlin を用いた Android の基本」が用意されています。
「Kotlin を用いた Android の基本」にはAndroidやKotlinについて基礎から説明しているので、読み終わるころには簡単な表示系のアプリであれば組めるようになっているはずです。
Kotlinはどんなサービスやプロダクトを開発できるか
Android向けの開発言語として公式に採用された言語ですので、
- スマホアプリの開発
- Webアプリの開発
に適した開発言語になっています。
実際に具体例を見ていきましょう。
スマホアプリの開発
まず、Kotlinはスマホアプリの開発では物凄い力を発揮します。
エンターテインメント、SNS、地図アプリなど多種多様なところでKotlinは使われています。
その中で皆さんに馴染み深いものとしては
- Line
- Yahoo!ニュース
- Abema TV
がKotlinで開発された代表作になります。
他にもビジネスマンが利用する「Slack」もKotlinで開発されたものです。
Webアプリの開発
スマホアプリのみならずWebアプリの分野においてもKotlinはその多様性を遺憾なく発揮します。
スマホアプリで紹介した「Yahoo!アプリ」のWeb版の一部もKotlinで作られています。
実際にJavaのSpring FrameworkがKotlinのサポートを始めました。
参考:Spring FrameworkのKotlinサポート最新動向 (2020年版)
実際にSpring Frameworkが利用されているWebアプリケーションは数多く存在します。
- 電力供給システムのWebサービス
- ECサイト
- 金融サイト
が主にこのSpring Frameworkを用いて開発されています。
まだWebアプリケーションとしては途上のKotlinですが、Spring Frameworkのサポートの拡充であったり、スマホ向けアプリとWeb版のアプリの同時開発の案件もあることは確かです。
Kotlinは採用に強い?どんな仕事につけるのか
冒頭でも述べた通り、Kotlinの言語別年収は575万で第4位になっています。
ではKotlinを習得するとどのような仕事があるのか、就職や転職に有利になるのか解説していきます。
Kotlinを使う仕事の求人数
2021年3月現在のKotlinの求人数は1390件あり、これは全求人言語の中で11位となっています。
参考:Nojov(※2021年8月サービス終了)
2020年の9月の段階で約600件の求人があったことから比較してもここ数カ月で倍にまで求人数を増やしたことになります。
また実際にPaiza転職でKotlinの求人を探してみると、年収にかなりのばらつきはあるものの、上限1000万円の求人が1ページ目から数件見つかります。
2020年の9月段階では575万円でしたが、今ではもっと高い年収を望むことができます。
JavaやC#、Swiftに代わるのはまだ先になりますが、案件数の推移を見ているとC言語は2021年か2022年には超えて来る可能性は十分にあります。
Kotlinを使ったサービスなど
Kotlinを使ったサービスとして求人に掲載されている中には
- 保険
- 医療
- ビットコイン
など多種多様に渡ります。
何れも年収単価は上限を1000万としている案件になります。
「スマホアプリの開発」でも紹介したAbemaTVの開発・運営を行っている株式会社サイバーエージェントも上限1300万円という高単価でKotlinエンジニアを募集しています。
今後IT業界の求人の主戦場はパソコンやサーバからスマホやタブレットを中心としたものにシフトしていきます。
Kotlinのおすすめ学習方法
最後にKotlinのオススメの勉強法としてスクールに通うケースと独学で勉強するケースを紹介します。
Kotlinは簡素なプログラミングであることから一定の質のプログラムが組める反面、効率化であったりJavaとの結合の部分は独学だと限界があるので、スクールに通うことをお勧めします。
Kotlinを学べる学習サービスのおすすめスクールは「プログラミングジャパン」
Kotlinを学ぶなら、スマホアプリ開発に特化した学習指導をしているプログラミングジャパンがおすすめです。
プログラミングジャパンなら最短1カ月でエンジニア転職を目指せます。
特にスマホアプリ開発の分野に至ってはスマホ開発企業と直連携しているので転職も有利になり、入学した当初は超初心者であっても高年収での転職も夢ではありません。
その強みを支えているのは全コースに対してスマホアプリの開発の講義を入れているからであり、一人でも多くの実践的なエンジニアを世に輩出することを使命としているからです。
Kotlinを独学で学ぶなら
冒頭でも申し上げた通り、Kotlinはやや言語仕様に特徴があるため独学で勉強することは推奨していません。
- スクールに入る前に少し予備知識をつけておきたい
- 多少は理解しているけどまだ少しぼやけている
- スクールや会社では初歩的な質問ではなく、より技術に踏み込んだ質問をしたい
という方向けに書籍やサイトを紹介します。
Android Basics in Kotlin
Android Basics in Kotlinはアンドロイドデベロッパーが公式に公開しているチュートリアルサイトです。
ただ、技術に踏み込んだ内容は書いていないので、あくまでもとっかかりの部分しか理解できないかもしれません。
やさしいKotlin入門
プログラミング未経験者はKotlin入門者向けに書かれた「やさしいKotlin入門」から初めると理解が深まります。
ただ、レビューにもある通り、サンプルが短すぎるのでアルゴリズムの勉強には適していません(本当に入門者向け)。
また、この手の書籍を入門者が読むとそれをバイブルとして扱う傾向があり、実はそれがコーディング規約違反であったり、最適なコーディングでないということが多々あります。
「あくまでも一例」という程度の理解に留めておいた方がいいでしょう。
まとめ
Kotlinはここ数カ月の間で爆発的な伸びを見せてきました。
しかしここ数カ月でいきなり伸びてきた言語なので、日本国内にKotlinのエンジニアは多くありません。
現在エンジニアは不足しており、売り手市場だと言われています。
Kotlinが廃れることはこれから数年は確実に有り得ません。
- 東京2020やワールドカップといった世界的スポーツ祭典のライブ配信
- 工事現場や遠隔現場でのスマートグラスを利用した映像サービス
- VRやARアプリの開発
などAndroid市場はこれからますます広がっていく一方で、Kotlinもそれに呼応するように案件数が増えていきます。
プログラミングを始めようか迷っていませんか?
プログラミングを始めてみようと思っても学習で挫折しないか
職業として生計を立てていけるか不安ですよね。
プログラミングジャパンでは全くの初心者でも最速で安定した収入を得るプログラマーになる為に必要なステップをLINE@で配信しています。