【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章

Narimichi Takamura
Narimichi Takamura株式会社Topotal
JavaScript で学ぶ
関数型プログラミング
1章
Topotal 輪読会
髙村成道(@nari_ex)
2015/1/22
1.1 JavaScript に関する事実
関数型プログラミング言語をサポート
引数として関数を渡すことができる
[1,2,3].forEach(alert);
// アラート"1"がポップアップ
// アラート"2"がポップアップ
// アラート"3"がポップアップ
→ 引数に渡した関数に配列の要素を順番に渡して実行する
JavaScript の驚異的な柔軟性
JavaScript の三銃士
→ apply, arguments, call
apply メソッド
• すべての関数において実装されているメソッド
• 引数 1 つ目: this オブジェクト
• 引数 2 つ目: 配列
fun.apply(thisArg, array)
• 与えられた配列を関数の引数として渡して実行することがで
きる
apply メソッドを用いた例
function splat(fun) {
return function(array) {
// null を指定すると暗黙的にグローバルオブジェクトに変換される
return fun.apply(null, array);
};
}
var addArrayElements = splat(function(x, y) { return x + y });
addArrayElements([1, 2]);
//! 3
返り値として関数を返す関数
→ 関数型プログラミングの入り口!
arguments 変数
• すべての関数内で arguments ローカル変数にアクセス可能
• 関数呼び出し時に引数として与えられた値を保持
function func() {
for (var i = 0, l = arguments.length; i < l; i++) {
alert(arguments[i]);
}
};
func(1,2,3)
//! 1
//! 2
//! 3
call メソッド
apply と同様に、引数に与えられた値を関数に渡して実行
第2引数に、配列ではなく個別の引数を受け取る
fun.call(thisArg, [, arg1 [, arg2, ...]]);
call メソッドと arguments 変数を用いた例
• 任意の引数を渡すことが可能
function unsplat(fun) {
return function() {
return fun.call(null, _.toArray(arguments));
};
}
var joinElements = unsplat(function(array) { return array.join(' ') });
joinElements(1, 2);
//! "1 2"
joinElements('-', '$', '/', '!', ':');
//! "- $ / ! :"
1.1.1 JavaScript の制限
欠点
• 奇妙な仕様
• 安全性に欠けている
• グローバルスコープに依存している
• 命令型プログラミングをサポート
• 競合するライブラリの山
• 多くのモジュールが実装されたがそれぞれに互換性はない
命令型プログラミングと
宣言型プログラミング
例: 「レジの会計で合計値を計算する」
補足: 命令型プログラミング
1. 品物がカゴに残っていれば 2. へ、空であれば 5. へ進む。
2. 品物を取り出す。
3. 価格を合計値に足す。
4. 1. へ戻る。
5. 合計値を表示する。
→ 順番が異なる場合に破綻する
補足: 宣言型プログラミング
1. 合計値とは、カゴの中の品物をあるルールで処理した結果
• ルールA. 品物が0個の場合、合計値は0である。
• ルールB. 品物が1個以上の場合、合計値は、カゴの中の品
物1つの価格と、残りの品物の合計値を足した値である。
→ 順序関係なし、安全かつ簡潔
欠点はあるがしかし...
• 一定の規則を遵守することで一筋の光を見出すことができる
• 安全性が確保される
• コードベースのサイズに比例してスケーラビリティが増す
• シンプルでわかりやすく、テストしやすいコードになる
→ 本書では、それらを関数型プログラミングによって導く
1.2 関数型プログラミングを始めるた
めに
関数型プログラミングとは
値を抽象の単位に変換する関数を使用して行うプログラミング
であり、それらを使ってソフトウェアシステムを構築すること
1.2.1 なぜ関数型プログラミングが必
要なのか
オブジェクト指向型のシステム
• オブジェクトをたくさん組み合わせることでゴールを目指す
• 例: ボタンを押して情報を出すアプリケーション
• ShowButton → HiddenPanel → InfoPanel...
オブジェクト同士が互いに関連している
→ オブジェクトの変更や追加をしようとしたときに、システム
の状態を考慮する必要がある
関数型のシステム
• 関数を組み合わせて(合成して)値を変換していく
• 例: markdown → toHTML → postProcess → modifyDOM
• postProcessは、visit,post,addId,genId 関数で構成
機能追加時は新しい関数の動作を理解すればよい。
データ変換を繰り返し行うことでシステムを構築するのが関数
型プログラミング。
1.2.2 抽象単位としての関数
抽象化
抽象化の方法として、実装詳細を隠 することが挙げられる
ここでは、エラーや警告を報告するプログラムを考える
function parseAge(age) {
if (!_.isString(age)) throw new Error('引数は文字列である必要があります');
var a;
console.log("age を数値に変換しようとしています");
a = parseInt(age, 10);
if (_.isNaN(a)) {
console.log(["age を数値に変換できませんでした : ", age].join(''));
a = 0;
}
return a;
}
parseAge("42");
// age を数値に変換しようとしています
//! 42
parseAge(42);
// Error: 引数は文字列である必要があります
parseAge("frob");
// age を数値に変換しようとしています
// age を数値に変換できませんでした : frob
//! 0
サンプルコードの問題点
• エラー内容を変えたくなった時にそれぞれを出力する行を変
更する必要がある
• 情報、警告、エラーを使い分けたい場合も同様
関数に抽象化
functon fail(thing) {
throw new Error(thing);
}
function warn(thing) {
console.log(["警告 : ", thing].join(''));
}
function note(thing) {
console.log(["情報 : ", thing].join(''));
}
サンプルコード 改
function parseAge(age) {
if (!_.isString(age)) fail('引数は文字列である必要があります'); ☆
var a;
note("age を数値に変換しようとしています"); ☆
a = parseInt(age, 10);
if (_.isNaN(a)) {
warn(["age を数値に変換できませんでした : ", age].join('')); ☆
a = 0;
}
return a;
}
1.2.3 カプセル化と隠
オブジェクト指向言語の場合
データの要素のパッケージングにオブジェクトの境界を使用
メソッド経由でデータを操作することでデータをパッケージ化
関数型プログラミングの場合
クロージャを使ってデータをカプセル化して隠 する
1.2.4 動作単位としての関数
コンパレータ(comparator)
• 2つの値を引数に取る
• 1つ目の引数が2つ目よりも小さい場合: 負の値を返す
• 1つ目の引数が2つ目よりも大きい場合: 正の値を返す
• 1つ目の引数が2つ目よりも等しい場合: 0を返す
例: sort()
辞書順なので数字の大小に関係なくソートされる
[2, 3, -6, 0, -108, 42].sort();
//! [-108, -6, 0, 2, 3, 42]
[0, -1, -2].sort();
//! [-1, -2, 0]
[2, -3, -1, -6, 0, -108, 42, 10].sort();
//! [-1, -108, -6, 0, 10, 2, 3, 42]
comparator 関数を用いた場合
function compareLessThanOrEqual(x,y) {
if (x < y) return -1;
if (x > y) return 1;
return 0;
}
[2, -3, -1, -6, 0, -108, 42, 10].sort(compareLessThanOrEqual);
//! [-108, -6, -3, -2, -1, 0, 10, 42]
if (compareLessThanOrEqual(1,1)) cosolelog("同じか小さい");
// なにも表示されない
プレディケート(predicate)
常に真偽値を返す関数
function lessOrEqual(x, y) {
return x<=y;
}
if (lessOrEqual(1,1)) consolelog("同じか小さい");
// 同じか小さい
[2, -3, -1, -6, 0, -108, 42, 10].sort(lessOrEqual);
//! [42, 10, 0, -1, -2, -3, -6, -108] ← 逆順になってる
高階関数によるマッピング
関数を引数にとり、新しい関数を生成して返す関数
function comparator(pred) {
return function(x, y) {
if (truthy(pred(x, y)))
return -1;
else if (truthy(pred(y, x)))
return 1;
else
return 0;
};
[100,1,0,10,-1,-2,-1].sort(comparator(lessOrEqual));
//! [-2,-1,-1,0,1,10,100]
1.2.5 抽象としてのデータ
• 関数は、ある世界からある世界への橋渡しを行う
• 例: 文字列→数値, 文字列→配列, 配列→配列の組...
データを抽象的にとらえ、異なるデータへ変換することに意識
を集中させる
1.2.6 関数型テイストの JavaScript
有用な関数その1: existy()
• 存在しないことを判定する
function existy(x) { return x != null };
existy(null);
existy(undefined);
existy({}.notHere);
existy((function(){}());
//! false
existy(0)
existy(false)
//! true
有用な関数その2: truthy()
与えられた値が true とみなされるかどうかを判定する
function truthy(x) { return (x !== false) && existy(x) };
truthy(false);
truthy(undefined);
//! false
truthy(0);
truthy('');
//! true
existy, truthy の応用
true なら実行、それ以外なら undefined を返す
function doWhen(cond, action) {
if (truthy(cond))
return action();
else
return undefined;
}
Array#map
配列のそれぞれの要素に対して引数に与えた関数を実行し、
それぞれの実行結果を格納した配列を返す
[null, undefined, 1, 2, false].map(existy);
//! [false, false, ture, true, true]
[null, undefined, 1, 2, false].map(truthy);
//! [false, false, ture, true, false]
つづき
先ほどのコードでは、以下のようなことが行われている
• 関数を装った存在の抽象の定義 (existy)
• 既存の関数を使って構築された真値の抽象の定義 (truthy)
• これらの関数を他の関数のパラメータに渡すことによる新た
な動作の実現 (truthy, existy と map の組み合わせ)
これこそが関数型プログラミング!!!
1.2.7 実行速度について
関数型プログラミングで記述しても遅くならない
よ
• 流行りの V8 エンジンはランタイム最適化してくれるぜ
• オプティマイザは賢いから気張ってコーディングしないでok
• 関数型プログラミングすると必ず速度低下することはない
• 関数型プログラミングはコーディングの時間は短縮する
1.3 Underscore について
• なんで使ったの
• いちいち map とか実装してる暇はない
• map の実装ではなく概念が説明したいんじゃ!
• Underscore は基本的なライブラリがきちんと ってる
• 車輪の再発明しても益少なかろうよ
→ Topotal 1系...
1.4 まとめ
• 入門的なトピックを扱った
• JavaScript アプリケーションを構築する一つの方法が「関数
型プログラミング」
• 抽象を導き出して関数として構築する
• すでに存在する関数を使って、より複雑な抽象を構築する
• すでに存在する関数を別の関数に渡すことによって、さら
に複雑な抽象を構築する
1 of 47

Recommended

パターン認識02 k平均法ver2.0 by
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0sleipnir002
17.5K views31 slides
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析 by
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析hnisiji
11.8K views38 slides
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 by
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 Kenta Oono
1.9K views33 slides
Chainer の Trainer 解説と NStepLSTM について by
Chainer の Trainer 解説と NStepLSTM についてChainer の Trainer 解説と NStepLSTM について
Chainer の Trainer 解説と NStepLSTM についてRetrieva inc.
14.3K views50 slides
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー by
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けーTanUkkii
8.8K views44 slides
Web講座 第8回 by
Web講座 第8回Web講座 第8回
Web講座 第8回nanametown
291 views23 slides

More Related Content

What's hot

Chainerの使い方と自然言語処理への応用 by
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
53.2K views40 slides
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築 by
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tatsuya Tojima
248.7K views53 slides
知って得するC# LINQ to Objects編 by
知って得するC# LINQ to Objects編知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編Shota Baba
12.9K views50 slides
関数 by
関数関数
関数TENTO_slide
220 views6 slides
Deep Learning を実装する by
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装するShuhei Iitsuka
75.3K views26 slides
Chainer, Cupy入門 by
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門Yuya Unno
68.1K views35 slides

What's hot(20)

Chainerの使い方と自然言語処理への応用 by Seiya Tokui
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui53.2K views
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築 by Tatsuya Tojima
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima248.7K views
知って得するC# LINQ to Objects編 by Shota Baba
知って得するC# LINQ to Objects編知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編
Shota Baba12.9K views
Deep Learning を実装する by Shuhei Iitsuka
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
Shuhei Iitsuka75.3K views
Chainer, Cupy入門 by Yuya Unno
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門
Yuya Unno68.1K views
実践多クラス分類 Kaggle Ottoから学んだこと by nishio
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
nishio38.7K views
すべてのアクター プログラマーが知るべき 単一責務原則とは何か by TanUkkii
すべてのアクター プログラマーが知るべき 単一責務原則とは何かすべてのアクター プログラマーが知るべき 単一責務原則とは何か
すべてのアクター プログラマーが知るべき 単一責務原則とは何か
TanUkkii2.6K views
2013.07.15 はじパタlt scikit-learnで始める機械学習 by Motoya Wakiyama
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama23.4K views
パターン認識 08 09 k-近傍法 lvq by sleipnir002
パターン認識 08 09 k-近傍法 lvqパターン認識 08 09 k-近傍法 lvq
パターン認識 08 09 k-近傍法 lvq
sleipnir0029K views
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327) by YoheiOkuyama
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
YoheiOkuyama3.1K views
科学技術計算関連Pythonパッケージの概要 by Toshihiro Kamishima
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima10.8K views
Deep learning for_extreme_multi-label_text_classification by Junya Kamura
Deep learning for_extreme_multi-label_text_classificationDeep learning for_extreme_multi-label_text_classification
Deep learning for_extreme_multi-label_text_classification
Junya Kamura3.2K views
PoisoningAttackSVM (ICMLreading2012) by Hidekazu Oiwa
PoisoningAttackSVM (ICMLreading2012)PoisoningAttackSVM (ICMLreading2012)
PoisoningAttackSVM (ICMLreading2012)
Hidekazu Oiwa4.1K views
はじぱた7章F5up by Tyee Z
はじぱた7章F5upはじぱた7章F5up
はじぱた7章F5up
Tyee Z7.6K views

Viewers also liked

【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章 by
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章YOSHIKAWA Ryota
8.6K views48 slides
Developing IT infrastructures with Puppet by
Developing IT infrastructures with PuppetDeveloping IT infrastructures with Puppet
Developing IT infrastructures with PuppetAlessandro Franceschi
4.2K views30 slides
FunScript:F#からJavaScriptへのコンパイラー by
FunScript:F#からJavaScriptへのコンパイラーFunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラーAlfonso Garcia-Caro
4.7K views34 slides
論文輪読会のススメ by
論文輪読会のススメ論文輪読会のススメ
論文輪読会のススメShuzo Kashihara
4.1K views10 slides
マイクロサービス時代の生存戦略 with HashiCorp by
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
5.8K views121 slides
実践Backbone.Marionette 現場の悩みと解決まで by
実践Backbone.Marionette 現場の悩みと解決まで実践Backbone.Marionette 現場の悩みと解決まで
実践Backbone.Marionette 現場の悩みと解決までRyuma Tsukano
19.6K views90 slides

Viewers also liked(10)

【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章 by YOSHIKAWA Ryota
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
YOSHIKAWA Ryota8.6K views
FunScript:F#からJavaScriptへのコンパイラー by Alfonso Garcia-Caro
FunScript:F#からJavaScriptへのコンパイラーFunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラー
Alfonso Garcia-Caro4.7K views
マイクロサービス時代の生存戦略 with HashiCorp by Masahito Zembutsu
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
Masahito Zembutsu5.8K views
実践Backbone.Marionette 現場の悩みと解決まで by Ryuma Tsukano
実践Backbone.Marionette 現場の悩みと解決まで実践Backbone.Marionette 現場の悩みと解決まで
実践Backbone.Marionette 現場の悩みと解決まで
Ryuma Tsukano19.6K views
純粋関数型アルゴリズム入門 by Kimikazu Kato
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato6.6K views
数学プログラムを Haskell で書くべき 6 の理由 by Hiromi Ishii
数学プログラムを Haskell で書くべき 6 の理由数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii32.8K views
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化 by Lintaro Ina
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
Lintaro Ina36.2K views
実践イカパケット解析 by Yuki Mizuno
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
Yuki Mizuno118.7K views

Similar to 【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章

プログラミング言語Scala by
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語ScalaTanUkkii
1.1K views30 slides
そしてjsの基礎へ戻る#4 by
そしてjsの基礎へ戻る#4そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4Shingo Inoue
1.1K views14 slides
ATN No.2 Scala事始め by
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始めAdvancedTechNight
1.3K views29 slides
関数プログラミング入門 by
関数プログラミング入門関数プログラミング入門
関数プログラミング入門masatora atarashi
169 views74 slides
Haskell by
HaskellHaskell
Haskelltodorokit
1.1K views26 slides
JavaScriptクイックスタート by
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
2.3K views65 slides

Similar to 【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章(20)

プログラミング言語Scala by TanUkkii
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語Scala
TanUkkii1.1K views
そしてjsの基礎へ戻る#4 by Shingo Inoue
そしてjsの基礎へ戻る#4そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4
Shingo Inoue1.1K views
Haskell by todorokit
HaskellHaskell
Haskell
todorokit1.1K views
Equality in Scala (ScalaMatsuri 2020) by Eugene Yokota
Equality in Scala (ScalaMatsuri 2020)Equality in Scala (ScalaMatsuri 2020)
Equality in Scala (ScalaMatsuri 2020)
Eugene Yokota998 views
RubyとJavaScriptに見る第一級関数 by Altech Takeno
RubyとJavaScriptに見る第一級関数RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数
Altech Takeno4K views
Scala の関数型プログラミングを支える技術 by Naoki Aoyama
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術
Naoki Aoyama9.9K views
2014 11-20 Machine Learning with Apache Spark 勉強会資料 by Recruit Technologies
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Effective JavaScript Ch.1 by Teppei Sato
Effective JavaScript Ch.1Effective JavaScript Ch.1
Effective JavaScript Ch.1
Teppei Sato7.7K views
関数型言語&形式的手法セミナー(3) by 啓 小笠原
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原3.4K views
Nds meetup8 lt by ushiboy
Nds meetup8 ltNds meetup8 lt
Nds meetup8 lt
ushiboy1.4K views
Scalaプログラミング・マニアックス by Tomoharu ASAMI
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI6.5K views
[機械学習]文章のクラス分類 by Tetsuya Hasegawa
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
Tetsuya Hasegawa3.2K views
Rの初歩: 1. 基本概念 by Teiko Suzuki
Rの初歩:  1. 基本概念Rの初歩:  1. 基本概念
Rの初歩: 1. 基本概念
Teiko Suzuki702 views
Java8 lambdas chapter1_2 by yo0824
Java8 lambdas chapter1_2Java8 lambdas chapter1_2
Java8 lambdas chapter1_2
yo0824288 views
Yamadai.Rデモンストレーションセッション by 考司 小杉
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション
考司 小杉8K views

More from Narimichi Takamura

Nginx バージョンアップ動向(2015/07〜2015/12) by
Nginx バージョンアップ動向(2015/07〜2015/12)Nginx バージョンアップ動向(2015/07〜2015/12)
Nginx バージョンアップ動向(2015/07〜2015/12)Narimichi Takamura
1.4K views24 slides
Dovecot & Postfix バージョンアップ動向 201506-201511 by
Dovecot & Postfix バージョンアップ動向 201506-201511Dovecot & Postfix バージョンアップ動向 201506-201511
Dovecot & Postfix バージョンアップ動向 201506-201511Narimichi Takamura
1.6K views23 slides
Nginx バージョンアップ動向(2015/01〜2015/06) by
Nginx バージョンアップ動向(2015/01〜2015/06)Nginx バージョンアップ動向(2015/01〜2015/06)
Nginx バージョンアップ動向(2015/01〜2015/06)Narimichi Takamura
3.4K views25 slides
Dovecot & Postfix バージョンアップ動向 201401-201505 by
Dovecot & Postfix バージョンアップ動向 201401-201505Dovecot & Postfix バージョンアップ動向 201401-201505
Dovecot & Postfix バージョンアップ動向 201401-201505Narimichi Takamura
1.7K views32 slides
ぼくとおこめとJSON by
ぼくとおこめとJSONぼくとおこめとJSON
ぼくとおこめとJSONNarimichi Takamura
4.9K views45 slides
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章 by
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章Narimichi Takamura
1.3K views77 slides

More from Narimichi Takamura(11)

Nginx バージョンアップ動向(2015/07〜2015/12) by Narimichi Takamura
Nginx バージョンアップ動向(2015/07〜2015/12)Nginx バージョンアップ動向(2015/07〜2015/12)
Nginx バージョンアップ動向(2015/07〜2015/12)
Narimichi Takamura1.4K views
Dovecot & Postfix バージョンアップ動向 201506-201511 by Narimichi Takamura
Dovecot & Postfix バージョンアップ動向 201506-201511Dovecot & Postfix バージョンアップ動向 201506-201511
Dovecot & Postfix バージョンアップ動向 201506-201511
Narimichi Takamura1.6K views
Nginx バージョンアップ動向(2015/01〜2015/06) by Narimichi Takamura
Nginx バージョンアップ動向(2015/01〜2015/06)Nginx バージョンアップ動向(2015/01〜2015/06)
Nginx バージョンアップ動向(2015/01〜2015/06)
Narimichi Takamura3.4K views
Dovecot & Postfix バージョンアップ動向 201401-201505 by Narimichi Takamura
Dovecot & Postfix バージョンアップ動向 201401-201505Dovecot & Postfix バージョンアップ動向 201401-201505
Dovecot & Postfix バージョンアップ動向 201401-201505
Narimichi Takamura1.7K views
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章 by Narimichi Takamura
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 5 章
Narimichi Takamura1.3K views
Nginx バージョンアップ動向(2014/01〜2014/12) by Narimichi Takamura
Nginx バージョンアップ動向(2014/01〜2014/12)Nginx バージョンアップ動向(2014/01〜2014/12)
Nginx バージョンアップ動向(2014/01〜2014/12)
Narimichi Takamura4.7K views
【続編】その ionice、ほんとに効いてますか? by Narimichi Takamura
【続編】その ionice、ほんとに効いてますか?【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?
Narimichi Takamura77.1K views
その ionice、ほんとに効いてますか? by Narimichi Takamura
その ionice、ほんとに効いてますか?その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
Narimichi Takamura90.8K views
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」 by Narimichi Takamura
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」
( (0) / (0)) ☆祝☆ (nari_ex) LT at Cloud Server Festa 2013 Autumn「サバフェス!」
Narimichi Takamura2.6K views

Recently uploaded

PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
27 views36 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
32 views38 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
27 views17 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
405 views13 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
90 views41 slides

Recently uploaded(12)

PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga27 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4405 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka90 views
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.78 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda479 views

【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章