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

ゼロからの技術ブログ

初学者がゼロの状態から理解するまでの軌跡を書いていくブログ

ゼロからのNode.jp Vol.1.1

前回は軽くNode.jsの紹介をしたので、今回は環境構築までを実践。

環境

MacOS Sierra 10.12.3

なにはともあれNode.jsをインストール、と言いたい所だがアップデートが頻繁に起こるようなのでNVM(Node Version Management)でバージョン管理を行った方がいいとのこと。

下記コマンドを実行すればhome配下に.nvm/が作成される。

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7149 100 7149 0 0 13775 0 --:--:-- --:--:-- --:--:-- 13801


=> Downloading nvm from git to '~/.nvm'
=> Cloning into '~/.nvm'...
remote: Counting objects: 6082, done.
remote: Compressing objects: 100% (10/10), done.


eval "$(rbenv init -)"
remote: Total 6082 (delta 2), reused 0 (delta 0), pack-reused 6072
Receiving objects: 100% (6082/6082), 1.74 MiB | 148.00 KiB/s, done.
Resolving deltas: 100% (3752/3752), done.
* (HEAD detached at v0.25.4)
master

=> Appending source string to /Users/morototo/.bash_profile
=> Close and reopen your terminal to start using nvm


このまま実行するとcommand not foundになるので、.bash_profileを以下に設定

$ vi ~/.bash_profile

[[ -s ~/.nvm/nvm.sh ]] && . ~/.nvm/nvm.sh
nvm use default
npm_dir=${NVM_PATH}_modules
export NODE_PATH=$npm_dir

変更内容反映させるには下記コマンドの実行

$ source ~/.bash_profile

N/A: version "default" is not yet installed

N/A: version "default" is not yet installedが表示されるのはまだNode.jsがインストールされていないからなので無視。

以下インストールできるバージョンを検索、今回は最新のv0.12.18をダウンロード

$ nvm ls-remote

$ nvm install v0.12.18
######################################################################## 100.0%
Now using node v0.12.18 (npm v2.15.11)

実行は

nvm use v0.12.18

すっごい簡単

参考資料

http://qiita.com/_daisuke/items/fb81f45314c571a678cc

http://qiita.com/hirokishirai/items/5a529c8395c4b336bf31

ゼロからのNode.jp Vol.1.0

この前技術系の人と話をしている時にNode.jsの話になった。

聞いたことはあるけどさてなんのことやら。

 

ということで今回はNode.jpについてメモメモ。

ドキュメント以上のことは書いてませんので悪しからず。

2秒で読める内容になっております。

続きを読む

ゼロからCircleCI Vol.1.0

今回はCircleCIについて調べていく。会社の方からこれ必要になるよーといわれたはいいものの初めて聞く単語に困惑。DevOps基盤開発で使うらしい。はて。

 

今日の目的

CircleCIの概要を調査する

Rails環境にCircleCIの導入方法を把握する

・まとめ

 

CircleCIの概要

そもそもCIって何ってところなので、調べました。

CIについては以下の通り。

 

継続的インテグレーション【CI】(Continuous Integretion)

ソフトウェア開発において、ビルドやテストを頻繁に繰り返し行うことによって、問題の早期発見・開発の省略化・効率化を図る開発手法。

 

ではCircleCIの概要についてまとめていきます。

https://circleci.com/

CircleCIは上記の継続的インテグレーションにさらに拡張させた継続的デリバリーを実現したWebサービスです。Gitのリポジトリと連携する事ができ、リモートリポジトリにPushする度にテストが行われ、成功したらデプロイする事が一元的に管理する事ができます。

 

継続的デリバリー

継続的デリバリーとは?– アマゾン ウェブ サービス

コードの変更が発生すると、自動的にビルド・テスト・デプロイが実行されるというもの。

 

CircleCIの導入方法

導入方法については以下のURLがとても参考になった。やることはGitとリポジトリ作成・環境変数の設定・SSHの設定くらいなのでタイトル通りサクッと出来た。次の職場がSlackを使用しているとの事だったので、その設定も記載されているのでありがたい。

Rails環境にCircleCIをサクッと導入する方法 | スペースマーケットブログ

 

 

■まとめ

CircleCIは継続的デリバリーを実現するWebサービス。導入する事で開発の効率化・省略化を実現する事ができ、なおかつバグの早期発見が期待できる。

 

 

■参考URL

CircleCI入門の入門 – Simple IT Life

http://bashalog.c-brains.jp/16/10/11-100000.php

 

ゼロからHadoop Vol.1.0

 前回のElasticseachを調べていくうちにHadoopという言葉に出会った。

なんとなく聞いたことはあって「なんかいっぱいのサーバに分散処理させてる」くらいの認識しかなかったのでHadoopとはなんぞやというコトをまとめていきたい。

 

■目標

Hadoopを理解する。

Hadoopの概念を理解する。

Hadoopの活用方法

 

Hadoopを理解する。

Hadoop とはオープンソースとして公開されている大規模・大容量データの分散処理技術、ソフトウェア。

Web検索技術に行き詰まりを感じていたGoogleが論文として「Google File System」「Google Map Reduce」を発表、後にDougCutting氏主導の元、Javaで実装されたのがHadoopのようです。

 

Googleが発表した「Google File System」、「Google Map Reduce」 の論文はどういう理論なのかを調べてみました。

 

Google File System【分散ファイルシステム】とは

分散ファイルシステムとはコンピュータネットワークを通して共有しつつファイルにアクセスできるシステム。

 

Google Map Reduceとは

コンピューター機器のクラスター上でも巨大なデータセットに対する分散コンピューチングを支援するフレームワーク。上の分散ファイルシステムを支えるフレームワーク的な感じかな。

 

Hadoopの概念を理解する

Hadoopは三つのシステムから成り立っている。

上記の二つの論文を参考に組み立てられたHadoop Distributed File SystemとHadoop Map Reduceと、構造化データををサポートしたDB(HBase)。

 

分散処理する為のHadoop Map Reduce

MapReduceは「Map」「Reduce」「Shuffle」三つのフェーズから成り立っている。

「Map」ではそれぞれのデータにkey, valueを割り振り

「Shuffle」で割り振ったデータを統合・結合する。

「Reduce」で結合・統合したデータの処理を行う。

 

分散ファイルシステムHadoop Distributed File System(HDFS

HDFSでは管理するファイルの読み書きを高速化する為、大きなファイルを一定の大きさに分割し、複数の記憶装置に分散して保存、読み込みや書き込みだけを並列に実行できるようにしている。

どのファイルをどのように分割し、どの装置に格納したかを一元管理する「NameNode」、分割されたファイルを保存する「DataNode」の二つから成り立つ。

 

Hadoopの使い所

Hadoopの強みは数時間かかるようなバッチ処理でも複数マシンに分散して処理をし、高速化きるので、大量のデータを計算・分析する処理に向いている。

レコメンデーションの計算や統計解析などの場面では大いに役に立つ。

 

 

参考記事

https://www.ibm.com/developerworks/jp/web/library/wa-introhdfs/

Hadoop入門に最適なチュートリアルサイトまとめ・比較7つ|#mayonez [マヨネーズ]

 

 

 

 

 

 

ゼロからElasticseach Vol.1.0

Elasticseachを無知から始めるにあたって、メモ。調べていくうちにどこから手をつけていいかわからなかったので全体像から把握してくことにした。

 

■今日の目的

・Elasticseachの概要を知る

・使い所を把握する。

Elasticseachの概念を知る。

 

■Elasticseachの概要を知る

ElasticseachとはJson形式でのリアルタイム検索エンジン

Json形式でログを吐出し、RESTfulなAPIから検索結果をJson形式で受け取る事ができる。

 

調べるにあたってElasticseachで何が実現できるかを調べていく内に「全文検索」 

という技術がふんだんに使われているようだ。ここのチュートリアルを参照した方が一番分かりやすかった。

 

code46.hatenablog.com

 

node,index,typeとかmappingsの概念とかをぶっとばしてもなんとなく感触はつかめるはず。データを登録して、スキーマを作ってクエリを投げれば検索結果をjsonで返してくれる、そんな感触はつかめた。

 

 

■Elasticseachのつかいドコロ

データを素早く検索して、分析する事が出来るのでアプリとかで大量のデータを効率的に処理する時とかに使えそうな感じ。

dev.classmethod.jp

最後にちょろっと具体的に書いてあるのを発見。

 

 

■Elasticseachの概念を知る

基礎知識として検索技術の知識は必要という事で全文検索技術のまとめは以下を参照した。

www.atmarkit.co.jp

 

Elasticseachにはたくさんの概念があるので、それはまた次回に。

以上、導入の導入編。

 

 

参考URL

自分流Elasticsearch入門 - $shibayu36->blog;

Elasticsearchチュートリアル - 不可視点

http://sssslide.com/speakerdeck.com/johtani/elasticsearchru-men