スクラムマスダーの日記

アジャイル、スクラムに関連した内容が多めです。

勝又さんは関数型言語を経験するべきと言っているので、結局Scalaをおすすめするしかないと思う

エンジニアで、YouTubeで配信もされている勝又健太さんが、「Scalaが日本で衰退し始めている理由を説明します」という動画をアップされました。

僕は、過去、Scalaを少しだけ触ったことがあります。
そのため、以前から、勉強のために、日本でトップレベルのスキルをもつScalaエンジニアの方のTwitterをフォローさせていただいていました。

勝又さんが動画をアップされた日や翌日は、そのScalaエンジニアの方が、いつもとは異なるツイートをされていました。

僕は、少し違う感じ方をしたので、今回ブログに記します。

勝又さんの動画の要約

詳しくは、Youtubeにアップされている動画を確認いただければと思いますが、ざっくり要約すると以下の通りです。

  1. 学習コストの高さによる技術的負債の進行
    • 学習コストの高い、関数型言語が日本で普及していないから
    • 一度右肩下がりになった言語は、過去の例を鑑みると、右肩下がりのまま。数年以内にはWebサービス開発の言語としてはマイナーポジションになる。
  2. Scalaコミュニティがにわかファンの方達の心理的安全性の確保ができなかったこと
    • 一部のエンジニアが、入門者にマウンティングする、他の言語を悪く言うなどの問題行動をとっている
    • 初学者に「マサカリ」を投げる人がいるため、「Scalaコミュニティが怖い」というイメージがエンジニア内で定着している。その結果、新しい人が寄り付かなくなる。

Scala人気ってなんだろ?

勝又さんは、彼自身の観測範囲内で、Scalaの人気が衰退しているということをおっしゃっています。
動画冒頭でも、定量的に観測したわけではいともおっしゃいいますので、個人的に、「関わっている周囲との関係から、衰退していると感じることは、あるだろう」とは思います。

Twitterで、「Scalaに関する技術顧問業に相談件数は増えているので、人気は継続している」というツイートも見かけました。
もちろん、それ自身も事実だと、僕は思います。

これは、観察者バイアスがあるから、仕方がないことだと思っています。
観察している人が異なれば、違う結果がでるでしょう。
全ての個体を検査しているわけではないですし、何か両者の共通の基準を持って計測してるわけでもないためです。

「あんまりScala人気ないよねー。」と言ってる人の周りには、Scalaに関する仕事の話は少ないでしょう。
Scalaを盛り上げて行くぞ!」と言ってる人の周りには、Scalaに関する仕事の話が集まりやすいでしょう。

なので、Scalaの人気があるかどうか、衰退しているかどうかは、結局分からないのと、個人的に考えています。

Scalaの利用状況を定量的に観測してみる

プログラミング言語の利用ランキングを見ていると、関数型言語が上位に入ることが、そもそも難しいことは、現実としてあります。

japan.zdnet.com

octoverse.github.com

今回の動画の県で、「TwitterマイクロソフトFacebookScalaユーザー」というツイートも見かけました。
もちろんそれも真実だと思います。けれども、やっぱり絶対的な利用者数は、他の言語と比べると少ないのも事実です。

日本に限った場合、日経クロステックさんの記事によるとScalaは、22位になってます。

xtech.nikkei.com

世界ランキングが11位以降わからないので、絶対とは言えませんが、世界も日本も同じような状況だと、思っています。

勝又さんおすすめのキャリア形成におけるScalaの立ち位置

勝又さんは、エンジニアのキャリア形成においては、「Ruby→Go→Scala」の順で経験した方がよい、と言っています。

Scalaは、3つの言語の中で、唯一の関数型言語です。
動画においても、勝又さんは、「関数型言語の知見はプログラミング力を高める上で非常に有効」と言っています。

僕自身、関数型言語を通して、副作用やパターンマッチなど、多くのことを学んだので、一度は経験した方がよいと思っています。

結局、Scala以外選択肢ある?

プログラミング言語の利用状況を鑑みて、関数型言語を経験するために仕事を探すとなると、やっぱり関数型言語で選択するのはScalaになると思います。

関数型言語は、F#、Haskellなど、他にもあるけれど、上記のランキングには乗っていません。

勝又さんの動画を見て、Scalaを避けて通ろうとするエンジニアがいるのであれば、結局、勝又さんのおすすめするキャリア形成は、非常に難しくなると感じています。

Scala学びたいと思ったら

このブログを読んで、もしScalaに少しでも興味が出て、学びたいと思った方がいらっしゃれば、はてなさんの学生インターン向け教材や、ドワンゴさんのScala初学者向け学習テキストを読んでいただければと思います。

github.com

scala-text.github.io

もっと興味が出てきたという方には、『Scalaスケーラブルプログラミング』、『実践Scala入門』あたりがおすすめです。

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

実践Scala入門

実践Scala入門

おわりに

このブログでは、勝又さんおっしゃる衰退している理由の1つ目について、少しだけ考えてみました。

勝又さんのおっしゃる心理的安全性については、僕自身思うところもあるけれど、やっぱり解釈が難しい言葉には違いないので、あえて触れませんでした。

関数型言語の中で、日本語の資料が一番まとまっているのは、Scalaだと思うので、なんだかんだで、Scalaおすすめです。

テレワークができる人、できない人

サイボウズさんが、「がんばるなニッポン。」というタイトルで、テレワークに関する広告を出されています。

f:id:scrummasudar:20200306213700j:plain

広告ついて、以下のツイートをしたところ、サイボウズの青野社長にもリツイートいただきました。

コロナウイルスの影響で、テレワークが話題に上がることが多いので、上記ツイートを詳細に記したいと思います。

私個人のテレワークについてのスタンス

ツイートから「あなたは、テレワーク反対派なのですね」と思われる方もいらっしゃると思います。

私個人としては、テレワーク自体は、できる環境であれば、取り組むことには賛成しています。
働いている業界がIT業界で、ソフトウェアのエンジニアという役割であったことが大きいです。

もちろん、企業のスタンスとして、テレワーク推進している企業もあれば、対面でのコミュニケーションを重視している企業もあると思いますので、その企業の文化を尊重したいと思っています。

テレワークがそもそもできない業界や職種がある

では、どのような業界、職種であってもテレワークできるかというと、現状の枠組みでは、そもそもできない業界、職種があります。

枠組みというのは、単なる企業の規則や文化ではなく、法律です。

医療、介護、飲食などは、法律によって、自宅やシェアオフィスで働くこと自体が禁止されている場合があります。

医療業界

医療業界は、医師法保健師助産師看護師法などが関連する法律です。

医師法第二十条では、対面診療を原則としています。

医師は、自ら診察しないで治療をし、若しくは診断書若しくは処方せんを交付し、自ら出産に立ち会わないで出生証明書若しくは死産証書を交付し、又は自ら検案をしないで検案書を交付してはならない。但し、診療中の患者が受診後二十四時間以内に死亡した場合に交付する死亡診断書については、この限りでない。

elaws.e-gov.go.jp

医師法の解釈が年々変わっていき、情報通信機器の発達から、遠隔診療も徐々に緩和されてきています。

厚生労働省の「情報通信機器を用いた診療の経緯について」 https://www.mhlw.go.jp/file/05-Shingikai-10801000-Iseikyoku-Soumuka/0000193828_1.pdf

しかし、原則、対面診療であることには変わりませんし、また遠隔診療でできることは限られています。

採血も医療行為なので、特定の国家資格のある方でないと、実施できません。 「血液検査するので、注射して、郵送してください。」ということは出来ないのです。

f:id:scrummasudar:20200307002131p:plain

飲食業界

飲食業界は、食品衛生法、食品リサイクル法などが関連する法律です。

特に食品衛生法では、営業施設に関する第五二条第二項が、テレワークに関するポイントです。

前項の場合において、都道府県知事は、その営業の施設が前条の規定による基準に合うと認めるときは、許可をしなければならない。ただし、同条に規定する営業を営もうとする者が次の各号のいずれかに該当するときは、同項の許可を与えないことができる。

elaws.e-gov.go.jp

つまり、飲食店を営業する場合、特定の許可された施設で営業しなければならないということです。

そのため、今日はテレワークデイだから、自宅のキッチンで料理を作って、ウーバーイーツで配達してもらう、ということはできません。

調理は、許可された施設で行わなければならないのです。

f:id:scrummasudar:20200307002113p:plain

テレワークできない人のために

上記の医療業界や飲食業界以外にも、仕事が、特定の人や場所でのみでしか許可されていない職業や職種はたくさんあります。

現時点での枠組みでは、そもそもテレワークをすること自体が、法律違反になってしまうことがあるため、出勤しなければならない人がいることを、理解する必要があります。

テレワークできる立場にある人ができることは、テレワークできない人をいかに働きやすい状況で働けるようにするかということになると思います。

特に、コロナウイルスが広まっている現状では、医療業界や介護業界の方が、対面での仕事がしやすい状況をいかに作り出せるかが大事だと思います。

『チームビルディング超実践ガイド』のレビューに参加しました!

ふりかえりで著名な森さんが執筆された同人誌『チームビルディング超実践ガイド』が、2月29日に出版されます。今回、レビュアーとして書籍の出版に携わることができました。

hurikaeri.booth.pm

本書は、技術書典8での販売を予定されていました。
ただ、コロナウイルスの影響もあり、残念なことながら、技術書典は中止となってしまいました。

techbookfest.org

今回、2月29日に、プロジェクトマネージャー保護者会のイベントが開催され、『チームビルディング超実践ガイド』の出版は、無事行われる運びとなりました!

hurikaeri.hatenablog.com

レビューに参加させていただいたので、『チームビルディング超実践ガイド』の紹介をさせていただきます。

対象読者

この書籍は、チームに所属するすべての方におすすめできる内容となっています。働いている方で、周囲の方と関係性のない仕事に携わっている方は、いらっしゃらないと思うので、働くすべての方に、おすすめできると思います。

といっても、一番の対象の方は、マネージャーやリーダーの方です。
チームメンバーが働く時間に対して、ある程度コントールできることから、改善やワークの時間を取り入れやすいためです。
特に、新しくマネージャーやリーダになった方には読んでいただきたい内容です。

書籍概要

書籍の内容は、大きく2つに別れており、

  • よりよいチームとは、どのようなチームであるのか
  • よりよいチームにするためには、どういう方法があるのか

を紹介しています。

よりよいチームは、みなさんが想像される通り、

  • 心理的安全性の高い状態
  • 自律的である
  • 学習に対する前向きさ

といった要素があるチームです。
こういった内容は、既存の書籍にも書かれている内容で、みなさんも納得されると思います。

『チームビルディング超実践ガイド』の一番のポイントは、チームをよりよくするために何をすればよいのかの具体的な手法を紹介していることです。

より良いチームのためのWhyやWhatを理解するだけでは、現場で実践することはできません。
Howも深く理解することで、初めて現場で実践することができます。

『チームビルディング超実践ガイド』は、そのHowがたくさん紹介されています。
現場で実践するときのハンドブックになる書籍となっています。

書籍について、まとめたチートシートがすでに公開されています。
https://cdn-ak.f.st-hatena.com/images/fotolife/v/viva_tweet_x/20200214/20200214154918.jpg

このチートシートを見て、気になるHowがある方は、ぜひ『チームビルディング超実践ガイド』を読んでほしいと思います。

また、すでに序文は公開されているので、とりあえず読んでみたいという方は、以下のブログを御覧ください。

hurikaeri.hatenablog.com

おわりに

技術書典(今回は残念ながら中止ですが…)は、関西在住の僕にとって、縁遠いイベントですが、レビューという形で、関わることができたので、非常によい経験をさせていただきました。
機会をくださった森さんには、非常に感謝しています!

ぜひ、みなさん、『チームビルディング超実践ガイド』を手にとっていただければと思います!