Haskell

Haskell 情報収集術

この記事は Haskell (その2) Advent Calendar 2018 一日目の記事です。

はじめに

この記事では Haskell の フレッシュモダン な情報について

  • どこ を探したら良いんだろう?
  • どんな 情報があるんだろう?

という知見を共有できたらと思います。

Haskell を業務で使おうとしたときに書籍の知識だけでは不十分なので、これから色々調べてみようかなと思っている人向けです。(バリバリ使ってる人にとっては、新しいことは無いと思います)

また、Haskell がどんな企業で使われているか知りたい人は erkmos/haskell-companies に一覧があるのでこちらをご参照ください。

  • Asahi Net (Japan)
  • Facebook
  • GitHub
  • IOHK (ブロックチェーン)
  • JP Morgan
  • Kaspersky Lab
  • Oracle Labs
  • Tesla
  • Tsuru Capital (Japan)

リストから聞いたことある企業等をいくつか抜き出してみました。規模感はわかりませんが、実際に求人があったり中の人が証言してたりするので、本当に使われているようです。

本記事は、実際に3年ほどHaskellを業務利用する中で試行錯誤しながら得た内容なので、明日からすぐに役立ちますよ!(たぶん)

GitHub

github.png

一番活用してるのはたぶん GitHub の Notifications 機能です。

僕は Haskell のソースコードを見つけたら、ほぼ全て Watch しています。(300リポジトリぐらいの更新を随時チェックします)

メリット

  • Haskell ライブラリ、アプリケーションのリアルな情報をいち早く手に入れることができます。(特にアプリケーションの情報は貴重)
  • googlereddit などには載ってない情報が手に入ります。
  • 良いHaskellコードの書き方が身に付きます。
  • どんなパッケージを利用したら良いかわかるようになります。

デメリット

  • 日々の初回チェックで30分~1時間程度の時間が取られます。(また、Haskell の知識が乏しいうちは、関連情報を調べたり、そもそも理解するためにもっと時間がかかる場合があります)
  • PRIssueWatch できるんですが、commit は追えないため、本当に重要なリポジトリについては master ブランチの rss を取得して slack で監視しています。
  • アプリケーションでは PR が巨大なことも良くあるので、そういった時にチェックしきれないです。

Hackage にあがっている Haskell のライブラリはほとんど GitHub にホスティングされているため、基本的にはほぼ全てのパッケージを把握できます。

Haskell Weekly

haskellweeekly.png

Haskell Weekly は毎週更新される Haskell の週間ニュースです。たぶん、Haskeller のほとんどは見ているので、チェックしていない人は欠かさずチェックしましょう!

ページには記事へのリンクと一言コメントがいくつかあるスタイルです。紹介される内容も gist や個人のブログ記事、YouTube の動画, GitHub issue など様々です。

また、Jobs には Haskell の求人情報が流れて来ます。ちょうど今回は Haskell Developer at Cross Compass in Tokyo ということで日本でも募集がありますね!以下、haskell-jp の slack からの引用になります。

日本人も募集しています。
チームには外国人もいるのですが、みなさんかなり日本語を喋れますので、英語力に自信がなくても大丈夫です。
“Ideal candidate”のところは高すぎる理想像なので、満たしていない方でも全然大丈夫です。(外国人むけに、そこは強気でだしています)

ということなので、気になる人は応募してみましょう!

他にも

  • 今週のパッケージ
  • 協力を募っているパッケージの issue リンク
  • 世界各国の Haskell イベント情報

などが含まれています!

本当は全ての記事を読みたいところですが、僕は Featured で紹介されている記事以外は気になるものだけチェックする感じで使っています。

Reddit

reddit.png

Reddit で本格的に情報を集めるようになったのはここ最近です。日本ではあまり馴染みが無いかも?しれないですが、海外では人気のようで Haskell の情報がかなり流れてきます。

特に色んな人の議論を見ることができるため、非常に重宝しています。良いライブラリやツールの背後には採用されなかったアイデアや議論があると思うので、そういった部分が見れる数少ないツールだと思っています。

僕は、2~3日に1回程度、夜寝る前とかに見てます。

一応、日本語の情報については haskell_jp がありますが、現状はあまり活発とは言えない状況です。

Planet Haskell

planet haskell.png

Planet Haskell はHaskellを主としている個人ブログ・企業ブログの更新を配信するサービスです。海外の Haskeller でブログを持っている人はだいたいここにも登録しているイメージがあるので、日々の新しい記事をチェックしておくと良いです。

ただ、ここで配信される内容で良いものについては、前述の Haskell Weekly や Reddit で紹介されることが多いので、僕はあまりチェックしていなかったりします。

Twitter

Twitter は日本語・英語問わずリアルタイムな情報がやりとりされているのでとても有用です!

僕の使い方としては

  • haskell lang:ja で検索をかけて、日本語で1日にどんなHaskellの情報が流れているのか把握します。
  • Haskell の情報を発信している 日本人ユーザ のリストを作って、暇な時に眺めています
  • Haskell の情報を発信している 外国人ユーザ のリストを作って、暇な時に眺めています

リストはそんなに熱心に作ってないので結構適当です。

Twitter にはプロがたくさんいるので面白いツイートをいくつも発見することができます。ただ、それほど有益ではない情報が大半なので、情報を集めるためにというよりかは、歩いている時とか暇な時間に見るという使い方が多いです。

あと、意外と twitter で質問すると誰かが答えてくれたりするので、そういう使い方も全然ありだと思います。

Slack

slack は超重要ツールです!

特に haskell-jp には日本中の Haskeller がたくさんいるので参加した方が良いです。参加方法等については「日本Haskellユーザーグループ発足・Slackチーム開放のお知らせ」をご確認ください。

GHCの新しいバージョンのリリースや面白いライブラリの紹介などが投稿されるため、かるーく眺めているだけでも Haskell 界隈で何が起こっているのか把握することができると思います。

また、自分が悩んでいることは過去にきっと誰かが悩んでいるので、haskell-jp の questions チャンネルで質問すれば、みなさん親切に回答してくれますよ。

Haskell の問題というのは、わからないと本当にわからないですし、わかる人から見たらすぐにわかります。例えば fmap が1つ足りずにビルドが通らず3日悩んでいる人がいたとして、僕が見たら5分で直せます。当然、僕がわからない事も、知っている人が見たら5分で直せてしまうんです・・・。実際にそういう場面は自分自身、何度も遭遇しています。

なので、悩んでどうしても解決できない場合は質問してみてください!初歩的な事でも全然 Welcome です!

情報の収集というよりは、コミュニケーションツールとして利用しています。

stackage の更新通知

slack.png

弊社では Stackage のスナップショットの更新を slack に通知するプログラムを Haskell でちょこっと書いて使っています。nightlyLTS の通知を slack に投げてくれるので、どんなパッケージが増減したか簡単にチェックできるようになっています。

実際のところ、この情報にあまり意味は無いのですが、見たことのないパッケージだったり、かなり多くのパッケージが更新された時に、何が起きているかなどを知ることができます。

Qiita

qiita.png

正直、全然使いません。Advent Calendar の時期は賑わいますが、それ以外では実用的な情報は皆無です。

Qiita の情報を収集しない理由

  • 実用的に使えそうな情報が投稿される頻度が著しく低い
  • 実用的な情報でも、海外で知れ渡っているものが多いため新しくはない
  • 情報が古くなってもメンテナンスされず朽ち果てていくだけなので、流れの速い Haskell 界隈では情報が古いことが非常に多い
  • いいねボタンしかない (良くない記事もイイねされるだけなので・・・)
  • ポエムばっかり

フレッシュでモダンな情報収集対象としては、良くないところしか出てきませんが、Qiita の記事を読んで理解が深まったことも過去にはあるので、一概に全てを批判しているわけではありませんが、実務的な情報を集める際には向いていません。

ただ、@lotz さんの記事は実用的なオリジナリティ溢れる情報を初心者向けにわかりやすく書いてあり、記事のメンテナンスもされている (しかも楽しい!) のですごくオススメです。個人的に好きな記事へのリンクを貼っておきます。

Advent Calendar は楽しいですね!

Haskell-jp

haskell-jp.png

Haskell-jp には日本語の Haskell 情報が豊富にあります。色んな情報があるので、紹介したいと思います。

  • ブログ は誰でも投稿できるので、色んな人が様々な情報を投稿してくれます。情報の質も高いので、新しい投稿があれば必ず見てます。
  • Antenna は Planet Haskell の日本語バージョンです。僕はあまり使いませんが、まだまだ可能性を感じるサービスです。
  • Wiki のコンテンツはまだまだ不足している感が否めませんが、内容は非常に充実していると思います。更新頻度は低いので毎日チェックする必要はありませんが、毎月ぐらいのスパンでチェックすると良いと思います。

実用的な情報が充実していますが、更新頻度はそれほどでもありません。僕はブログがPRで出た段階でチェックしているので、あまりサイトには行きませんが、最初のうちは色々と見て回ると面白いと思います。

Haskell 俯瞰まとめ

スクリーンショット 2018-12-01 16.52.27.png

Haskell 俯瞰まとめ は lotz さんがまとめている Haskell 情報です。

あまり話題に上がることは少ないですが、このまとめは凄いです。みなさんぜひ活用しましょう。新しい情報もどんどん追加されているので、古いものから新しいものまでかなり充実しています。また、カテゴライズされている点も利用者側としては使いやすいポイントだと思います!

影ながら応援しています。

ブログ

僕が良く見るブログの一覧です。

今も定期的にHaskellの記事について更新されていて、なおかつ他では書いてないようなことがバンバン書いてあるので非常に良いですよ。(ライブラリの作者やアプリケーション作ってる組織に偏ってますね・・・)

PR

スクリーンショット 2018-12-01 16.57.52.png

Haskell の実用的な情報があまりにも少ないので自分で作ろうと思って出来上がったのがBIGMOON Haskeller's BLOGです。

モチベーション

  • 自分が忘れてしまうので、記事に残しておく
  • アルバイトの人に何回も説明するのが面倒なので、記事に残しておく
  • アルバイトの人に説明するために良い文献がないので、記事に残しておく
  • 海外の良い記事を翻訳して共有するために、記事に残しておく
  • Haskell のアプリケーション開発に必要な記事については、随時メンテナンスを行う

コンテンツ

最近あんまり更新してない感じがありますが、一応色々揃ってるので良かったら使ってください。

また、Qiita の記事は以下の2点のみ、メンテナンスし続けています。Haskell を実用的に使ったことが無い大学生アルバイトの人に、「とりあえず読んでおいて。」ぐらいのカジュアルな感じで何とかなるぐらいの内容になっているのでご活用ください。

OSS への参加

Haskell のライブラリはほとんど GitHub にホスティングされているという話は先ほどした通りです。そのため、自分が使っているライブラリのバグ修正や機能追加などを簡単に issue で報告したり、PR を出したりできます。

実際に開発に協力することで、コードを読む能力が鍛えられたり、海外の憧れ Haskeller にレビューしてもらったり、めちゃちゃ楽しいですよ。(英語でコミュニケーションを取らないといけないので、その部分だけがつらいですが、頑張って参加しましょう)

最初のうちはなかなか参加するタイミングが見つからないと思います。(機能にも満足してるし、バグに遭遇しないので)

だけど、実際に開発を進めて行くと必ず遭遇する問題だと思います。例えば弊社ではこのような具合で色々な問題に遭遇しました。(Yesod 関連ばかりですね・・・)

中には自分たちだけで直して使う場合もあるとは思いますが、弊社はコミュニティ全体に恩恵があると感じれば会社の業務の一貫として、積極的に issue や PR を出しています。

実際の開発に参加することが一番良い情報収集方法だと思いますので、まずは Haskell を使ってみてください!

まとめ

  • GitHub, Weekly Haskell, Reddit めっちゃ便利
  • Haskell-jp slack に参加しましょう!
  • Haskell の OSS プロジェクト に参加しよう!

いっぱい書きましたが、振り返ると Haskell のストーカーみたいな感じがしますね・・・。あと個人的にメールが苦手なので Mailing Lists 系は見てないです。(見た方が良いのかな?)

あとは、stackhie は何となく daily ビルドしてます。ビルドに失敗した時にどうやって直したら良いかといった事がわかったり、バグってる場合はPR出せるので良いですよ。

また、GHC の情報収集術は別にあるため、ここでは紹介しませんでしたが、いつか機会があれば記事にしたいと思います。