kmrmshk について

よろしくお願いいたします!!

入社のごあいさつ

皆様はじめまして、今年6月に入社しました kmrmshk ともうします。

これまでは主にウェブサイトのコンテンツ制作にかかわることが多く、今は懐かしいフルフラッシュサイトであったり、JavaScriptとCSSを駆使してステートフルなウェブサイト、ウェブアプリの開発に携わらせていただきました。
また、ネイティブアプリ開発にも興味があり、Objective-CやAIRによるiOS/Androidのアプリ開発も行って参りました。

最近は自宅サーバーにてインフラまわりの環境構築や、Node.js、Jenkinsなどを活用した自動化をいろいろ試すのが趣味となっています。さらには、dockerやvagrantによる仮想化技術を活用して効率の良い環境構築方法を探るのも楽しみの一つです。

好きなCMSはMODX、好きなLinuxディストリビューションはDebianです!
最近SublimeText3をメインエディタに鞍替えしました。Sublimergeは神ツールです!
なにとぞよろしくお願い致します!

さて、早速なのですが普段の生活で配列やオブジェクトを操作するとき、処理が地味に面倒なときがあるかと思います。
例えば連想配列に対して、要素だけを取り出してから配列として扱いたい!など・・・

// こんな連想配列を・・・
hash = {
  1: {hoge: "hello"}, 
  2: {hoge: "world"},
  3: {hoge: "!"}
};

// 必要な要素だけ抽出して配列として宣言したり・・・
var props = [];
for(var item in hash){
  var obj = {};
  obj[item] = hash[item];
  props.push(obj);
}
/*
// propsの中身
props = [
  {hoge: "hello"},
  {hoge: "world"},
  {hoge: "!"}
];
*/

// 配列要素を取り出して文字列として操作したいとき
var props = [];
for(var item in hash){
  props.push(hash[item]['hoge']);
}
console.log(props.join(" "));
// [output] hello world !

と、いうことがお料理を作っている最中や、洗濯物を干すときについつい出てくるかと思います。
でも、毎回 for…in でまわすのはちょっと・・・、とか、「hoge」というキー文字列で指定して値取り出すのはイケてないなんて思ってらっしゃることでしょう。

そんな時に、手軽に扱えるユーティリティライブラリ「Lodash.js」というのがあります。
もともとは JavaScript のライブラリとして「Underscore.js」という、これまた便利なオブジェクト操作のユーティリティライブラリがあるのですが、その派生ライブラリとして登場しました。
このライブラリを利用すると、次のように可読性があり、メンテナンス性の高いコードが書けるようになります。

hash = {
  1: {hoge: "hello"}, 
  2: {hoge: "world"},
  3: {hoge: "!"}
};
// 必要な要素だけ抽出して配列として宣言します(lodash版)
var props = _.map(hash, function(item){return item;});
/*
// propsの中身
[
  {hoge: "hello"},
  {hoge: "world"},
  {hoge: "!"}
]
*/

// 配列要素を取り出して文字列として操作したいとき(lodash版)
console.log(_.map(hash, function(item,key){
   return _.chain(item).groupBy().keys().first().value();
}).join(" "));
// [output] hello world !

実装で地味に時間のかかりがちなコレクション処理が、lodash(underscore)によってかなりシンプルで扱いやすいものになるはずです!

この便利なライブラリは、有志によってJavaScript以外の言語でも提供されています。
・PHP 「underscore.php
・Objective-C 「underscore.m
・Python 「underscore.py

RubyやSwiftでは最初からコレクションメソッドが充実しているので、導入しなくても標準で扱えます(さすがRuby・・・)
また、C++では標準テンプレライブラリとして搭載されています。

長文失礼しました。
普段の生活で何らかのご参考になりましたら幸いです。