開発室ブログ

未分類

情報処理業界における抽象化の定義

 早速ですが担当プロダクトで機能追加をしたらDBの処理が遅くなりました。EXPLAINでSQLを確認するとtypeALL(テーブルフルスキャン)となっていたため「とりあえずインデックスでも張ってみるか」ってな感じでCREATE INDEXしてみたら、処理時間が一気に1/10に削減しました。インデックスって凄いなぁと思いました。

はじめに

 前説が夏休みの作文風になってしまい最近のネタ切れ感が否めない今日この頃、英知を振り絞りタイトルだけでも技術っぽく繕ってみました。

結局はネットに転がっている記事の紹介と全くもって生産性がない内容(薄っぺらな業界ネタ)になったことをご了承願います。

日本の抽象化定義

 この業界で必ずと言っていいほど一度は耳にしたことがあり、名前は誰でも知っていますがその実態は誰も知らない謎の定義があります。今日はその定義について述べさせて頂きます。

 その定義というのはもともと海外が発祥のようですが日本国内においても情報処理技術と共に流入して来て、独自の変化をしたと思われます。前置きが長くなりましたがその定義というのは

hoge

 情報処理業界(特にソフトウェア系エンジニア)の方は必ず知っている定義ですよね。ところがhogeってナニ?と聞かれて明確に答えられる人はどのくらい要るのでしょうか?初めて耳にする人は全く何のことやら分かりませんよね。

悲報:プログラムサンプルの「hoge」が通じない時代が来た

 一言で言えば抽象化の定義というか、平たく言えば架空の名前でしょうか。山城新伍さんのXX(ちょめちょめ)と似たような意味合いですかね。余計わかんなくなった…?

山城新伍が言った「ちょめちょめ」とはどう意味

 hogeは多種多様に使えます。以下にその使用例をいくつか挙げてみました。

クラスやメソッド例

develop/application/controllers/Hoge.php
<?php
class Hoge {
    /**
     * fugaメソッド
     */
    public function fuga($key='')
    {
        echo 'Hoge class Fuga method key='.$key.PHP_EOL;
    }
}

DBのテーブル例

SELECT * FROM `hoge` LIMIT 100000 10 ORDER BY `id` DESC;

Webサイトやパラメータ例

$ curl http://fugafuga.com/hoge/fuga?key=hogehoge

その他様々な言語に対応

Hello, World!というのは世界で最も有名な課題の名称です)

・C言語
#include <stdio.h>
int hogehoge(int argc, char *args[])
{
    printf("Hello, World!\n");
    return 0;
}

・COBOL
+--------1---------2---------3---------4---------5---------6---------7-+-------8
000010 IDENTIFICATION                   DIVISION.
000020 PROGRAM-ID.                      HOGE-01.
000030*
000040 ENVIRONMENT                      DIVISION.
000050*
000060 DATA                             DIVISION.
000070*
000080 PROCEDURE                        DIVISION.
000090 HOGEHOGE.
000100     DISPLAY "Hello, World!"  UPON CONSOLE.
000110     STOP RUN.

・Ada
with Ada.Text_IO;
procedure Hogehoge is
begin
  Ada.Text_IO.Put("Hello, world!");
end Hogehoge;

その他、Smalltalk,ALGOL,Fortran,Go,JCL,ASM,etc…

普段の生活にも対応可能(?)

hogehoge市fugafuga町1条1丁目へ乃6番

 みなさまもまわりにあるhogeを見つけてみてはいかがでしょうか?(無いと思うが)

欧米諸国における抽象化の定義

 先に述べたようにもともとは海外から流入してきたものですが、その海外ではどのように表現されてきたかというとfoobarと定義されていました。ではいつからfoobarが使われてきたを紐解いてみたところ、サクッと見つかりました。(こんなのをStack Overflowで質問する輩がいること自体が草)

What is the origin of foo and bar? [closed]

 情報処理業界においては1964年にMIT(マサチューセッツ工科大学)とDEC(ディジタル・イクイップメント・コーポレーション社、現:ヒューレット・パッカード社)が最初と言われて当時、MITにあるDEC社のPDP-1(!)マシン上で実装していたLISP処理系の文献で使われたのが最初のようです。

 情報処理業界以外では1959年にMIT内にあるテック鉄道模型クラブが最初にfooを使ったと言われているようです。#鉄ヲ夕@MIT

 その語源についてはそこから更に20数年ほど遡るようです。興味のある方は上記出典の回答#62をご覧ください。論文にまとめたらイグノーベル賞を狙えるかもしれません。

イグノーベル賞

ローカル定義

 foobarがどのようにhogefugaに成り代わったのかまでは調べてませんが、日本では確実にhogefugaが浸透しています。

 ところがオリジナリティにこだわる人もいて、ある会社ではその定義をahoahoとしていました。定義以外にパスワードとかにも使われており、複数人使用する機材等のパスワードによく採用されていました。

 過去にパスワード設定者が不在となりパスワードが遭難したことから、それ以降社内では暗黙の了解というか、みんなが知ってるパスワードというか、この由緒正しいパスワードを脈々と引継いでいました。

 当然のことながらテストデータとしてもahoahoは頻繁に使用していました。ある日ahoahoahoaho…を上限まで登録したテストコンテンツを使い負荷テストをしていましたが案の定、使用していたサードパーティのライブラリ(海外製)に動作不良が発生しました。

 ライブラリ側は障害調査のために使用したテストコンテンツを要求してきました。さすがにahoahoはマズいだろうと言うことで、悩んだ先輩は何を思ったのかahoahobananaに変換して彼らに送りました。

― 数日後に来たメールの返信

this Banana’s contents …

 しっかりバナナコンテンツとして認識したようです。きっと彼らはこう思ったに違いありません。

Why so much Japanese likes bananas?(なぜそんなに日本人はバナナが好きなのか?)

 その後、東京ばな奈が有名なお土産になったことで彼らの疑念は確信に変わったことでしょう。

おわりに

 バナナコンテンツの話を隣のOちゃんにしたところ彼曰く ―

外人なら”ahoaho”と書いても意味が分からないんじゃないですか?

はい、ごもっとも…

PS

 数ヶ月前、開発室長が出張時にお土産で買ってきて頂いた羽田空港限定の東京ばな奈はちみつバナナ味の中に入っていたボールペンです。興味があればお買い求めください。

RecentPost