paint-brush
Kotlin の台頭: 次世代のプログラミング言語by@David
48,469
48,469

Kotlin の台頭: 次世代のプログラミング言語

David Smooke8m2018/07/05
Read on Terminal Reader
Read this story w/o Javascript

<em>毎週のスポンサーである</em><a href="http://bit.ly/2lCXscm" target="_blank"><em>Pusher</em></a><em>を Hacker Noon にぜひお迎えください。Pusher</em><a href="http://bit.ly/2lCXscm" target="_blank"><em>は</em></a><em>、世界中の開発者がアプリにコミュニケーション機能やコラボレーション機能をすばやく追加できるようにするリアルタイム API を作成しています。同社のコア製品により、開発者はアプリ内通知、アクティビティ ストリーム、リアルタイム ダッシュボード、ライブ トラッカーなどの機能を簡単に作成できます。</em>

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Kotlin の台頭: 次世代のプログラミング言語
David Smooke HackerNoon profile picture

毎週のスポンサーであるPusherを Hacker Noon にぜひお迎えください。Pusher、世界中の開発者がアプリにコミュニケーション機能やコラボレーション機能をすばやく追加できるようにするリアルタイム API を作成しています。同社のコア製品により、開発者はアプリ内通知、アクティビティ ストリーム、リアルタイム ダッシュボード、ライブ トラッカーなどの機能を簡単に作成できます。

今日は、Pusher 開発者エバンジェリストの Zan Markan 氏に会い Kotlin の現状、彼の原動力、そして宇宙カウボーイを宇宙カウボーイたらしめる要素について話し合います。

David : まず、Kotlin の現状についてお話ししましょう最近、Kotlin に関する調査を実施されましたね (詳細については、こちら)。エコシステムの現状を把握するために、2018 年 1 月から 3 月にかけて 2,744 人を対象に調査を行いました。想定を覆す結果と、想定を裏付ける結果がありましたか? 想定を裏付ける結果と、Kotlin の現状について、簡潔にまとめるとどのような点でしょうか?

zan :そうです。当社の製品を使用してアプリケーションを構築するときに Kotlin を使用する開発者が増えていることに気づいたので、さらに深く掘り下げて、彼らの動機を探ることにしました。いくつか驚くべきことがわかりました。

まず、学生や初心者の開発者が Kotlin に注ぐ愛情には本当に驚きました。経験豊富な開発者と経験の浅い開発者の間にはもっと大きな差があると思っていましたが、Google がコミュニティに力を入れ始めてから、新しい人たちが Kotlin に熱中し始めています。

もう一つ驚いたのは、Kotlin チームによって実験的とされている機能、つまりコルーチンとマルチプラットフォーム プロジェクトのサポートを試してみたいという人がどれだけいるかということでした。それぞれ約 25~30% です。

調査の結果は、Android がどれだけ大きな存在かという私の推測をほぼ裏付けました。調査データによると、Android は約 80% です。私が見た他の調査では、Android の割合はもう少し低いものの、それでも 75% を大きく上回っています。この差は、私のネットワークが主に Android 中心であることによるものかもしれませんが、影響はそれほど大きくありませんでした。

1 つのポイントは、Kotlin は魅力的な言語であり、開発者を満足させる言語であるということです。

これは非常に珍しいことであり (少なくとも主流のプログラミング言語としては)、Kotlin エコシステム全体を中心に活気に満ちた熱心なコミュニティが形成されました。

Kotlin の主な開発は、ロシアのサンクトペテルブルクに拠点を置く JetBrains プログラマーのチームによって行われています。その創設について他に何か教えていただけますか? また、Kotlin を初めて使用したのはいつですか?

私の知る限り、Kotlin の歴史は JetBrains が自社の開発ツールに「より優れた Java」を求めていたことに由来しています。相互運用性と生産性の向上が主な目標の一部でしたが、当時は JVM ベースの言語でその要件を満たすものはありませんでした。Scala はほとんどの要件を満たしていましたが、ツールが存在せず、ビルド時間が JetBrains の開発ニーズに対して非常に遅すぎました。

高度に相互運用可能でより優れた Java というまさにそのアイデアこそが、多くの Android 開発者 (初期の頃から Android に携わってきた私を含む) を惹きつけ始めた理由です。

数年前、Android エコシステムは主に古いバージョンの Java に固執していました。Java 7 と Java 6 の奇妙なハイブリッドで、ラムダのような優れた機能がなく、非常に冗長でした。そのため、人々は、相互運用性が高く、生産性が向上すると思われるこの新しいものを試し始めました (特に、すべてが壊れなかったときは 😅)。

私もそれがきっかけで Kotlin に引き込まれました。2014 年に初めて Kotlin について知り、その後は余暇に Kotlin で遊んだり、プロトタイプをすばやく作成したりして、Kotlin の開発に注目してきました。Pusher ChatkitおよびFeeds製品の開発中に、最初の本番用 Kotlin コードを書きました。

Kotlin が経験の浅い開発者向けに作られたのはなぜだと思いますか? また、それが流行になるのを止めるものは何でしょうか?

ハハ!経験の浅い開発者を対象としているとは思いません。実際、 StackOverflow の調査結果で見たものと非常によく似たグループ分けなので、業界の発展の仕方に関して予想外のことはありません。

また、最初は経験豊富な(雇用されている)開発者が主に採用し、最近になってようやく学生や若い開発者の間で採用され始めたこともわかりました。

Kotlin は習得が早い言語だと思います。ほとんど知らなくても生産性を向上できる優れたツールがあります。Java と相互運用可能なので、移植や移行は自分のペースで行うことができます。最後に、Google と JetBrains の両社は、Kotlin をサポートするドキュメントとリソースの準備に優れた仕事をしています。

Kotlin が急速に普及した理由として、他のプログラミング言語と Kotlin の違いは何だと思いますか? また、より一般的には、普及しているプログラミング言語と普及に苦労しているプログラミング言語の違いは何だと思いますか?

Google と JetBrains からのサポートは間違いなく役立っています。一方、Google は開発者コミュニティからの大きな後押しを受けて初めて Android で Kotlin を公式にサポートすることを決定したため、反対側からもすでにかなりの後押しがありました。

実際、これは適切なタイミングで適切なコミュニティに登場した言語だと思います。Android コミュニティが成熟し、人々がより生産的になるための新しいツールを求めていたときです。Kotlin はそこにありました。もちろん欠点もありましたが、人々が適切に使用できるほど十分に優れていました。

今後 5 年ほどで、Kotlin が既存の言語やアーキテクチャと効果的に競合し、補完していくとお考えですか?

明らかなことから始めれば、Java はかなり簡単で、Kotlin はすでに Java をうまく補完しています。特にツールが統合され、いくつかの「ゴールド スタンダード」ツールが登場すると、間違いなくそのようなツールがさらに増えると思います。これらのツールの 1 つがArrow です。これは Kotlin 用の関数型プログラミング ツールキットで、Funktionale チームと Kategory チームが協力して、より優れた、より完全なツールを作成することで開発されました。これがトレンドになると思います。

他のプログラミング言語については、JVM 上では Scala やその他の言語がどうなるかを見ていきます。JVM の世界以外ではまだ判断するには時期尚早ですが、Kotlin/Native やマルチプラットフォーム プロジェクト向けの Kotlin に関する有望なアイデアをいくつか目にしました。どちらもまだ非常に実験的ですが、概念実証がいくつかあり、機能していて非常にエキサイティングです。

Alberto Ballanoの「 Kotlin Functors, Applicatives, And Monads in Pictures 」が Hacker News に掲載されたとき興味深い議論が巻き起こりました…Kotlin は何への入り口になると思いますか?


それは悪質なようですね。これは、生産性と幸福度の両方を高める現代のプログラミング言語への入り口です。Arrow など、特に多くの人が関数型プログラミングに触れる機会となることは間違いありません。また、よりハードコアな FP 言語に簡単に移行できる人もいるかもしれません。

他にも、クロスプラットフォームのサポートにより、多くの Android 開発者が Web 開発やネイティブ開発に進出するきっかけになるかもしれません。また、Kotlin を最初のプログラミング言語として選択する開発者が増えるにつれ、Kotlin が他のすべての言語の基準となることが必然的に明らかになるでしょう。これも非常に楽しみです。

言語学では、英語やスペイン語などの言語が普及するには非常に長い時間がかかります。また、方言も数多くありますが、まったく新しい話し言葉の使用は、新しいソフトウェア言語の使用に比べるとはるかに少ないです。新しいソフトウェア言語の出現率が下がるような業界の成熟点に達すると思いますか? それとも、新しいソフトウェア言語はこれからもどんどん登場するのでしょうか?

ここ数年で、Swift、Go、TypeScript、Rust など、数多くの優れたプログラミング言語が急速に本格的に採用されるようになりました。これらの言語はいずれも、十分なリソースと既存の開発者コミュニティを持つ 1 つ以上の大規模なエンジニアリング組織によってサポートされています。

それぞれの言語は、それぞれの組織が抱える特定の悩みを解決してきました。その悩みが他の多くの開発者に共有されれば、言語は採用され、普及し、「臨界質量」を達成することができます。私が言及した言語はどれも、まさにその通りです。たとえば、Go は Google が並行処理をうまく行いたいと考えたときに始まり、Rust の目標の 1 つはクラッシュしないことでした。


将来的には、新しいコンピューティングパラダイムや新しいアイデアが確実に開発されると思います (いつかブロックチェーンが実際に普及するかもしれません)。しかし、それらは既存のツールではあまり役に立ちません。他の例としては、量子コンピューティングや AI があります。

最近のほとんどの言語は汎用性があると主張していますが、だからといってすべての目的に等しく適しているというわけではありません。新しい目的が生まれ、新しい言語が必要になるでしょう。

ザンという人物についてお話ししましょう。あなたの個人ウェブサイトのプロフィールの最初の 2 語は「スペース カウボーイ」です。あなたを愛のギャングスターと呼ぶ人もいますか? モーリスと呼ぶ人もいますか? あなたは愛のポンパトゥスを体現していますか?

はは、その曲大好き! たぶん、愛のギャングスター。スターバックスの店員でさえ、Zan を Maurice と間違えた人はいないと思うから。ロケットも大好きだし、Firefly がなくなったことを今でも悲しんでいるから、これも一種のスペース カウボーイのテーマだね。

この「肩書き」の本当の由来は、数年前、私が大学を卒業したばかりの頃、数人の友人と立ち上げたスタートアップを経営していたときのことです。見知らぬ人にお金を求める(つまり投資を集める)ときに、少しでも正当に見えるように、私たちはそれぞれ名刺を作りました。

私はタイトル、特にみんなが何でもやっているときに C タイトルをつけるのがあまり好きではないので、逆に、(不)正確なものなら何でもない Space Cowboy を選ぶことにしました。少なくとも、会話のきっかけにはなると思いました。

あなたがそれについて尋ねたという事実は、それが本当に会話のきっかけとしてどれほど良いものであるかを証明しています。

あなたはウェスト コースト スタイルの IPA がお好きとおっしゃっていますね。私は今コロラドにいますが、ラギナティスが恋しいです。ウェスト コースト IPA のベスト 3/5 は何ですか?

私は暴力的に強くて容赦なくホップが効いたビールが好きです。

西海岸を訪れるたびに、私は必ずロシアン・リバーのプリニー・ジ・エルダーとストーンIPAを飲みます。もちろん両方ともドラフトです。地元に近いときは、ブリュードッグのジャック・ハマーを頼りにします。

優れた開発者エバンジェリストになるにはどうすればよいですか? どのようにして仕事の質を高めてきましたか? Pusher テクノロジーを普及させる価値があるのはなぜですか?

開発者エバンジェリスト(開発者関係全般の担当者)にとって最も重要なことは、教えることと知識を共有することへの純粋な情熱です。実際、誠実であることはおそらくさらに重要です。以上です。開発者は、何かを売りつけられることを嫌う、生まれながらの嘘発見器です。

誰かがより優れた開発者になる手助けができたとわかったときも、素晴らしい気分になります。

私が最初に上達しなければならなかったことの 1 つは、時間管理です。開発者としての経歴を持つ私にとって、特定のタスクにまとまった時間を割り当てることは、はるかに一般的です。現在の仕事はそれよりもはるかに流動的で、最初はその変化や調整を予想していなかったため、かなり圧倒されました。ポール グラハムによる、メーカーとマネージャーのスケジュールに関する優れたエッセイは、私に大いに役立ちました。

私が身につけたもう 1 つの便利なスキルはプロジェクト管理です。たとえば、State of Kotlin の場合、私の仕事のほとんどは、最初はアンケートの設定とコンテンツの作成を中心に行われ、その後、設計や開発などの他のチームとの調整などのより一般的なプロジェクト管理に移行しました (その作業は彼らが行いました。私ではありません。ありがとうございます。あなたは自分が誰であるかを知っています)。そして最後に、さまざまな出版物で情報を発信し、Web 上でインタビューを行うことになりました。

Pusher の技術は、統合の速さだけでなく、「とにかく機能する」という事実でも有名です。

そのため、伝道活動は簡単です。モバイル開発カンファレンスで、Pusher を使用している Web チームの同僚から、Channels 製品の素晴らしさを教えて欲しいと言われたと言われた人もいました。とても興奮しました 😁

全体として、Pusher の長期ビジョンの実現において Kotlin はどのように位置づけられるのでしょうか?

私たちはすでに、Android SDK の主要開発言語として Kotlin を採用しています。Beams、 ChatkitFeedsといった新製品の SDK から着手しましたが、現時点では非常に満足しています。

また、Kotlin は最もエキサイティングで熱心なコミュニティの 1 つであると信じており、これが State of Kotlin 調査とそのレポートを作成することを決定した理由の 1 つでもあります。Kotlin が開発者の満足度と生産性を高め続け、 State of Kotlin がKotlin の採用をさらに促進するのに役立つことを心から願っています。

私たちのウィークリースポンサーであるPusher は、世界中のアプリを動かすコミュニケーションおよびコラボレーション API を作成し、Web、モバイル、および最も人気のあるバックエンド スタック向けの簡単に統合できる SDK によってサポートされています。今すぐ始めましょう。