2017年4月13日
今日は、Ona について、Peter Lubell-Doughtie氏にお話を伺います。
ClojureとClojureScriptを使い始めてどれくらいになりますか?
OnaではClojureとClojureScriptを3年間使用しています。データ収集および管理プラットフォームのフロントエンドを更新した際に使い始めました。私は約5年前にCascalogを通じてClojureを知りました。学部時代にLISPを学び、エージェントのコミュニケーション言語を進化させるためのS式を生成する遺伝的プログラミング研究プロジェクトで使用して以来、LISPに親近感を持っています。
ClojureまたはClojureScriptを使用しているチームの規模はどのくらいですか?
常時4〜6人のチームメンバーがClojureとClojureScriptのプロジェクトにフルタイムで取り組んでいます。これは、エンジニアリングチームの約3分の1に相当します。エンジニアの1人が作成したemacs設定であるMeowなど、さまざまなエディターを使用しています。
ClojureまたはClojureScriptを使用してどのような製品またはサービスを構築していますか?
私たちは、人道支援および国際開発機関を対象としたデータ収集、管理、および視覚化プラットフォームを構築しています。たとえば、世界食糧計画やユニセフなどのこれらの組織は、当社のプラットフォームを使用して、現場で継続的な調査を実施しています。現場データはリアルタイムで過去のデータとマージされ、投資または実行中のプロジェクトの包括的なビューが構築されます。これにより、組織は問題が発生したときに確認し、調整を行うことができます。たとえば、医療従事者を人員不足の診療所に派遣したり、より深刻な被害を受けた建物に検査官を派遣したりします。ClojureおよびClojureScriptコンポーネントは、すべてのデータ永続性と取得がAPIクライアントであるMiliaを介して媒介され、ClojureScriptデータビューアであるHattiとVega-viewerで視覚化されるステートレスなレイヤーです。
最も気に入っているClojureまたはClojureScriptライブラリは何ですか?
Clojure側では、すべてのアセットをバンドルして最適化するRingミドルウェアOptimusから大きな恩恵を受けています。
ClojureScript側では、Omの初期の採用者であり、リアクティブビューのレンダリングに幅広く使用しています。Hiccupベースのマークアップで使用しており、その一部はClojureと共有されています(もっと共有したいと思っています)。
ClojureとClojureScriptの両方で使用するライブラリについては、i18nライブラリTempuraとカスタムヘルパーを組み合わせて、すべてのテキストを翻訳ファイルからロードしています。また、ビルドステップで、KibitやBikeshedなどの多くの静的アナライザーを実行して、重複を検出したり、統一されたコードスタイルを強制したりしています。
ClojureまたはClojureScriptを使用することで、最も価値があると感じることは何ですか?
一貫性と純粋さの近似が、私たちにとって最も価値があります。ClojureとClojureScriptを使用すると、フロントエンドやバックエンドなど、コードベースのどこを見ても、同じ単純な規則に従っていることがわかります。データフローをトレースし、変換がどのように行われているかを明示的に確認できます。
これらの機能は、経験の浅いエンジニアや関数型プログラミングの経験がないエンジニアと協力する場合にも役立ちます。Clojureでの作業は、厳密な静的アナライザーにより、問題解決に対する可能なアプローチを大幅に制限し、多くのアンチパターンを排除します。
あなたのスタックは何ですか?
私たちは、リクエストをアプリケーションサーバーに渡すためのリバースプロキシとしてNGINXを使用しています。アプリケーションサーバーは、RingベースのJettyサーバーを実行し、Compojureを使用して一連のビューにリクエストをルーティングします。サーバー側では、Enliveを使用し、時折Hiccupを使用してビューをレンダリングしています。すべてのスタイルはSCSSで記述されています。クライアント側では、Omを使用して、ルーティングにSecretary、マークアップにSablonoを使用してReactビューをレンダリングします。クライアント側からAPIデータとやり取りするために、core.asyncベースのAPIクライアントであるMiliaを使用しています。
テストのために、継続的インテグレーションビルドを実行するために、自己ホスト型のDroneを使用しています。コードは、テストスイートを実行する前に、Sass-lint、Bikeshed、cljfmt、Eastwood、Kibit、および本番ClojureScriptビルド(高度なコンパイルに関する問題があれば警告します)を通過する必要があります。ClojureのテストはMidjeで、ClojureScriptのテストはcljs.testで記述しています。
ClojureまたはClojureScriptを使用することがあなたのビジネスにとって価値があるのはなぜですか?
当社のプラットフォームは、子供と妊産婦の健康、ガバナンス、農業、インフラへのアクセス、政府の責任を向上させるために世界中で使用されているため、当社のプラットフォームでの間違いは重大な結果をもたらします。たとえば、ワクチン接種数が減少し、必要なリソース(水や毛布など)の配布が減少します。文字通り、私たちのミスは救われる命が少なくなることを意味します。ClojureとClojureScriptを使用すると、世界中からのリアルタイムデータストリームの処理方法が簡素化され、ミスを最小限に抑えることができます。私たちと一緒に働きたい場合は、ご連絡ください。
Clojureのストーリーを共有したい場合は、このフォームに記入してください。