- ベストアンサー
自作関数とユーザー定義関数は同じ意味?
エクセルやVBAの用語として出てくる 「自作関数」「ユーザー定義関数」は同じ意味ですか?
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
ご質問者さんのために、「関数」として登場する語を分かりやすく書かせていただきます。 これらの用語には、それぞれには通用する度合い(%)というものが存在しています。 パーセントは、私の感覚的なもので、あまり、厳密な根拠はありません。 ------------------------------------------- ユーザー定義関数 90% VBAで使用される語。概ね、MS-Office VBA に限定される。しかし、下記のFunction プロシージャとは、コードとしては、区別がつきにくい Function プロシージャ 90% AccessではVBAで使用されるが、Excelではあまり多くはないので、ユーザー定義関数と混同されることが多い。Sub プロシージャに対する用語。 マクロ関数(Ver4マクロ関数) 80% 特定の用語ではあっても、現行では、一部のVBAしか登場しない。また、近い将来なくなるといわれているもの。 組み込み関数 70% Access に出てくる用語、Excelでは類推でワークシート関数に該当するものに推測が利く。 VBA関数 80% VBAの正規の用語ではないけれども、ExcelではWorksheetFunction と対比した用語として通用する。 ワークシート関数 70% VBAの場合のみであって、ワークシート側から、あえて、このように呼ぶ必要はない。 アドイン関数 60% アドインで作られた関数をさすように思われることが多い。 自作関数 50% あくまでも一般用語。VBAでは直接、この用語は使用されないが、MS-Office でも、作成される関数は、VBAで作るものだけではない。VB6, VB.Net やC++などから作られるものもある。ユーザー定義関数よりも意味は広い。後者には、オートメーション・アドイン関数と呼ぶことがある。
その他の回答 (7)
- Wendy02
- ベストアンサー率57% (3570/6232)
訂正: ×参考:Google検索; office vba "redefined function" 参考:Google検索; ooffice vba "事前定義関" http://www.google.co.jp/search?hl=ja&safe=off&rlz=1R2GGIE_ja&q=office+vba+%22%E4%BA%8B%E5%89%8D%E5%AE%9A%E7%BE%A9%E9%96%A2%E6%95%B0%22&lr=
- Wendy02
- ベストアンサー率57% (3570/6232)
>ちなみにNo.3の方の回答は、一般の方なので仕方ありませんが、対比すべき「事前定義関数」についての説明がなく、大変申し訳ございませんが、専門家としては「不可」な回答です。 人にダメだしするというのは、恐れ入ったものです。一般の方だから仕方がないという上から目線の発言は、もう少し虚心に掲示板に臨んでほしいものです。#5さんは、何か、ご自分の立場を勘違いしていませんでしょうか。VBAの基本的な用語を知らないに等しいようですが。どうも、他の分野の人たちは、Office VBAを下にして見る人が多いようです。よそで経験してきたから、似たような分野で使えるとして勘違いする人も多いものです。 『Microsoft Office Visual Basicプログラマーズガイド』の後ろの索引辺りで調べてみたらいかがですか?その本がお手元にないようでしたら、少なくともOfficeで、VBAの「専門家」と勘違いするような発言は辞めていただきたいものです。そこに、「事前定義関数」というのが出ていますか?いえ、Microsoft でOffice VBAの範疇で使っていますか?Microsoft サイト内を検索しても良いです。 それに、私は、「ユーザー定義関数」に対して「組み込み関数(built-in functions)」と書いてあるのではありませんか。それ以外としては、ワークシート関数(worksheet functions)と書いています。こういうのは、約束事だから、通称名は、立場によっては使えないのです。Microsoft Office VBAの範囲では、正式には「ユーザー定義関数」といっているということは、押さえておかなくてはなりません。 「一般」というステータスは、ここで臨む意識の問題であって、社会的なステータスではないのです。そんなことで、自分の発言にアドバンテージを付けようとは思いません。 何年もここで書いていると、Office のデベロッパークラスの開発者であろうが、ここの常連としては、人から教わることもも多く、「一般」と書いて、自分と他人の壁を低くしたほうがよいのです。それが暗黙の選択になっているように感じています。他の常連の方も同様のようです。上から目線で言うような人はいませんよ。コードを見れば、その人の力が分かってしまいます。 だから、「専門家」というステータスや「自信あり」というものは、本来必要ないのです。それを目安にして信ずるのは、まったくの初心者だけだからです。私を含めて、ここの常連の回答者さんたちは、必ずしも教える立場で書いているのではないのです。また、私は、必ずしも、入門の方や何も知らない人を対象にして書いているわけではありません。 最近、ここで、自称「専門家」という人の疑問の多い発言が目立ってきています。VBAのコードでも、せいぜい、1年も満たない程度のコードを書いている人もいます。「専門家」と書かなければ良いのに、と思うのです。ただ、このような初歩的な用語のレベルで、他人にダメだしするようなマナーの悪い人はめったにいませんね。そんなことは、テキストで調べればすぐ分かることですから。 SQLでも「ユーザー定義関数」というのは、私も知っています。私の紹介したWikipediaの"User-defined function"にも出ています。ただ、調べた範囲では、用語として、MSのオリジナリティを持っているように思えますし、インターネット検索によって判断したわけで、こちらが無責任に発言しているわけではありません。一般用語として流用できたとしても、限定されていると考えてよいのです。これは、経験のみでもって発言するべき種類のものではありません。また、#4は、多少の修正を入れさせていただいております。 あくまでも、Microsoft Office の範囲としての用語です。そこを押さえないと意味がボケてしまいます。 本来、英語からの翻訳で、どのように訳語が当てられるのかは、ある程度の経験者なら知っていても珍しくはないはずです。それらの言葉を、Microsoft の外部の人間が、どう表現するのかという選択肢は場合によってはないことがあります。Microsoft 側がどう使っているか、それを守らないと、いけないことも多いのです。それが、モノを書く立場の難しい部分です。 どうも古庄潤氏は、Microsoft Office VBAの専門のライターとはいえないようです。私個人、氏の書籍は持っていますが、VBAに関しては、あまり良い良い内容ではありません。ユーザー本位に、言葉を直してよい部分とそうでない部分があるのです。 Microsoft のアプリケーションを教えようとする人のルールだと思います。それを、「自作関数(self-made function)」と書いたら、ご質問者さんのように、どちらがどうか、と疑問が付いてしまいます。便宜的とかはしてはいけないのです。Office VBAでは「ユーザー定義関数」と統一したほうがよいのです。「事前定義関数」というのは、IBMのコーナーで見つけましたが、Microsoft 側では見られません。そういうところを自分の範囲内だけの記憶で、「なあなあ」ではまずいのです。 ある程度、自信を持っていたとしても、念のためにも、Microsoft のOffice カテゴリの範疇の中で、どういっているか、確認してから発言してほしいものです。私は、Microsoft Office VBAの範囲内で申しているのです。ここは、Office のカテゴリですから、Microsoft Office の範囲での回答です。 ここは、Office の話であり、別のITの仕事をされているといっても、それは、Office の範疇では通用しませんし、「事前定義関数("predefined function")」として、Office VBAやOffice でも、Microsoft でも使っていません。そのぐらいは調べてから発言しても遅くはなかったと思います。 参考:Google検索; office vba "redefined function" http://www.google.co.jp/search?hl=ja&safe=off&rlz=1R2GGIE_ja&q=office+vba+%22redefined+function%22&lr=
お礼
Wendy02様はすばらしい方で、いつも参考にしています。
- zeeq-h
- ベストアンサー率54% (6/11)
No.2のzeeq-hです。 業界でIT職に就いている者として補足します。 まず「ユーザー定義関数」という言葉自体は、VBAやBASICあるいはマイクロソフト言語だけで用いられている言葉ではないです。他の言語でも普通に使う一般的な専門用語です(例えばOracleの言語であるPL/SQLでも「ユーザー定義関数」は使います)。 意味合いとしてはNo.2でも述べたように、その言語が標準的に装備している関数(四捨五入関数等、いわゆる事前定義関数)以外で、その言語を 使用する側が独自に定義したもの(例えば100を渡したら消費税額5が帰ってくるような関数)をユーザー定義関数と普通に呼んでいます。 「自作関数」は著者の方が上記のことを重々承知の上で、読者にわかりやすい言葉に置き換えただけという理解が妥当なのではないでしょうか。そういう意味ではNo.1の回答も誤りではありません。 ちなみにNo.3の方の回答は、一般の方なので仕方ありませんが、対比すべき「事前定義関数」についての説明がなく、大変申し訳ございませんが、専門家としては「不可」な回答です。
お礼
ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
補足: ×「ユーザー定義関数」は、"custom function"の訳です。 は正しくは、 VBAでの「ユーザー定義関数」は、"custom function"の訳です。 ×この訳の「ユーザー定義関数」の言葉がどこから来たかは知りません。 「ユーザー定義関数」の英語訳は、"User Defined Function(UDF)" です。Wikipedia http://en.wikipedia.org/wiki/User-defined_function によれば、BASIC からだと書かれていました。
お礼
ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 言葉の定義というのは、Yes/Noを言えるほど、そんなに簡単なものではありません。 もともと、こういう単語は、英語からで、「ユーザー定義関数」は、"custom function"の訳です。 この手の話は、業界内部に深くかかわっている人でないと、分からないような気がします。業界内で、言ったもの勝ちということではないようです。おそらく、協議して決まったものだと思います。昨今のMSの安直な訳付けとは違うようです。 この訳の「ユーザー定義関数」の言葉がどこから来たかは知りません。MSは、業界で「共有」する単語については、同じような単語を、あえて別の読み方にするようなことはしません。VBAは、MSのオリジナルだと思いますが、これは、VBA独特の用語のようです。(kotobank より) あまり個人の話を書いてもしょうがないですが、VBAに「自作関数」という言葉は、他の方は、「自信あり」ですが、私は、この7~8年VBAが主で、書籍で読んだり、掲示板などを読んだりしていますが、聞いたことも使ったこともありません。ライターの古庄潤さんあたりは使っているようですが、私は、掲示板に書いているせいもあって、「自作関数」は許容範囲外です。うるさがたの人に指摘されかねません。以前、Excelの「ユーザー定義書式」を、うっかり「ユーザー書式」と書いただけで、全人格を否定されかねない中傷を受けたことがあります。 英語なら、「自作関数」は、"self-made function" で、VBAであろうが、何であろうが、一般用語として使えるとは思いますが、VBA特定の用語ではありませんし、MSのサポートの範疇では正規に使えないはずです。ちにみに、Microsoft サポートオンラインで、「VBA 自作関数」で検索しても、ヒットしません。アマチュアならともかく、同じステージで使える言葉ではないと思います。 なお、VBAでは、「ユーザー定義関数」に対するものは、「組み込み関数(主にAccess)」で、Excelでは、ワークシート関数とか言っていると思います。私は、Excelでも、「組み込み関数」と言っています。 あくまでも「一般」の立場からです。私は、自分の発言にアドバンテージはつけませんから、信じるも信じないもご自由に。
お礼
う~ん。 難しいです。 何度も読み直してみます。ありがとうございます。
- zeeq-h
- ベストアンサー率54% (6/11)
ほとんど同じ意味ですがニュアンスが多少違います。 マイクロソフトが用意してくれた関数(事前定義関数)と区別する意味でユーザー定義関数といいます。 「自作関数」の場合は「自分で」というニュアンスが強くなりますが、ユーザー定義関数といっている分には、別に他の人が作ったものを流用してもユーザー定義関数には違いありませんが、それは「自作」ではありませんよね。ニュアンスの違いとはそういうことです。 わかりましたか?^^;
お礼
うーん。 なかなか区別が難しいですね^^; ありがとうございます。
- mshr1962
- ベストアンサー率39% (7417/18945)
同じです。
お礼
ありがとうございます。
お礼
とてもわかりやすい表記です! ありがとうございます。