読者です 読者をやめる 読者になる 読者になる

東京Node学園祭2016の1日目に参加しました

少し書くのが遅くなりましたが、東京Node学園祭2016の報告をします。

f:id:ars_sasaki:20161228012858j:plain

11月12,13日@渋谷。
http://nodefest.jp/2016/

アルスからの参加メンバーは武澤さん、三上さん、大澤さん、そして私佐々木の4人でした。

会場は大変おしゃれな雰囲気。100人以上の意識高い系が土曜の朝から集まって、やる気満々。Mac率9割。

この学園祭は2つのセッションが同時並行で開催され、どちらかを選んで自由に参加する形でした。
1つはNodeSchool。Node.jsに関する学習(自習)。私はこれに参加しました。
もう1つはNode.jsについてのディスカッション?よくわからないです...。

※Node.js...JavaScript実行環境の1つ。

NodeSchoolはWorkShopperという学習プログラム使って行いました。
このWorkShopperはコマンド一発でダウンロード・インストールすることができ、
コマンドラインから起動することですぐにでも学習を開始することが出来るようになっています。

WorkShopperには様々な種類が存在するようです。
例えば、javascripting、learnyounode、git-itなどなど...。
内容はそれぞれJavaScript入門、Node.js入門、Git入門にあたるようです。

武澤さん、大澤さん、佐々木はlearnyounodeを学習することにしました。
三上さんは少しNodeSchoolをやった後、ディスカッションの方に参加されたようです。

learnyounodeはNode.jsの基礎を学ぶもので、コンソール出力、同期処理、非同期処理、httpサーバの作成など全部で13個の課題が存在します。
課題を選択するとプログラムで実現すべき事項が表示されるので、それをもとにプログラムを組み、検証コマンドを使って作成したプログラムの動作を確認していくスタイルでした。

たった13問ですが、なかなか苦戦しました。非同期?コールバック?(日本語さん!?)
学園祭1日目のほとんどすべてをlearnyounodeの学習に充てましたが、結局全ての問題を完了することはできませんでした。
うーん、修行が足りない。

NodeSchoolのあとは、Nodeに関するライトニングトークがありました。
色々な話題があって、結構面白かったです。
仕事でJavaを使っていて、趣味でNodeをやっているという方が結構いましたね。

あとグッズ?ステッカー?をゲットしました。

f:id:ars_sasaki:20161228014638j:plain

こういったイベントに参加して、収集していくのも面白いかもしれませんね。

最後にWorkShopperを使って学習を開始するまでの手順を紹介します。

  1. まずNode.jsをインストールする。 https://nodejs.org/ja/ にアクセスし、 インストーラーをダウンロードして実行する。
    (これで、nodeコマンドとnpmコマンドが使用可能になります)

  2. 学習したいWorkShopperを探す。 https://nodeschool.io/ja/ にアクセスする。
    ここから目当てのWorkShopperを探し出し、記載されているインストールコマンドを実行する。
    (これで、WorkShopperを起動するコマンドが使用可能になります)

  3. WorkShopperを起動する 2で選んだWorkShopper名をページ上でクリックし、GitHubのページへ飛ぶ。
    WorkShopperの起動方法が記載されているので、それを実行する。

これで、学習を開始することができます。
ちなみにlearnyounodeの「モジュラーにしましょう」という問題ではこんなプログラムを作りました。

var mymodule = require('./mymodule.js');
var directory_name = process.argv[2];
var extention = process.argv[3];

mymodule(directory_name, extention, function(err, data) {
  if(err)
    return console.error("ファイル読み込みエラー", err);
  data.forEach(str => console.log(str));
});


module.exports = function(directory_name, extention, callback) {
  var fs = require('fs');
  fs.readdir(directory_name, function(err, data) {
    if(err)
      return callback(err);
    var path = require('path');
    callback(null, data.filter(str => path.extname(str) === "." + extention));
  });
};

問題内容は、コマンドライン引数で指定されたディレクトリ内のファイル一覧を取得し、 拡張子でフィルタリングして全て出力するというものでした。
モジュール化する部分や非同期処理の使い方など、結構難しかったと思います。

Node学園祭、とても楽しかったです。
Nodeをバリバリ使いこなせるよう、これからも少しずつ触っていこうと思います。
皆さんも是非やってみてくださいね!