Google�ス�スMapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�ス�スJava�スナ暦ソス�ス�ス�ス�ス�ス�ス�スF�ス�ス�スワ再抵ソス�スレの包ソス�スU�ス�ス�ス�ス�スZ�スp�スi�スO�スメ)�スi1/2 �スy�ス[�スW�スj

�スナ近抵ソス�スレを浴びてゑソス�ス髟ェ�スU�ス�ス�ス�ス�スZ�スp�スuMapReduce�スv�スフ暦ソス�ス_�ス�ス�スT�ス�ス�スv�ス�ス�ス�ス�ス�スA�ス�ス�スS�ス�ス�スY�ス�ス�ス�ス�スx�ス�ス�スナ暦ソス�ス�ス�ス�ス�スA�スフゑソス�ス轤��ス�スJava�スヨ連�スフ包ソス�スU�ス�ス�ス�ス�スZ�スp�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スW�ス�ス�スi�スメ集�ス�ス�スj

» 2008�スN07�ス�ス08�ス�ス 00�ス�ス00�ス�ス �ス�ス�スJ
[�ス�ス�スR�ス�ス�スj�スC�ス�ス�ス�ス�ス�スミガ�ス�ス�ス�ス�スI]

�ス�ス�スワ抵ソス�スレの托ソスK�スヘ包ソス�スU�ス�ス�ス�ス�スA�ス�ス�スS�ス�ス�スY�ス�ス

�ス@�スナ近、�ス�スK�スヘ包ソス�スU�ス�ス�ス�ス�ス�ス�ス�ス�スレを浴びてゑソス�スワゑソス�スB�ス�ス�スノ、�スuMapReduce�スv�スニゑソス�ス�ス�スA�ス�ス�スS�ス�ス�スY�ス�ス�スノつゑソス�スト目にゑソス�ス驍ア�スニゑソス�ス�ス�ス�ス�スネゑソスワゑソス�ス�ス�スBGoogle�スフ膨�ス�スネサ�ス[�スo�ス�ス�ス�ス�スナ使�ス�ス�ストゑソス�ス�スニゑソス�ス�ス�ス�ス�スニで、�ス�ス�ス�ス�ス�ス�スN�スフ包ソス�スU�ス�ス�ス�ス�スZ�スp�スフ抵ソス�スナは難ソス�スノ抵ソス�スレを浴びてゑソス�ス�ス謔、�スナゑソス�スi�スQ�スl�スu�ス�ス�ス�ス�ス�スO�ス[�スO�ス�ス�スA�ス�ス�ス�ス�スネゑソス�スO�ス[�スO�ス�ス�スv�スj�スBMapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�ス�ス�スg�ス�ス�ス�ス�ス_�スニは、�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スネのでゑソス�ス蛯、�ス�ス�スB�スネゑソス�スA�ス�ス�スワ抵ソス�スレを浴びてゑソス�ス�スフでゑソス�ス蛯、�ス�ス�スB

�ス@�ス�ス�スフ詳細は「MapReduce : Simplified Data Processing on Large Clusters�スv�スニゑソス�ス�ス�ス^�スC�スg�ス�ス�スフ論�ス�ス�スナ「Google Research Publications : MapReduce�スv�ス�ス�ス�スQ�スニでゑソス�ス�スフで、�ス�ス�スラてみまゑソス�ス�ス�スBMapReduce�ス揄�ス�ス�ス�ス驍ス�ス゚のサ�ス�ス�スv�ス�ス�スv�ス�ス�スO�ス�ス�ス�ス�ス�スJava�スナ趣ソス�ス�ス�ス�ス�スト、�ス�ス�スフ暦ソス�ス_�ス�スT�ス�ス�ストみまゑソス�ス蛯、�スB

�ス�ス�ス�スy�ス�ス�スヘで使�スp�ス�ス�ス�ストゑソス�ス�スp�ス�ス�ス�ス�スJ�スE�ス�ス�スg�ス�ス�ス�スz

�ス@�スu�ス�ス�スヘで使�スp�ス�ス�ス�ストゑソス�ス�スp�ス�ス�ス�ス�スJ�スE�ス�ス�スg�ス�ス�ス�スv�スv�ス�ス�スO�ス�ス�ス�ス�ス�スハゑソス�スト、MapReduce�ス揄�ス�ス�ス�ストみまゑソス�ス蛯、�スB�ス痰ヲ�スホ、�ス�ス�ス�スp�ス�スフ包ソス�スヘゑソス�ス�スA�スe�スp�ス�ス�ス�ス�スヌれく�ス轤「�スg�ス�ス�ストゑソス�ス�スフゑソス�ス�ス�スv�スZ�ス�ス�ス�ス�ス�ス�ス鼾�ソス�ス�スl�ス�ス�ストみまゑソス�ス蛯、�スB�ス�ス�ス�ス�ス�スP�ス�ス�スノゑソス�ス驍ス�ス゚に、�スp�ス�ス�スネ外�スフ包ソス�ス�ス�ス�ス�ス�ス�スヘゑソス�ス黷ス�ス鼾�ソスフエ�ス�ス�ス[�ス�ス�ス�ス�スネどは考�ス�ス�ストゑソス�スワゑソス�ス�スB�スヌ者なゑソスA�スヌゑソスネプ�ス�ス�スO�ス�ス�ス�ス�ス�ス�ス�ス�スナゑソス�ス蛯、�ス�ス�スH

�ス@�スP�ス�ス�スノプ�ス�ス�スO�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スニ、�スネ会ソス�スフよう�スノなゑソスワゑソス�スB

package sample;

public class SimpleWordCounter {
    /* count()�ス�ス�ス\�スb�スh�スナ指�ス閧ウ�ス黷ス�ス�ス�ス�ス�ス�ス�ス�スナ各�スp�ス�ス�ス�ス�ス�ス�ス�ス
    �スg�ス�ス�ストゑソス�ス驍ゥ�ス�スロ托ソス�ス�ス�ス�スz�ス�ス */

    private int[] charCount = new int[128];

    /* �スw�ス閧ウ�ス黷ス�ス�ス�ス�ス�ス�ス�ス�スナ各�スp�ス�ス�ス�ス�ス�ス�ス�スg�ス�ス�ストゑソス�ス驍ゥ�ス�ス
    �スv�スZ�ス�ス�ス驛�ソス\�スb�スh */

    public void count(String target) {
        charCount = new int[128];
        byte[] bs = target.getBytes();
        for (byte b : bs) {
            int index = (int)b;
            charCount[index]++;
        }
    }

    /* �スw�ス閧ウ�ス黷ス�スp�ス�ス�ス�スcount()�ス�ス�ス\�スb�スh�スナ指�ス閧ウ�ス黷ス�ス�ス�ス�ス�ス�ス�ス�ス�ス
    �スg�ス�ス�ストゑソス�ス髏費ソス�スヤゑソス�ス�ス�ス\�スb�スh */

    public int getCharCount(char c) {
        int index = (int)c;
        return charCount[index];
    }

    //�スT�ス�ス�スv�ス�ス
    public static void main(String[] args) {
        SimpleWordCounter app = new SimpleWordCounter();
        app.count("abcaba"); // "abcaba" �スノ対ゑソス�ストカ�スE�ス�ス�スg�ス�ス�ス�ス�ス�ス�ス�ス�スs
        System.out.println("a:"+app.getCharCount('a'));
        System.out.println("b:"+app.getCharCount('b'));
        System.out.println("c:"+app.getCharCount('c'));
    }
}

�ス}1�ス@�ス�ス�ス�ス�ス�ス�ス�スロ趣ソス�ス�ス�ス�スn�スb�スV�ス�ス�スe�ス[�スu�ス�ス charCount �ス}1�ス@�ス�ス�ス�ス�ス�ス�ス�スロ趣ソス�ス�ス�ス�スn�スb�スV�ス�ス�スe�ス[�スu�ス�ス charCount

�ス@�ス|�スC�ス�ス�スg�スニゑソス�ストは、�ス�ス�ス轤ゥ�ス�ス�ス゚各�ス�ス�ス�ス�ス�ス�スJ�スE�ス�ス�スg�ス�ス�ス骭具ソスハゑソス�スi�ス[�ス�ス�ス�スz�ス�ス�スp�スモゑソス�ストゑソス�ス�ス�スト、�ス�ス�ス�ス�ス�ス�ス謫ェ�ス�ス�ス�スヌゑソスナ、�ス�ス�ス�ス�スP�スハでカ�スE�ス�ス�スg�スA�スb�スv�ス�ス�ス�ス�ストゑソス�スワゑソス�スBcharCount�スヘ茨ソス�ス�ス�スn�スb�スV�ス�ス�スe�ス[�スu�ス�ス�スi�スA�スz�スz�ス�ス�スA�スL�ス[�スニなる文�ス�ス�ス�スニ値�ス�ス�スZ�スb�スg�スナ保托ソス�スナゑソス�ス�スf�ス[�ス^�スj�スナゑソス�スB�スu�スp�ス�ス�ス�スbyte�スl�ス�スchar�スl�スv�ス�ス�スL�ス[�スニゑソス�スト、�スホ会ソス�ス�ス�ス�スl�ス�ス�スQ�スニゑソス�ス�ス�ス�スi�ス[�ス�ス�ス�ス�ス閧オ�ストゑソス�スワゑソス�スB

�ス@�スn�スb�スV�ス�ス�スヨ撰ソス�スヘ「�スp�ス�ス�ス�スbyte�スl�ス�スchar�スl�スv�ス�ス�スuint�ス^�スフ撰ソス�ス�ス�スl�スv�スノ変奇ソス�ス�ス�ス驍セ�ス�ス�スネので、�ス墲エ�ス墲エ�スヨ撰ソス�スノはゑソス�ス�ス�スノ、�スuint index = (int)b;�スv�スニゑソス�スA�スuint index = (int)c;�スv�スフよう�スノゑソス�ストゑソス�スワゑソス�スB

�ス�ス�スs�ス�ス�ス�ス
a:3
b:2
c:1

�ス@�スナは、�ス�ス�ス�スェ散�ス�ス�ス�ス�スナ趣ソス�スs�ス�ス�ス驍ス�ス゚には、�スヌゑソス�ス�ス�ス�スホゑソス�ス�ス�スナゑソス�ス蛯、�ス�ス�スH

MapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�スナ趣ソス�ス�ス�ス�ス�ス�スニ…�スc

�ス@�スu�ス�ス�スヘで使�スp�ス�ス�ス�ストゑソス�ス�スp�ス�ス�ス�ス�スJ�スE�ス�ス�スg�ス�ス�ス�スv�スv�ス�ス�スO�ス�ス�ス�ス�ス�スMapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�スナ趣ソス�ス�ス�ス�ス�ストみまゑソス�ス蛯、�スB

�ス@�ス�ス�スU�ス�ス�ス�ス�ス�ス�スヌのよう�スノ趣ソス�スs�ス�ス�ス驍ゥ�ス�ス�スC�スノなゑソスワゑソス�ス�ス�スAMapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�ス�p�ス�ス�ス�ス鼾�ソスヘ、�スワゑソス�スヘ「�ス�ス�ス�ス�ス�ス�ス�ス�スs�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スヌのよう�スノ趣ソス�ス�ス�ス�ス�ス�スホゑソス�ス�ス�スフゑソス�スv�スニゑソス�ス�ス�ス_�ス�ス�ス逞晢ソス�ス�ス�ス�ストゑソス�ス�ス�スフゑソス�ス�ス�ス�ス�スナゑソス�スB�ス�ス�ス�ス�スナは包ソス�スU�ス�ス�ス�ス�ス�ス�スフゑソス�スフではなゑソス�スA�ス�ス�スU�ス�ス�ス�ス�ス�ス�ス�ス�スv�ス�ス�スO�ス�ス�ス�ス�ス�ス�スヌゑソス�ス�ス�ス�ス�ス�ス�スフゑソス�ス揄�ス�ス�ス�ス驍ア�スニに趣ソス�ス�スu�ス�ス�ス�ス�スニにゑソス�スワゑソス�スB

�ス�スMap�スナ包ソス�スU�ス�ス�ス�ス�ス�スReduce�スナまとめ擾ソス�ス�ス

�ス@MapReduce�スフ論�ス�ス�スナは、�ス}2�スフよう�スネシ�スX�スe�ス�ス�ス�ス�ス\�スz�ス�ス�スト趣ソス�スs�ス�ス�ス�ス�ス�ス@�スノつゑソス�スト報告ゑソス�ス�ス�ス�ストゑソス�スワゑソス�スB

�ス}2�ス@MapReduce�スフ趣ソス�スs�スフ概�スv�スi�スuMapReduce: Simplified Data Processing on Large Clusters�スv�ス�ス�ス�ス�スp�スj �ス}2�ス@MapReduce�スフ趣ソス�スs�スフ概�スv�スi�スuMapReduce : Simplified Data Processing on Large Clusters�スv�ス�ス�ス�ス�スp�スj

�ス@�ス}2�ス�ス�ス�ス�スト包ソス�ス�ス�ス�ス謔、�スノ、�ス�ス�スヘデ�ス[�ス^�スェ奇ソス�ス�ス�スト「Map�ス�ス�ス�ス�スv�ス�ス�スs�ス�ス�スv�ス�ス�スO�ス�ス�ス�ス�スナ包ソス�スU�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スA�ス�ス�スフ鯉ソス�スハゑソス�スuReduce�ス�ス�ス�ス�スv�ス�ス�スs�ス�ス�スv�ス�ス�スO�ス�ス�ス�ス�スヨ渡�ス�ス�スト、�ス�ス�ス�ス�ス�ス�ス�ス�ス�スU�ス�ス�ス�ス�ス�ス�ス�ス�ストゑソス�スワゑソス�スB�ス�ス�スU�ス�ス�ス�ス�ス�ス�スs�ス�ス�スv�ス�ス�スO�ス�ス�ス�ス�ス�ス�スJ�スn�ス�ス�ス�ス�ス�ス�ス~�ス�ス�ス�ス�ス閧キ�ス髏ァ�ス�ス�スf�ス[�ス^�ス�ス�スo�スヘの難ソス�ス�ス�スニゑソス�ス�ス�ス�ス�ス�ス�スニは「Master�スv�ス�ス�スO�ス�ス�ス�ス�スv�ス�ス�スs�ス�ス�ストゑソス�スワゑソス�スB�ス�スルどゑソス�スq�スラまゑソス�ス�ス�ス�ス�スA�ス{�スe�スナゑソスMaster�スv�ス�ス�スO�ス�ス�ス�ス�スフ詳細につゑソス�ストは考�ス�ス�ス�ス�スAMap�スt�スF�スC�スY�ス�スReduce�スt�スF�スC�スY�スナ難ソス�ス�キ�ス�スv�ス�ス�スO�ス�ス�ス�ス�ス�ス�スヌゑソス�ス�ス�ス�ス�ス�ス�ス�ス�スフなのゑソス�ス�S�スノ撰ソス�ス�ス�ス�ス�ス�ス�スワゑソス�スB

�ス�スMapReduce�ス�ス�ス�ス�スT�ス�ス�スv�ス�ス�スフ趣ソス�スs�ス{�スフ「MapReduceCharCounterApp�スv�スN�ス�ス�スX

�ス@�スワゑソス�スA�ス�ス�スフよう�ス�スMapReduceCharCounterApp�スN�ス�ス�スX�ス�ス�ス�ャ�ス�ス�ス驍ア�スニにゑソス�スワゑソス�スB�ス�スルどゑソスSimpleWordCounter�スN�ス�ス�スX�スフ托ソス�ス�ス�スMapReduceCharCounter�スN�ス�ス�スX�ス�ス�スg�ス�ス�ストゑソス�ス驍セ�ス�ス�スナゑソス�スB

public class MapReduceCharCounterApp {
    public static void main(String[] args) {
        MapReduceCharCounter app = new MapReduceCharCounter();
        app.count("abcaba");
        System.out.println("a:"+app.getCharCount('a'));
        System.out.println("b:"+app.getCharCount('b'));
        System.out.println("c:"+app.getCharCount('c'));
    }
}

�ス@�ス�ス�スフプ�ス�ス�スO�ス�ス�ス�ス�ス�ス�ス�ス�スト包ソス�ス�ス�ス�ス謔、�スノ、MapReduceCharCounter�スN�ス�ス�スX�スナは、count()�ス�ス�ス\�スb�スh�ス�スgetCharCount()�ス�ス�ス\�スb�スh�ス�ス�ス�ス�ス�ス�スワゑソス�スB

�ス�ス�スl�ス�スロ趣ソス�ス�ス�ス�スuMapEntry�スv�スN�ス�ス�スX

�ス@MapReduceCharCounter�スN�ス�ス�スX�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ストゑソス�ス�ス�ス�ス�スフでゑソス�ス�ス�スA�スA�ス�ス�スS�ス�ス�スY�ス�ス�スフ撰ソス�ス�ス�ス�スA�スワゑソス�ス�スMapEntry�スN�ス�ス�スX�スニゑソス�ス�ス�ス�ス�スフゑソスp�スモゑソス�ス�スニゑソス�ス�ゥ�ス�ス�ス�ス�ス�ス�ス�ス�ス�スワゑソス�スB�ス�ス�スフク�ス�ス�スX�スナは、key�スニなる文�ス�ス�スニ、key�スニ対会ソス�ス�ス�ス�スl�スナゑソス�ス�スvalue�ス�スロ趣ソス�ス�ス�ス�スP�ス�ス�スネゑソス�スフでゑソス�スB�スP�ス�ス�ス�ス�スフゑソス�ス゚、�スA�スN�スZ�スb�スT�ス�ス�ス\�スb�スh�スヘ使�ス�ス�ストゑソス�スワゑソス�ス�スB

�ス@MapEntry�スI�スu�スW�スF�スN�スg�スノつゑソス�ストゑソス�ス\�ス[�スg�ス�ス�ス�ス�ス�スK�スv�ス�ス�ス�ス�ス�スフで、Comparable�スC�ス�ス�ス^�ス[�スt�スF�スC�スX�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス謔、�スノゑソス�ストゑソス�スワゑソス�スB�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スニ、equals()�ス�ス�ス\�スb�スh�ス�スhashCode()�ス�ス�ス\�スb�スh�スノつゑソス�ストゑソス�スl�ス�ス�ス�ス�スK�スv�スノなゑソスワゑソス�スiComparable�スフ趣ソス�ス�ス�スノつゑソス�ストは、�スル抵ソス�スuJava�スR�ス�ス�スN�スV�ス�ス�ス�ス�スt�ス�ス�ス[�ス�ス�ス�ス�ス[�スN�スv�スi�ス\�スt�スg�スo�ス�ス�スN�スN�ス�ス�スG�スC�スe�スB�スu�スj�スネどゑソス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�スj�スB

public class MapEntry implements Comparable<MapEntry> {
    public char key;
    public int value;

    public MapEntry(char k, int v) {
        key = k;
        value = v;
    }

    @Override
    public int compareTo(MapEntry e) {
        return e.key - key;
    }

    @Override
    public boolean equals(Object o) {
        return (o != null) &&
                (o instanceof MapEntry) &&
                (((MapEntry)o).key == key);
    }

    @Override
    public int hashCode() {
        return key;
    }
}

�ス}3�ス@MapEntry�スフク�ス�ス�スX�ス} �ス}3�ス@MapEntry�スフク�ス�ス�スX�ス}

�ス@�ス�ス�スy�ス[�スW�スナは、�ス�ス�ス�ス�ス�ス�ス�スMapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�スフサ�ス�ス�スv�ス�ス�ス�スJava�スナ趣ソス�ス�ス�ス�ス�スAMapReduce�スA�ス�ス�スS�ス�ス�スY�ス�ス�ス�ス�スg�ス�ス�ス�ス�ス_�スノつゑソス�スト述�スラまゑソス�スB

�ス@�ス@�ス@�ス@�ス@�ス@ 1|2 �ス�ス�スフペ�ス[�スW�ス�ス

Copyright © ITmedia, Inc. All Rights Reserved.

�スX�ス|�ス�ス�スT�ス[�ス�ス�ス�スフゑソス�スm�ス轤ケPR

Java Agile �スL�ス�ス�ス�ス�ス�ス�スL�ス�ス�スO

�ス{�ス�ス�ス�ス�ス�ス

�ス�ス�スレのテ�ス[�ス}

4AI by �ス�スIT - AI�ス�ス�ス�ス�スA�ス�ス�ス�ス�ス�ス�スA�ス�ス�スA�ス�ス�ス�ス�ス�ス
Microsoft �ス�ス Windows�スナ前�ス�ス2025
AI for �スG�ス�ス�スW�スj�スA�ス�ス�ス�ス�スO
�ス�ス�ス[�スR�ス[�スh�ス^�スm�ス[�スR�ス[�スh �スZ�ス�ス�スg�ス�ス�ス�ス by �ス�スIT - IT�スG�ス�ス�スW�スj�スA�ス�ス�スr�スW�スl�スX�スフ抵ソス�スS�スナ奇ソス�スキゑソスg�スD�ス�ス
Cloud Native Central by �ス�スIT - �スX�スP�ス[�ス�ス�スu�ス�ス�スネ能�スヘゑソスg�スD�ス�ス
�スV�スX�スe�ス�ス�スJ�ス�ス�スm�スE�スn�スE �スy�ス�ス�ス�ス�スi�スr�スzPR
�ス�ス�スネゑソス�スノゑソス�ス�ス�ス�ス�ス゚の記�ス�スPR

RSS�スノつゑソス�ス�ス

�スA�スC�スe�スB�ス�ス�スf�スB�スAID�スノつゑソス�ス�ス

�ス�ス�ス[�ス�ス�ス}�スK�スW�ス�ス�スo�ス^

�ス�スIT�スフ�ソス�ス[�ス�ス�ス}�スK�スW�ス�ス�スヘ、 �ス�ス�ス�ス�ス�ス�スA�ス�ス�スラて厄ソス�ス�ス�スナゑソス�スB�ス�ス�スミ�ソス�ス[�ス�ス�ス}�スK�スW�ス�ス�ス�ス�ス�ス�スw�スヌゑソス�ス�ス�ス�ス�ス�ス�スB