世界を旅して人生を楽しもう。コメントを書く2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介2020年もWeb業界の進歩は止まりません。今回は、JS周辺のバックエンド寄りの注目技術である「Deno」と「Entropic」をざっくり紹介します。2025)」という面白い動画を見つけました。2020年から5年後までのWeb業界の予測の動画で、ざっくり言うと、以下の4つの予想が示されています。詳しくは実際に動画を見てみてください。この動画の(1)で、なぜか触れられていなかったのですが、TypeScriptが今後主流になっていくだろうという予想の背景として、NodeJSの作者がTypeScriptのランタイムとして開発している「Deno」の存在があるはずです。ネクストNodeJSと言えるものなので、今回紹介することにしました。2019」で発表された「Entropic」という分散型のパッケージレジストリの話題も出ており、会場の誰も聞いたことがなかったようなので、これも紹介することにしました。いうことで、今回は多くの人が書いている2020年のフロントエンド寄りの記事に飽きた人向けに、バックエンド寄りで注目すべき技術「Deno」と「Entropic」をざっくり紹介しておきます。Denoの紹介まずは、ネクストNodeJS「Deno」の紹介です。Denoとは?「Deno」とは、JavaScriptとTypescriptを実行するための新しいランタイムであり、V8/Rust/Tokio/TypeScriptで作られています。Spring」にて説明されています。(同じスライド使っていろいろなところで登壇していますね。)NodeJSが抱えている、(1)貧弱なモジュールシステム、(2)レガシーAPIのサポート、(3)セキュリティ問題、を解決し、楽しく生産的な実行環境を作ることが現在の目的です。2018」で語っている反省に起因しています。試すそれでは、2018年にプロトタイプと言っていた「Deno」が2020年現在動くのか試してみましょう。インストールするまずは公式インストール手順に沿ってインストールします。3.7.2TCPサーバーを書く公式マニュアルを見て、簡単なTCPサーバーを書いてみましょう。conn);}エコーしてみるTCPサーバーを実行します。0.0.0.0:8080エコーされるか確認します。Deno!OKですね。自動的でコンパイルされて実行されるのは快適ですね。「--allow-net」は外部のネットワークにアクセスする事を許可するためのフラグです。「Deno」はセキュリティを意識してい実装されているので、デフォルトでサンドボックス上で実行されるようになっており、外部のファイルシステム、ネットワーク、スクリプトの実行、環境変数にアクセスできないようになっています。stable」のようですが、試す分には大丈夫なようです。気になる人は遊んでみてください。次に、分散型パッケージレジストリ「Entropic」の紹介です。registry)であり、新しいCLI「ds」も付属されています。2019」で語られています。NPMを会社化した経験から、中央集権型のサービスはお金がかかり過ぎる問題があり、かつ、パッケージレジストリをプライベートカンパニーがコントロールすべきではないと。そこで、新たなOSSとして、分散型のパッケージレジストリである「Entropic」を発表するに至ったというわけです。Registryとガッツリ競合しているので、やはりこのままでは会社としては短命な雰囲気です。試すそれでは、「Entropic」で自分のレジストリを作って、、、と思ったのですが、正直取り上げるのが早すぎた感があり、公式ドキュメントは未完なので、「ds」コマンドを少し試してみるだけにしようと思ったのですが、、、インストールも失敗して動きませんでした。残念ながら試す段階にも達していないようです。「Entropic」は発想は面白いのですが、実用化されるのはまだまだ先という感じですね。興味がある人はぜひコントリビュートしてみてください。最後にいかがでしたか?「Deno」も「Entropic」も2020年に正式にリリースされるかは微妙なくらい新しいOSSですが(まだ数年かかりそう)、今後のJSの発展に寄与する技術だと思います。これらを知っていれば、バックエンド寄りのJS周辺の最新技術の動向に取り残されずに済むかもしれません。ちなみに、フロントエンドの注目技術は個人的には「Svelte」なのですが、それは別の記事にします。~ラムダ式、ストリーム、関数型インターフェース~Java8からラムダ式による関数型プログラミングが記述できるようになりました。今回は、ムーブメントに乗り遅れた人向けに、改めてJavaで関数型プログラミングの基礎を紹介します。はじめに近年は関数型プログラミングが新しいパラダイムシフトとなっており、あらゆるプログラミング言語で関数型プログラミングをサポートしています。ここで言う関数型プログラミングとは、あくまでラムダ式による新しいコーディングのやり方の事です。そもそもの関数型言語の概念を知りたければHaskellを学ぶのが一番だと言われていますが、今回はそういう話は扱いません。Interfaces)を使ってプログラミングしたい人向けです。それでは、Javaで関数型プログラミングに入門していきましょう。ストリーム(Stream)を使ってみようjava.util.streamのパッケージで基本的なものを使ってみましょう。forEach「forEach」でfor文を使わなくても流れるようにループ処理を記述できます。.forEach(System.out::println);filter「filter」は条件に合うデータだけになるようにフィルターをかけます。.forEach(System.out::println);map「map」はそれぞれのデータに共通の処理を記述できます。.forEach(System.out::println);reduce「reduce」はデータをまとめます。45787collect「collect」はストリームを再利用できる型に変換します。6]takeWhile「takeWhile」は、ストリームの最初から条件に合うものを抽出していき、条件が合わなかったところまでの範囲で取り出します。45]distinct「distinct」は重複を省きます。22]sorted「sorted」はソートします。「Comparator」を渡すことで、ソート方法を指定できます。1]flatMap「flatMap」はストリームのデータをフラットにします。Zuckerberg]range/rangeClosed「range」と「rangeClosed」で指定した範囲の数字を扱えます。4999999950000063「parallel」はマルチスレッドで並列処理させます。iterate「iterate」は繰り返し処理を記述できます。total:35「peek」はストリームの途中の値を抜き出せます。ストリームのデバッグに便利です。allMatch/anyMatch/noneMatch「allMatch」は、全てのデータが条件に合っているかどうか、「anyMatch」は、データのどれかが条件に合っているかどうか、「noneMatch」は、全てのデータが条件に合っていないかどうか、を判定します。Interfaces)を知ろうjava.util.functionのパッケージにあるLambda式やメソッド参照で使う型を見ていきましょう。Predicate「Predicate」は、1つの引数を与えて、booleanの値を返します。3]Function「Function」は、1つの引数を与えて、1つの値を返します。6]Consumer「Consumer」は、1つの引数を与えて、voidで処理します。6BinaryOperator「BinaryOperator」は、2つの引数を与えて、1つの値を返します。Optional[67]Supplier「Supplier」は、引数を与えずに、1つの値を返します。randomInteger.get();UnaryOperator「UnaryOperator」は、1つの引数を与えて、1つの値を返します。Functionとの違いは引数と戻り値の型が同じというところです。360]BiPredicate/BiFunction/BiConsumer「BiPredicate」は、2つの引数を与えて、booleanの値を返します。「BiFunction」は、2つの引数を与えて、1つの値を返します。「BiConsumer」は、2つの引数を与えて、voidで処理します。Luffy!以上、ここまで分かれば、リファレンスだけで使いこなせるでしょう。「Files.lines」を使うことで、ファイルを読み込んでストリームで扱えます。以下のCSVファイルを準備して読み込んでみます。Zuckerberg行ごとに読み込んで、カンマで分割し、それぞれを出力してみます。Zuckerbergファイル操作も簡単になりましたね。最後にいかがでしたか?これでJavaで関数型プログラミングが記述できるようになったのではないでしょうか。あとは、java.util.streamおよびjava.util.functionのパッケージを見ていろいろ試してみると良いでしょう。Guideの適用~Reactの開発環境でEslintおよびPretteirを設定する方法を紹介します。はじめにJavaScriptのコードフォーマッターと言えば「Eslint」と「Pretteir」を組み合わせるのが主流です。Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)」をインプットにして、React用にゼロからEslintおよびPretteirを設定する方法を紹介します。それでは、ReactにEslintおよびPrettierを設定していきましょう。JavaScriptのコーディングスタイルJavaScriptのコーディングスタイルは以下の3つが代表的です。Styleどれを使うのがベストか?ということになりますが、コーディングスタイルは主観に大きく左右されるので、綺麗な解を出すのは難しいです。強い個人的な主張がなければ、それぞれのコーディングスタイルの特徴を理解した上で、どれが人気か?ということを見て判断するのが良いでしょう。尖ったスタイルは後でEslintとPretteirでカスタマイズできますからね。standard」を見てみましょう。このサイトの結果では、Airbnbのコーディングスタイルが一番人気があり良さそうです。Guide」を適用します。以下の設定が事前に完了している必要があります。Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)」の設定が完了していることEslintおよびPretteirのモジュールをインストールするReactのプロジェクトにEslint、Pretteir、関連モジュールをインストールします。lint-stagedPretteirの設定をするPretteirの設定ファイルを作成し、設定を書きます。true,}流行りのセミコロン無しの設定にしています。設定ファイルのフォーマットは、Pretteirに限らず、JSON、YAML、JavaScriptが選択可能になっていることが多いですが、結局JavaScriptで設定ファイルを書くのが一番使いやすいと感じています。コメントが書けたり、設定を整理したい時に便利だからです。Eslintの設定をするEslintの設定ファイルを作成して、設定を書きます。},}自動作成された設定に、Babel、Flow、Jest、Pretteirのための設定を追加してあります。Webpackに設定を追加するWebpackで開発中にEslintを毎回実行するようにローダーの設定を追加します。},...}コミット時にリンターを実行する設定をするコミット時に必ずチェックするようにしておけば安心です。},...}以上で完了です。あとは、エラーがになる箇所があればルールに従って修正していってください。最後にいかがでしたか?これでゼロからReact用にEslintおよびPretteirを設定できるようになったことでしょう。AuthorKD世界を旅し日本を愛するエンジニア。大学でコンピュータサイエンスの楽しさを学び、日本の大手IT企業で働く中で、新しい技術やスケールするビジネスが北米にある事に気づく。世界に挑戦するための最大の壁が英語であったため、フィリピン留学およびカナダ留学を経て英語を上達させた。現在は日本在住でエンジニアとして働きつつ、次の挑戦に備えて世界の動向を注視している。このブログでは、エンジニアやデザイナー向けの技術情報から、海外に留学したい人向けの留学情報、海外に興味がある人向けの海外旅行情報など、有益な情報を提供しています。0.0010このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。