アドホックなScalaコードを実行したいときにAmmonite REPL

よく使うし便利なのでメモ

Ammonite

インストールしたら、ammで起動できる。

ᐅ amm 
Loading...
Compiling (synthetic)/ammonite/predef/interpBridge.sc
Compiling (synthetic)/ammonite/predef/replBridge.sc
Compiling (synthetic)/ammonite/predef/DefaultPredef.sc
Welcome to the Ammonite Repl 1.1.0
(Scala 2.12.4 Java 1.8.0_152)
If you like Ammonite, please support our development at www.patreon.com/lihaoyi

例えば、cats-coreをその場で読み込む

@ import $ivy.`org.typelevel::cats-core:1.0.0`
https://repo1.maven.org/maven2/org/typelevel/cats-core_2.12/1.0.0/cats-core_2.1…
  100.0% [##########] 4.6 KiB (7.4 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-macros_2.12/1.0.0/cats-macros…
  100.0% [##########] 4.1 KiB (9.7 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-kernel_2.12/1.0.0/cats-kernel…
  100.0% [##########] 3.9 KiB (9.0 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/machinist_2.12/0.6.2/machinist_2.1…
  100.0% [##########] 1.7 KiB (3.9 KiB / s)
https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.12.0/scala-reflec…
  100.0% [##########] 1.8 KiB (15.0 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-macros_2.12/1.0.0/cats-macros…
  100.0% [##########] 6.0 KiB (46.9 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/machinist_2.12/0.6.2/machinist_2.1…
  100.0% [##########] 32.9 KiB (124.9 KiB / s)
https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.12.0/scala-reflec…
  100.0% [##########] 3.4 MiB (2.2 MiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-core_2.12/1.0.0/cats-core_2.1…
  100.0% [##########] 3.7 MiB (2.1 MiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-kernel_2.12/1.0.0/cats-kernel…
  100.0% [##########] 3.0 MiB (1.6 MiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-macros_2.12/1.0.0/cats-macros…
  100.0% [##########] 1.1 KiB (9.4 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/machinist_2.12/0.6.2/machinist_2.1…
  100.0% [##########] 3.5 KiB (29.6 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-kernel_2.12/1.0.0/cats-kernel…
  100.0% [##########] 42.8 KiB (133.9 KiB / s)
https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.12.0/scala-reflec…
  100.0% [##########] 557.8 KiB (718.8 KiB / s)
https://repo1.maven.org/maven2/org/typelevel/cats-core_2.12/1.0.0/cats-core_2.1…
  100.0% [##########] 190.4 KiB (210.6 KiB / s)
import $ivy.$
@ import cats.Eval
import cats.Eval

@ def factorial(n: BigInt): Eval[BigInt] =
    if(n == 1) {
      Eval.now(n)
    } else {
      factorial(n - 1).map(_ * n)
    }
defined function factorial

単にscalaコマンドでREPLすると外部ライブラリ読み込めないしsbt console使うのもtoo muchなときに使っている。

あなたの体は9割が細菌

あなたの体は9割が細菌 微生物の生態系が崩れはじめた

あなたの体は9割が細菌 微生物の生態系が崩れはじめた

ライブラリにあったので手にとった。 このジャンルは面白い。生物の進化の歴史という観点でみても面白いし、人間の健康維持という観点でみても身近に感じられる。

抗生物質の効用とリスクについて ・自閉症の原因について ・妊娠・出産のときの母親の微生物環境の変化について ・マイクロバイオータを移植することについて

Netflix Culture

tkybpp.hatenablog.com

jobs.netflix.com

リーダーとしては「Informed Captain(情報に通じたキャプテン)」「Context, not control(統制ではなく前後関係(コンテクスト))」の2つは特に意識していきたい。「責任者」「リーダー」って漠然と定義してアサインされても、結局自分が何をする立場なのかを言語化できてないともやもやの中で動かざるを得ない。

  • 他人の意見を整理し、判断を下す。どうしてその判断をしかたの共有をし、反対意見を募る。ミクロな意思決定をするのではなく、全体に関わるマクロな意思決定を行う。
  • 決めるために必要な情報を共有し、コンテキストを設定する。過去の経緯から将来にいたるまでのストーリーの中に位置づける、みたいな感じか。

自分なりの解釈はこんな感じ。

開発プロジェクトのマネジメントの進め方

lightworks-blog.com

  • フィードバック
  • 権限委譲
  • チームビルディング
  • キャリアデザイン

これを実現するために、自分としてやること

<インターネット>の次に来るもの 未来を決める12の法則

〈インターネット〉の次に来るもの 未来を決める12の法則

〈インターネット〉の次に来るもの 未来を決める12の法則

どこかで紹介されていて(本の中だったかネットの記事だったかも忘れてしまった)、それで手にとった記憶がある。 コンテキストをつなげるという意味ではメモしておかないといけなかった。

著者はワイアードの初代編集長で、「テクニウム」なども書いているこの分野では有名人。テクニウムが割りと哲学的な内容であったのに対し、本書は、12のテーマに沿って多くの「変化しつつある実例」が出て来る。AIはもちろん、IoT、ブロックチェーンSNS、VR、自動運転、ライフログクラウドサービス、キュレーション(remixing)、シェアリングエコノミー、シンギュラリティなど、私が思いつくかぎりのITのトピックが網羅されている感じだ。とにかく実例が豊富で網羅性が高いので、一歩引いて俯瞰する見方を得たいときのスタート地点として使える。他分野で最初に本を読むとしたら、こういう本を読みたい。

本書を通じて込められているメッセージは、これらの変化がまさに始まったばかりであり、ある一定の飽和点を超えつつあり、異質の新しい世界に変わる時代の境目であるということだ。

訳者あとがきから、本書を端的に要約した一文を引用しておく。

その12章を簡単にたどるなら、ネット化したデジタル世界は名詞(結果)ではなく動詞(プロセス)として生成し(第1章Becoming)、世界中が利用して人工知能(AI)を強化することでそれが電気のようなサービス価値を生じ(第2章Cognifying)、自由にコピーを繰り返し流れ(第3章Flowing)、本などに固定されることなく流動化して画面で読まれるようになり(第4章Screening)、すべての製品がサービス化してリアルタイムにアクセスされ(第5章Accessing)、シェアされることで所有という概念が時代遅れになり(第6章Sharing)、コンテンツが増えすぎてフィルターしないと見つからなくなり(第7章Filtering)、サービス化した従来の産業やコンテンツが自由にリミックスして新しい形となり(第8章Remixing)、VRのような機能によって新しいプレゼンスとインタラクションを実現して効果的に扱えるようになり(第9章Interacting)、そうした全てを追跡する機能がサービスを向上させライフログ化を促し(第10章Tracking)、問題を解決する以上に新たな良い疑問を生み出し(第11章Questioning)、そしてついには全てが統合され彼がホロス(holos)と呼ぶ次のデジタル環境(未来の<インターネット>)へと進化していく(第12章Beginning)という展開だ。