Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。Baatz氏(Better社の共同設立者)は述べている。彼は、Haskellを製品に対して使用した4年間をまとめている。Baatz氏の振り返りは、4つの視点から成り立っている。他社も使うべきか?以下は、あるシステムの構築を通して、Baatz氏が学んだ事の一覧である。このシステムは“毎週50万件以上のアクションをさばき、ダウンタイムやメンテナンスをせずに1年以上稼働し続けた”。Haskell自体は限られた知識でも扱える。高い生産性を達成するためには学ぶべきことがたくさんある。cabal-installは初心者には向かない。Stackは人生を楽にしてくれる。ライブラリ・エコシステムは“十分だが、すばらしいと言える程ではない”。遅延評価は、メモリ空間的複雑さに対する思考を要求する。Haskellの型システムは、リファクタリングやコードの拡張を容易にする。Haskellの型システムは不整合を検知するので、ユニットテストの必要性を減少させる。QuickCheckによる支援の効果も大きい。プログラマの採用は、想像していたより楽だ。たくさんのプログラマが、Haskellの使用に対して興味を持ってくれた。Baatz氏に対して取材を行った。あなたの記事から得られた事の一つとして、Haskellは、ほぼバグゼロのシステムを開発するためのツールであると言える、ということがあります。この点をもっと詳しく話していただけますか?私は、今回のシステムがバグゼロだ、とは言いません。何の障害も経験してはいません(1年以上の継続的稼働の結果として、です)。私たちのエンジニアリング・チームは、それだけの価値ある仕事をしました。言語と、それをどのように使うかという事は、おそらくそれほど大きな要因ではないでしょう。スタータのみなさんのために言うと、Haskellの型システムは、本当に高精度の整合性を保証してくれます(他の主流言語と比較しても確かなことです)。“ささいな”ミスによって起こっています。オブジェクトのフィールド・プロパティを変更した時、それを使っている全ての箇所を更新していなかった、などです。Haskellにおいては、あなたがどこを間違ったかをコンパイラが教えてくれます。あなたがオブジェクトの型を変更したら、その箇所と、以前からそれを使用していた箇所に不整合が表れるからです。この言語はさらに、強く静的な保証をするスタイルでのプログラミングを支援してくれます。あなたは文字列で受け取った設定をディクショナリ中に文字列として保存するとします。この設定を使用するとき、存在していない、あるいは不正なエントリに対処する必要があるとします。通常なら簡単なことですが、設定の型を細かく指定するとなると、大変です。その文字列が整数を表すかを確認しなければならないとしたらどうでしょう。あなたは、あちこちで似たような状況に出くわすでしょう。そのときミスは許されません。ミスすると、ディスクからの設定読み込みはもちろん失敗しますから、プログラムを中断するか、デフォルト値を使うかを選ぶことになるでしょう。別の支援機能としては、不変データと純粋性(副作用に対する制約)があります。不変データは安全に共有できますし、関数に値を渡すときも、どこかで変更されてしまう心配がありません。副作用に対する制約により、予測不能な処理(ファイル読み込みや、乱数を返す、入出力があるもの)をする関数は、明示的にマークされます。いった関数は、その手の関数からのみ使われる、ということを可能にします。これは良いプラクティスです。入出力系関数をシンプルに保ちますし、ほとんどのロジックを純粋関数内に記述することになりますから。これらは、プログラムに対する証明をより簡単にします。複雑度が増大していく場合には重要です。公平さを保つために言いますが、Haskellでは、おそらく、これまでの言語よりも、ある種のバグが発生しやすくなります。メモリ空間の利用に関するバグです。Haskellは遅延評価をします。これは、メモリ空間の複雑さの保証を難しくします。結果として“リーク”が発生するでしょう(本当のメモリリークではなく、巨大なメモリ使用が発生する、ということです)。これは、コントロール不能な欠陥、というわけではありません。注意して作業する必要はあります。他にもありますが、以上が主に言えることです。言語やコンパイラにチェックできないことは、もちろんたくさんあります。あなたの考えた認証モデルは健全なのか?あなたの考えた計算式は適切なのか?ウェブサイト上に適切なラベルを表示しているか?などです。あなたはTDD(テスト駆動開発)を行っていません。全体的なユニットテスト・カバレッジも測定していません。どのようなものが最も効果的でしたか?私たちは、テスティングに対して、実践的なアプローチをとりました。バグ発生にともなうコストよりも、テスト作成の方が安価である、と考えられるもののみテストを書きました。結果として、コード化したテストは、データベースを破壊する可能性のあるものに対してのテストでした。あと、大きなデプロイの前には、パフォーマンス/負荷テストを実施しました。開発中にはもちろんバグに出くわしましたが、コストのかかるものがあった、とは思えません。直せるものばかりでした。私たちは確信をもってリファクタリングを行っていました。重要なコードに対しても、テストコードなしで行っていたのです(ここでも、型システムに感謝、です)。付け加えると、型システムを、コンパイラによるテストスイートの一形態、と考えるのは有効だと思います。この視点に立てば、Haskellや他の静的型システムを持つ言語は、実のところたくさんの“テスト”をしているのです(毎回のコンパイルごとにテストをしているということです)。これらは単に、これまでテストと考えられていたものとは違う種類のものだ、というだけです。Haskellが、製品化までの期間短縮に対してアドバンテージがあるとすれば、どんな事がいえるでしょうか?Haskellはライブラリやツールのエコシステムを持っていません。RubyやJavaScriptには、そういったものがあります。Webプロジェクトを素早くセットアップしたりするものです。プロトタイピング段階においては、総じて遅い立ち上がりになります。これは、言語の本質的な欠陥ではないと思います。エコシステムは待ち望まれます。逆に言えば、Haskellは、製品として動作する必要のあるコードを素早く書き、変更することに対しては強力です。私たちはテストをほとんど書かずに、確実なリファクタリングを行えたのです。言い換えれば、Haskellは、初期導入費用は高めだが総所有コストは低めになる、ということです。初期導入費用はもっと下げられると思いますが、まだ私たちはそこまで実施していません。どのようにすれば、Haskellがより良い開発経験を提供してくれるようになるでしょうか?まず言えるのはライブラリでしょう。エコシステムは良いのですが、Java、Ruby、Python、やJavaScriptといったものほど豊かではありません。エコシステムは継続的に改善されており、昨年は大きな前進がありました。それでも、さらに高品質なライブラリやツールが本当に欲しいところです。これは、コミュニティの成長にともなって改善されていくでしょう。多くの企業がHaskellを製品に導入することによっても改善されていくでしょう(卵が先か鶏が先か、的な問題ではありますが)。一点、みなさんにできることが、ドキュメントの整備です。これは重要なのですが、忘れられがちです。たくさんのライブラリが、型は重視するのに、文書は貧弱です。私はさらに、高品質の汎用的な学習教材があれば有用だろうと思っています。徐々に改善されてきていますが、まだやるべきことはたくさんあります。最後に、良いIDEの話があります。ほとんどのHaskellerは幸せなvim/emacsユーザです。私は、Haskellの型システムを解釈できるモダンなIDEがあれば、導入障壁を引き下げ、生産性を飛躍的に向上させることができると考えています。IDEを提供するサーバの成果はいくつかあります(さまざまなテキストエディタやIDEをフックして動作するものです)。私よりこの事に詳しい人から学んだことから言うと、本当に良いIDEサーバは、コンパイラ自身にとっても自明でない変更を必要とします。なると停止時間が発生する可能性があります。将来的な改善一覧に含めると良いと考えている事として他には、言語の安定性があります。言語、および基本ライブラリは、その時々で変更が行われます。これにより、メンテナンスの負荷が増大します。これの良い面を言えば、言語が日々の経験を反映し、相対的にクリーンに保たれている、と言えます。個人的には、これはトレードオフであると思いますが、あまり賛成できる事ではありません。Better社は2012年に設立された。クラウドベースの学習プラットフォームを構築する会社である。System)との統合が可能である。Solutions社に買収された。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員��して、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。