CINXE.COM
ダック・タイピング - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="ja" dir="ltr"> <head> <meta charset="UTF-8"> <title>ダック・タイピング - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )jawikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"ja", "wgMonthNames":["","1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"wgRequestId":"7cd6c8e1-3a06-43b0-8b91-c724c55b0441","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"ダック・タイピング","wgTitle":"ダック・タイピング","wgCurRevisionId":88205464,"wgRevisionId":88205464,"wgArticleId":793532,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["参照方法","出典を必要とする記述のある記事/2021年9月","雑多な内容を箇条書きした節のある記事 - 2019年3月","内容の精度・確度に欠けている可能性のある記事","外部リンクがリンク切れになっている記事/2021年9月","外部リンクがリンク切れになっている記事/2012年12月","著作権問題調査依頼","オブジェクト指向","プログラミングパラダイム","型理論"],"wgPageViewLanguage" :"ja","wgPageContentLanguage":"ja","wgPageContentModel":"wikitext","wgRelevantPageName":"ダック・タイピング","wgRelevantArticleId":793532,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"ja","pageLanguageDir":"ltr","pageVariantFallbacks":"ja"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q374282","wgCheckUserClientHintsHeadersJsApi":["brands", "architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.PDFLinkIcon":"ready","ext.gadget.RedirectColor":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP", "ext.centralNotice.startUp","ext.gadget.NormalizeCharWidth","ext.gadget.suppressEnterAtSummaryBox","ext.gadget.checkSignature","ext.gadget.charinsert","ext.gadget.WikiMiniAtlas","ext.gadget.switcher","ext.gadget.protectionIndicator","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=ja&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=ja&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=ja&modules=ext.gadget.PDFLinkIcon%2CRedirectColor&only=styles&skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=ja&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="ダック・タイピング - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//ja.m.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"> <link rel="alternate" type="application/x-wiki" title="編集" href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (ja)"> <link rel="EditURI" type="application/rsd+xml" href="//ja.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ja"> <link rel="alternate" type="application/atom+xml" title="WikipediaのAtomフィード" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-ダック・タイピング rootpage-ダック・タイピング skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">コンテンツにスキップ</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="サイト"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="メインメニュー" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">メインメニュー</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">メインメニュー</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">非表示</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> 案内 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" title="メインページに移動する [z]" accesskey="z"><span>メインページ</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%AB" title="このプロジェクトについて、できること、情報を入手する場所"><span>コミュニティ・ポータル</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:%E6%9C%80%E8%BF%91%E3%81%AE%E5%87%BA%E6%9D%A5%E4%BA%8B" title="最近の出来事の背景を知る"><span>最近の出来事</span></a></li><li id="n-newpages" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%B0%E3%81%97%E3%81%84%E3%83%9A%E3%83%BC%E3%82%B8" title="最近新規に作成されたページの一覧"><span>新しいページ</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0" title="このウィキにおける最近の更新の一覧 [r]" accesskey="r"><span>最近の更新</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%81%8A%E3%81%BE%E3%81%8B%E3%81%9B%E8%A1%A8%E7%A4%BA" title="無作為に選択されたページを読み込む [x]" accesskey="x"><span>おまかせ表示</span></a></li><li id="n-sandbox" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%82%B5%E3%83%B3%E3%83%89%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9" title="練習用のページ"><span>練習用ページ</span></a></li><li id="n-commonsupload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=ja" title="画像やメディアファイルをウィキメディア・コモンズにアップロード"><span>アップロード (ウィキメディア・コモンズ)</span></a></li> </ul> </div> </div> <div id="p-help" class="vector-menu mw-portlet mw-portlet-help" > <div class="vector-menu-heading"> ヘルプ </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:%E7%9B%AE%E6%AC%A1" title="情報を得る場所"><span>ヘルプ</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:%E4%BA%95%E6%88%B8%E7%AB%AF" title="プロジェクトについての意見交換"><span>井戸端</span></a></li><li id="n-notice" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B" title="プロジェクトについてのお知らせ"><span>お知らせ</span></a></li><li id="n-bugreportspage" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%83%90%E3%82%B0%E3%81%AE%E5%A0%B1%E5%91%8A" title="ウィキペディア・ソフトウェアのバグ報告"><span>バグの報告</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:%E9%80%A3%E7%B5%A1%E5%85%88" title="ウィキペディアやウィキメディア財団に関する連絡先"><span>ウィキペディアに関するお問い合わせ</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-ja.svg" style="width: 7.5em; height: 1.25em;"> <img class="mw-logo-tagline" alt="" src="/static/images/mobile/copyright/wikipedia-tagline-ja.svg" width="100" height="14" style="width: 6.25em; height: 0.875em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%A4%9C%E7%B4%A2" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Wikipedia内を検索 [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>検索</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Wikipedia内を検索" aria-label="Wikipedia内を検索" autocapitalize="sentences" title="Wikipedia内を検索 [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="特別:検索"> </div> <button class="cdx-button cdx-search-input__end-button">検索</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="個人用ツール"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="表示"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="ページのフォントサイズ、幅、色の外観を変更する" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="表示" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">表示</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_ja.wikipedia.org&uselang=ja" class=""><span>寄付</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90&returnto=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="アカウントを作成してログインすることをお勧めしますが、必須ではありません" class=""><span>アカウント作成</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&returnto=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ログインすることを推奨します。ただし、必須ではありません。 [o]" accesskey="o" class=""><span>ログイン</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="その他の操作" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="個人用ツール" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">個人用ツール</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="利用者メニュー" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_ja.wikipedia.org&uselang=ja"><span>寄付</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90&returnto=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="アカウントを作成してログインすることをお勧めしますが、必須ではありません"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>アカウント作成</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&returnto=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ログインすることを推奨します。ただし、必須ではありません。 [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>ログイン</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> ログアウトした編集者のページ <a href="/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%B8%E3%82%88%E3%81%86%E3%81%93%E3%81%9D" aria-label="編集の詳細"><span>もっと詳しく</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E8%87%AA%E5%88%86%E3%81%AE%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2" title="このIPアドレスからなされた編集の一覧 [y]" accesskey="y"><span>投稿記録</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%83%88%E3%83%BC%E3%82%AF%E3%83%9A%E3%83%BC%E3%82%B8" title="このIPアドレスからなされた編集についての議論 [n]" accesskey="n"><span>トーク</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="サイト"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="目次" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">目次</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">非表示</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">ページ先頭</div> </a> </li> <li id="toc-概要" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#概要"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>概要</span> </div> </a> <ul id="toc-概要-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Rubyでの例" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Rubyでの例"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Rubyでの例</span> </div> </a> <ul id="toc-Rubyでの例-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-C++での例" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#C++での例"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>C++での例</span> </div> </a> <ul id="toc-C++での例-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-C#での例" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#C#での例"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>C#での例</span> </div> </a> <ul id="toc-C#での例-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-VB.NETでの例" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#VB.NETでの例"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>VB.NETでの例</span> </div> </a> <ul id="toc-VB.NETでの例-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-その他の言語など" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#その他の言語など"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>その他の言語など</span> </div> </a> <ul id="toc-その他の言語など-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-脚注" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#脚注"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>脚注</span> </div> </a> <button aria-controls="toc-脚注-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>脚注サブセクションを切り替えます</span> </button> <ul id="toc-脚注-sublist" class="vector-toc-list"> <li id="toc-注釈" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#注釈"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span> <span>注釈</span> </div> </a> <ul id="toc-注釈-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-出典" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#出典"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.2</span> <span>出典</span> </div> </a> <ul id="toc-出典-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-関連項目" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#関連項目"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>関連項目</span> </div> </a> <ul id="toc-関連項目-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-外部リンク" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#外部リンク"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>外部リンク</span> </div> </a> <ul id="toc-外部リンク-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="目次" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="目次の表示・非表示を切り替え" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">目次の表示・非表示を切り替え</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">ダック・タイピング</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="特定の記事の別の言語版に移動します。 利用可能な言語24件" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-24" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">24の言語版</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%AA%D9%86%D9%88%D9%8A%D8%B9_%D8%A7%D9%84%D8%A8%D8%B7" title="アラビア語: تنويع البط" lang="ar" hreflang="ar" data-title="تنويع البط" data-language-autonym="العربية" data-language-local-name="アラビア語" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%9A%D0%B0%D1%87%D1%8B%D0%BD%D0%B0%D1%8F_%D1%82%D1%8B%D0%BF%D1%96%D0%B7%D0%B0%D1%86%D1%8B%D1%8F" title="Belarusian (Taraškievica orthography): Качыная тыпізацыя" lang="be-tarask" hreflang="be-tarask" data-title="Качыная тыпізацыя" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Duck-typing" title="チェコ語: Duck-typing" lang="cs" hreflang="cs" data-title="Duck-typing" data-language-autonym="Čeština" data-language-local-name="チェコ語" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Duck-Typing" title="ドイツ語: Duck-Typing" lang="de" hreflang="de" data-title="Duck-Typing" data-language-autonym="Deutsch" data-language-local-name="ドイツ語" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Duck_typing" title="英語: Duck typing" lang="en" hreflang="en" data-title="Duck typing" data-language-autonym="English" data-language-local-name="英語" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Duck_typing" title="スペイン語: Duck typing" lang="es" hreflang="es" data-title="Duck typing" data-language-autonym="Español" data-language-local-name="スペイン語" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%86%D9%88%D8%B9%E2%80%8C%D8%AF%D9%87%DB%8C_%D8%A7%D8%B1%D8%AF%DA%A9%DB%8C" title="ペルシア語: نوعدهی اردکی" lang="fa" hreflang="fa" data-title="نوعدهی اردکی" data-language-autonym="فارسی" data-language-local-name="ペルシア語" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Ankkatyypitys" title="フィンランド語: Ankkatyypitys" lang="fi" hreflang="fi" data-title="Ankkatyypitys" data-language-autonym="Suomi" data-language-local-name="フィンランド語" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Duck_typing" title="フランス語: Duck typing" lang="fr" hreflang="fr" data-title="Duck typing" data-language-autonym="Français" data-language-local-name="フランス語" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/Tipado_Pato" title="ガリシア語: Tipado Pato" lang="gl" hreflang="gl" data-title="Tipado Pato" data-language-autonym="Galego" data-language-local-name="ガリシア語" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Duck_typing" title="イタリア語: Duck typing" lang="it" hreflang="it" data-title="Duck typing" data-language-autonym="Italiano" data-language-local-name="イタリア語" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%8D%95_%ED%83%80%EC%9D%B4%ED%95%91" title="韓国語: 덕 타이핑" lang="ko" hreflang="ko" data-title="덕 타이핑" data-language-autonym="한국어" data-language-local-name="韓国語" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%A1%E0%B4%95%E0%B5%8D%E0%B4%95%E0%B5%8D_%E0%B4%9F%E0%B5%88%E0%B4%AA%E0%B5%8D%E0%B4%AA%E0%B4%BF%E0%B4%82%E0%B4%97%E0%B5%8D" title="マラヤーラム語: ഡക്ക് ടൈപ്പിംഗ്" lang="ml" hreflang="ml" data-title="ഡക്ക് ടൈപ്പിംഗ്" data-language-autonym="മലയാളം" data-language-local-name="マラヤーラム語" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Penjenisan_itik" title="マレー語: Penjenisan itik" lang="ms" hreflang="ms" data-title="Penjenisan itik" data-language-autonym="Bahasa Melayu" data-language-local-name="マレー語" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Duck-typing" title="オランダ語: Duck-typing" lang="nl" hreflang="nl" data-title="Duck-typing" data-language-autonym="Nederlands" data-language-local-name="オランダ語" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Duck_typing" title="ポーランド語: Duck typing" lang="pl" hreflang="pl" data-title="Duck typing" data-language-autonym="Polski" data-language-local-name="ポーランド語" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Duck_typing" title="ポルトガル語: Duck typing" lang="pt" hreflang="pt" data-title="Duck typing" data-language-autonym="Português" data-language-local-name="ポルトガル語" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%A3%D1%82%D0%B8%D0%BD%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="ロシア語: Утиная типизация" lang="ru" hreflang="ru" data-title="Утиная типизация" data-language-autonym="Русский" data-language-local-name="ロシア語" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Duck_typing" title="シンプル英語: Duck typing" lang="en-simple" hreflang="en-simple" data-title="Duck typing" data-language-autonym="Simple English" data-language-local-name="シンプル英語" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Duck_typing" title="スウェーデン語: Duck typing" lang="sv" hreflang="sv" data-title="Duck typing" data-language-autonym="Svenska" data-language-local-name="スウェーデン語" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%94%E0%B8%B1%E0%B8%81%E0%B9%84%E0%B8%97%E0%B8%9B%E0%B8%9B%E0%B8%B4%E0%B8%87" title="タイ語: ดักไทปปิง" lang="th" hreflang="th" data-title="ดักไทปปิง" data-language-autonym="ไทย" data-language-local-name="タイ語" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Duck_Typing" title="トルコ語: Duck Typing" lang="tr" hreflang="tr" data-title="Duck Typing" data-language-autonym="Türkçe" data-language-local-name="トルコ語" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9A%D0%B0%D1%87%D0%B8%D0%BD%D0%B0_%D1%82%D0%B8%D0%BF%D1%96%D0%B7%D0%B0%D1%86%D1%96%D1%8F" title="ウクライナ語: Качина типізація" lang="uk" hreflang="uk" data-title="Качина типізація" data-language-autonym="Українська" data-language-local-name="ウクライナ語" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E9%B8%AD%E5%AD%90%E7%B1%BB%E5%9E%8B" title="中国語: 鸭子类型" lang="zh" hreflang="zh" data-title="鸭子类型" data-language-autonym="中文" data-language-local-name="中国語" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q374282#sitelinks-wikipedia" title="言語間リンクを編集" class="wbc-editpage">リンクを編集</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="名前空間"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="本文を閲覧 [c]" accesskey="c"><span>ページ</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" rel="discussion" title="本文ページについての議論 [t]" accesskey="t"><span>ノート</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="別の言語に切り替える" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">日本語</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="表示"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"><span>閲覧</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit" title="このページのソースコードを編集する [e]" accesskey="e"><span>編集</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=history" title="このページの過去の版 [h]" accesskey="h"><span>履歴表示</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="ページツール"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="ツール" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">ツール</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">ツール</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">非表示</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="その他の操作" > <div class="vector-menu-heading"> 操作 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"><span>閲覧</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit" title="このページのソースコードを編集する [e]" accesskey="e"><span>編集</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=history"><span>履歴表示</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> 全般 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%83%AA%E3%83%B3%E3%82%AF%E5%85%83/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ここにリンクしている全ウィキページの一覧 [j]" accesskey="j"><span>リンク元</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E9%96%A2%E9%80%A3%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%9B%B4%E6%96%B0%E7%8A%B6%E6%B3%81/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" rel="nofollow" title="このページからリンクしているページの最近の更新 [k]" accesskey="k"><span>関連ページの更新状況</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89" title="ファイルをアップロードする [u]" accesskey="u"><span>ファイルをアップロード</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E7%89%B9%E5%88%A5%E3%83%9A%E3%83%BC%E3%82%B8%E4%B8%80%E8%A6%A7" title="特別ページの一覧 [q]" accesskey="q"><span>特別ページ</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&oldid=88205464" title="このページのこの版への固定リンク"><span>この版への固定リンク</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=info" title="このページについての詳細情報"><span>ページ情報</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%81%93%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%BC%95%E7%94%A8&page=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&id=88205464&wpFormIdentifier=titleform" title="このページの引用方法"><span>このページを引用</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:UrlShortener&url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2583%2580%25E3%2583%2583%25E3%2582%25AF%25E3%2583%25BB%25E3%2582%25BF%25E3%2582%25A4%25E3%2583%2594%25E3%2583%25B3%25E3%2582%25B0"><span>短縮URLを取得する</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:QrCode&url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2583%2580%25E3%2583%2583%25E3%2582%25AF%25E3%2583%25BB%25E3%2582%25BF%25E3%2582%25A4%25E3%2583%2594%25E3%2583%25B3%25E3%2582%25B0"><span>QRコードをダウンロード</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> 印刷/書き出し </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%96%E3%83%83%E3%82%AF&bookcmd=book_creator&referer=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"><span>ブックの新規作成</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:DownloadAsPdf&page=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=show-download-screen"><span>PDF 形式でダウンロード</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&printable=yes" title="このページの印刷用ページ [p]" accesskey="p"><span>印刷用バージョン</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> 他のプロジェクト </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q374282" title="関連付けられたデータリポジトリ項目へのリンク [g]" accesskey="g"><span>ウィキデータ項目</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="ページツール"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="表示"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">表示</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">非表示</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">出典: フリー百科事典『ウィキペディア(Wikipedia)』</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="ja" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r101304250">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="plainlinks metadata ambox ambox-delete" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Icons8_flat_fine_print.svg/45px-Icons8_flat_fine_print.svg.png" decoding="async" width="45" height="45" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Icons8_flat_fine_print.svg/68px-Icons8_flat_fine_print.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/be/Icons8_flat_fine_print.svg/90px-Icons8_flat_fine_print.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span"><b>このページは<a href="/wiki/Wikipedia:%E8%91%97%E4%BD%9C%E6%A8%A9" title="Wikipedia:著作権">著作権侵害</a>のおそれが指摘されており、<a href="/wiki/Wikipedia:%E8%91%97%E4%BD%9C%E6%A8%A9%E5%95%8F%E9%A1%8C%E8%AA%BF%E6%9F%BB%E4%BE%9D%E9%A0%BC" title="Wikipedia:著作権問題調査依頼">事実関係の調査が依頼</a>されています。</b> <p>このページの現在または過去の版は、ウェブサイトや書籍などの著作物からの無断転載を含んでいるおそれが指摘されています。もしあなたが転載元などをご存知なら、どうぞ<a href="/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ノート:ダック・タイピング">このページのノート</a>までご一報ください。 </p> <b>著作権侵害が確認されると、このページは<a href="/wiki/Wikipedia:%E5%89%8A%E9%99%A4%E3%81%AE%E6%96%B9%E9%87%9D" title="Wikipedia:削除の方針">削除の方針</a>により一部の版または全体が<a href="/wiki/Wikipedia:%E5%89%8A%E9%99%A4" title="Wikipedia:削除">削除</a>されます。</b>もしこのページの加筆や二次利用をお考えでしたら、この点を十分にご認識ください。</div></td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101304250"><table class="box-脚注の不足 plainlinks metadata ambox ambox-style" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/c/cc/Circle-icons-dev.svg/38px-Circle-icons-dev.svg.png" decoding="async" width="38" height="38" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/cc/Circle-icons-dev.svg/57px-Circle-icons-dev.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/cc/Circle-icons-dev.svg/76px-Circle-icons-dev.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">この記事には<a href="/wiki/Wikipedia:%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB/%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88#参考文献" title="Wikipedia:スタイルマニュアル/レイアウト">参考文献</a>や<a href="/wiki/Wikipedia:%E5%A4%96%E9%83%A8%E3%83%AA%E3%83%B3%E3%82%AF" title="Wikipedia:外部リンク">外部リンク</a>の一覧が含まれていますが、<b><a href="/wiki/Help:%E8%84%9A%E6%B3%A8" title="Help:脚注">脚注</a>による参照が不十分であるため、情報源が依然不明確です</b>。<span class="hide-when-compact"> 適切な位置に脚注を追加して、記事の<a href="/wiki/Wikipedia:%E6%A4%9C%E8%A8%BC%E5%8F%AF%E8%83%BD%E6%80%A7" title="Wikipedia:検証可能性">信頼性向上</a>にご協力ください。<small>(<span title="2019-03">2019年3月</span>)</small></span></div></td></tr></tbody></table> <style data-mw-deduplicate="TemplateStyles:r101384370">.mw-parser-output .sidebar{width:auto;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:75%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:720px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}</style><table class="sidebar nomobile nowraplinks"><tbody><tr><th class="sidebar-title" style="background-color: rgba(51, 153, 255, 0.15);"><a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型システム</a></th></tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> 主要カテゴリ</th></tr><tr><td class="sidebar-content" style="text-align:center;"> <a href="/wiki/%E9%9D%99%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="静的型付け">静的型付け</a> vs <a href="/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="動的型付け">動的型付け</a><br /><a href="https://en.wikipedia.org/wiki/Strong_and_weak_typing" class="extiw" title="en:Strong and weak typing">強い</a> vs <a href="https://en.wikipedia.org/wiki/Strong_and_weak_typing" class="extiw" title="en:Strong and weak typing">弱い</a><br /><a href="https://en.wikipedia.org/wiki/Manifest_typing" class="extiw" title="en:Manifest typing">明示的</a> vs <a href="/wiki/%E5%9E%8B%E6%8E%A8%E8%AB%96" title="型推論">型推論</a><br /><a href="https://en.wikipedia.org/wiki/Nominal_type_system" class="extiw" title="en:Nominal type system">名前的</a> vs <a href="https://en.wikipedia.org/wiki/Structural_type_system" class="extiw" title="en:Structural type system">構造的</a><br /><a class="mw-selflink selflink">ダックタイピング</a><br /></td> </tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> マイナーカテゴリ</th></tr><tr><td class="sidebar-content" style="text-align:center;"> <a href="/wiki/%E3%82%B5%E3%83%96%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="サブタイピング (計算機科学)">部分型</a><br /><a href="/wiki/%E5%86%8D%E5%B8%B0%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B" title="再帰データ型">再帰型</a><br /><a href="https://en.wikipedia.org/wiki/Substructural_type_system" class="extiw" title="en:Substructural type system">部分構造型</a><br /><a href="/wiki/%E4%BE%9D%E5%AD%98%E5%9E%8B" title="依存型">依存型</a><br /><a href="https://en.wikipedia.org/wiki/Gradual_typing" class="extiw" title="en:Gradual typing">漸進的型付け</a><br /><a href="https://en.wikipedia.org/wiki/Flow-sensitive_typing" class="extiw" title="en:Flow-sensitive typing">フロータイピング</a><br /><a href="https://en.wikipedia.org/wiki/Latent_typing" class="extiw" title="en:Latent typing">潜在的型付け</a></td> </tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> 型理論のコンセプト</th></tr><tr><td class="sidebar-content" style="text-align:center;"> <a href="https://en.wikipedia.org/wiki/Product_type" class="extiw" title="en:Product type">直積型</a> - <a href="https://en.wikipedia.org/wiki/Sum_type" class="extiw" title="en:Sum type">直和型</a><br /><a href="https://en.wikipedia.org/wiki/Intersection_type" class="extiw" title="en:Intersection type">交差型</a> - <a href="https://en.wikipedia.org/wiki/Union_type" class="extiw" title="en:Union type">共用型</a><br /><a href="https://en.wikipedia.org/wiki/Unit_type" class="extiw" title="en:Unit type">単一型</a> - <a href="https://en.wikipedia.org/wiki/Option_type" class="extiw" title="en:Option type">選択型</a><br /><a href="https://en.wikipedia.org/wiki/Inductive_type" class="extiw" title="en:Inductive type">帰納型</a> - <a href="https://en.wikipedia.org/wiki/Refinement_type" class="extiw" title="en:Refinement type">精製型</a><br /><a href="https://en.wikipedia.org/wiki/Top_type" class="extiw" title="en:Top type">トップ型</a> - <a href="/wiki/%E3%83%9C%E3%83%88%E3%83%A0%E5%9E%8B" title="ボトム型">ボトム型</a><br /><a href="https://en.wikipedia.org/wiki/Function_type" class="extiw" title="en:Function type">函数型</a> - <a href="https://en.wikipedia.org/wiki/Quotient_type" class="extiw" title="en:Quotient type">商型</a><br /><a href="https://en.wikipedia.org/wiki/System_F" class="extiw" title="en:System F">全称型</a> - <a href="https://en.wikipedia.org/wiki/Existential_type" class="extiw" title="en:Existential type">存在型</a><br /><a href="https://en.wikipedia.org/wiki/Uniqueness_type" class="extiw" title="en:Uniqueness type">一意型</a> - <a href="https://en.wikipedia.org/wiki/Substructural_type_system#Linear_type_systems" class="extiw" title="en:Substructural type system">線形型</a></td> </tr></tbody></table> <p><b>ダック・タイピング</b>(<a href="/wiki/%E8%8B%B1%E8%AA%9E" title="英語">英</a>: <span lang="en">duck typing</span>)とは、<a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a>、<a href="/wiki/Perl" title="Perl">Perl</a>、<a href="/wiki/PHP_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)" title="PHP (プログラミング言語)">PHP</a>、<a href="/wiki/Python" title="Python">Python</a>、<a href="/wiki/Ruby" title="Ruby">Ruby</a>、<a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>などの<a href="/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="動的型付け">動的型付け</a>に対応した<a href="/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="オブジェクト指向プログラミング">オブジェクト指向</a><a href="/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E" title="プログラミング言語">プログラミング言語</a>に特徴的な、<a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型付け</a>のスタイル(作法)のひとつである。ダック・タイピングは<a href="/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ポリモーフィズム">ポリモーフィズム</a>(多態性)を実現する手段のひとつとして使われる<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>。 </p><p>Pythonのリファレンスでは、ダック・タイピングは「あるオブジェクトが正しいインタフェースを持っているかどうかを決定するために、オブジェクトの型を見ることはしないプログラミングスタイルである」と説明されている。代わりに、<a href="/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="オブジェクト (プログラミング)">オブジェクト</a>が持つ<a href="/wiki/%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="メソッド (計算機科学)">メソッド</a>や属性(<a href="/wiki/%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="フィールド (計算機科学)">フィールド</a>または<a href="/wiki/%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="プロパティ (プログラミング)">プロパティ</a>)が単純に呼ばれたり使われたりする。特定の型よりもインタフェースを重視することで、うまく設計されたコードは、ポリモーフィックな代入の許可による柔軟性を向上する<sup id="cite_ref-python_glossary_duck_typing_2-0" class="reference"><a href="#cite_note-python_glossary_duck_typing-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>。 </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="概要"><span id=".E6.A6.82.E8.A6.81"></span>概要</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=1" title="節を編集: 概要"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>静的型付け言語では型検査をコンパイル時に実施する一方、動的型付け言語では型検査を実行時に実施する<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>。つまり、動的型付けでは、<a href="/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="オブジェクト (プログラミング)">オブジェクト</a>(変数の<a href="/wiki/%E5%80%A4_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)" class="mw-redirect" title="値 (情報工学)">値</a>)に何ができるか(どのようなインタフェースを持っているか)は、実行時のオブジェクトそのものが決定する。 </p><p>ダック・タイピングについて、<a href="/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="継承 (プログラミング)">継承</a>機能によるサブタイプ(<a href="/wiki/%E9%83%A8%E5%88%86%E5%9E%8B" class="mw-redirect" title="部分型">部分型</a>)<a href="/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ポリモーフィズム">多相</a> (<span lang="en">subtype polymorphism</span>)<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> を主に用いる<a href="/wiki/%E9%9D%99%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="静的型付け">静的型付け</a>のオブジェクト指向言語である<a href="/wiki/Java" title="Java">Java</a>や<a href="/wiki/C_Sharp" title="C Sharp">C#</a>の概念で例えると、オブジェクトがある<a href="/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9_(%E6%8A%BD%E8%B1%A1%E5%9E%8B)" title="インタフェース (抽象型)">インタフェース</a>のすべてのメソッドを持っているならば、たとえそのクラスがそのインタフェースを宣言的に実装していなくとも、オブジェクトはそのインタフェースを実行時に実装しているとみなせる、ということである。それはまた、同じインタフェースを実装するオブジェクト同士が、それぞれがどのような<a href="/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="継承 (プログラミング)">継承</a>階層を持っているのかということと無関係に、相互に交換可能であるという意味でもある。ダック・タイピングは構造的型付け (<span lang="en">structural typing</span>) に類似しており、構造的型付けの多態性(多相性)は<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%AD%E3%83%BC%E5%A4%9A%E7%9B%B8&action=edit&redlink=1" class="new" title="「ロー多相」 (存在しないページ)">ロー多相</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Row_polymorphism" class="extiw" title="en:Row polymorphism">英語版</a>)</span></span> (<span lang="en">row polymorphism</span>) に分類されることがある<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>(日本語では行多相<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>あるいは列多相<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>とも)。構造的型付けは名前的型付け (<span lang="en">nominal typing / nominative typing</span>) <sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>注釈 1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>と対比される<a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型システム</a>の分類のひとつである。 </p><p>この用語の名前は「<a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88" title="ダック・テスト">ダック・テスト</a>」に由来する。 </p> <blockquote><p>"If it walks like a duck and quacks like a duck, it must be a duck"</p></blockquote><p>(もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルに違いない) </p><p><style data-mw-deduplicate="TemplateStyles:r86009555">@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}</style><span class="fix-domain" title="この記述には信頼できる情報源の提示が求められています。(2021-09)"><a href="/w/index.php?title=%E3%83%87%E3%83%BC%E3%83%96%E3%83%BB%E3%83%88%E3%83%BC%E3%83%9E%E3%82%B9&action=edit&redlink=1" class="new" title="「デーブ・トーマス」 (存在しないページ)">デーブ・トーマス</a>はRuby<a href="/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3" title="インターネットコミュニティ">コミュニティ</a>で初めてこの言葉を使ったと考えられている。</span><sup class="noprint Template-Fact">[<i><a href="/wiki/Wikipedia:%E3%80%8C%E8%A6%81%E5%87%BA%E5%85%B8%E3%80%8D%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%95%E3%82%8C%E3%81%9F%E6%96%B9%E3%81%B8" title="Wikipedia:「要出典」をクリックされた方へ"><span title="この記述には信頼できる情報源の提示が求められています。(2021-09)">要出典</span></a></i>]</sup> </p><p><a href="/wiki/C%2B%2B" title="C++">C++</a>の<a href="/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="テンプレート (プログラミング)">テンプレート</a>はダック・タイピングの静的版である。例えば、<a href="/wiki/Standard_Template_Library" title="Standard Template Library">STL</a>における各種のiteratorはIterator基底クラスのようなものからメソッドを継承しているわけではないが、特定の演算子を利用できて同じ構文でコンパイルが通るならば、それはiteratorの一種として扱える。この文脈で言う「同じインタフェースを持つ」とは、コンパイラにとって<a href="/wiki/%E3%82%B7%E3%82%B0%E3%83%8D%E3%83%81%E3%83%A3" class="mw-disambig" title="シグネチャ">シグネチャ</a>などのインタフェースが同じだということである。したがって、iteratorの実装はオブジェクトである必要すらない。 </p><p>もう1つ、ダック・タイピングに似たアプローチに<a href="/wiki/OCaml" title="OCaml">OCaml</a>の構造的サブタイピング (<span lang="en">structural subtyping</span>) がある<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>注釈 2<span class="cite-bracket">]</span></a></sup>。メソッドのシグネチャが互換ならば、宣言上の継承関係はなくとも、オブジェクトの型は互換であるというものである。これはOCamlの<a href="/wiki/%E5%9E%8B%E6%8E%A8%E8%AB%96" title="型推論">型推論</a>システムによってコンパイル時にすべて決定される(コンパイラによる静的な型検査を受ける)。<a href="/wiki/TypeScript" title="TypeScript">TypeScript</a>の型互換性も構造的サブタイピングに基づいている<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>。対義語は名前的サブタイピング (<span lang="en">nominal subtyping</span>) であり、例えばJavaやC#などの継承ベースの型システムで用いられている方式のことである。 </p><p>PythonやRubyは一般的なクラス継承の機能も持っており、継承によるポリモーフィズムも利用できるが、ダック・タイピングによるポリモーフィズムは継承が不要であり、型による制約に縛られることなく簡素なコードで実現できる点にメリットがある。しかし、制約がないということは乱用しやすいということの裏返しでもある。型制約がない場合はコンパイラによる静的な型検査や<a href="/wiki/%E7%B5%B1%E5%90%88%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83" title="統合開発環境">統合開発環境</a> (IDE) によるコード補完などの支援が見込めず、プログラムの記述ミスを発見するのが難しくなることもある。Pythonのダック・タイピングでは、オブジェクトが特定の属性を実際に持っているかどうかを<code>hasattr()</code>で事前チェックしたり、例外処理を記述したりする方法が採られる<sup id="cite_ref-python_glossary_duck_typing_2-1" class="reference"><a href="#cite_note-python_glossary_duck_typing-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>。Pythonはダック・タイピングを補完するために抽象基底クラスの機能を導入した<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>。 </p> <div class="mw-heading mw-heading2"><h2 id="Rubyでの例"><span id="Ruby.E3.81.A7.E3.81.AE.E4.BE.8B"></span>Rubyでの例</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=2" title="節を編集: Rubyでの例"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Rubyでの単純な例を示す。 </p> <div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">test</span><span class="p">(</span><span class="n">foo</span><span class="p">)</span> <span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="n">foo</span><span class="o">.</span><span class="n">sound</span> <span class="k">end</span> <span class="k">class</span><span class="w"> </span><span class="nc">Duck</span> <span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">sound</span> <span class="w"> </span><span class="s1">'quack'</span> <span class="w"> </span><span class="k">end</span> <span class="k">end</span> <span class="k">class</span><span class="w"> </span><span class="nc">Cat</span> <span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">sound</span> <span class="w"> </span><span class="s1">'myaa'</span> <span class="w"> </span><span class="k">end</span> <span class="k">end</span> <span class="nb">test</span><span class="p">(</span><span class="no">Duck</span><span class="o">.</span><span class="n">new</span><span class="p">)</span> <span class="nb">test</span><span class="p">(</span><span class="no">Cat</span><span class="o">.</span><span class="n">new</span><span class="p">)</span> </pre></div> <p>出力は以下である。 </p> <pre>quack myaa </pre> <p>2つのクラスに継承の関係が無いことに注目して欲しい。上記の<code>test</code>メソッドは、<code>sound</code>という名前のメンバーを持つオブジェクトであれば何でも受け付ける。なお、Rubyの<code>puts</code>は引数オブジェクトを自動的に文字列に変換して標準出力に出力する<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>ため、仮に文字列以外を返す<code>sound</code>であっても受け付ける。このような柔軟性が動的言語の特徴である。 </p> <div class="mw-heading mw-heading2"><h2 id="C++での例"><span id="C.2B.2B.E3.81.A7.E3.81.AE.E4.BE.8B"></span>C++での例</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=3" title="節を編集: C++での例"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>上記Rubyの例をC++で記述すると、以下のようになる。 </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span> <span class="k">template</span><span class="w"> </span><span class="o"><</span><span class="k">class</span><span class="w"> </span><span class="nc">T</span><span class="o">></span> <span class="kt">void</span><span class="w"> </span><span class="n">test</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">T</span><span class="o">&</span><span class="w"> </span><span class="n">t</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">sound</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">struct</span><span class="w"> </span><span class="nc">Duck</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="nf">sound</span><span class="p">()</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"quack"</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">};</span> <span class="k">struct</span><span class="w"> </span><span class="nc">Cat</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="nf">sound</span><span class="p">()</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"myaa"</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">};</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">test</span><span class="p">(</span><span class="n">Duck</span><span class="p">());</span> <span class="w"> </span><span class="n">test</span><span class="p">(</span><span class="n">Cat</span><span class="p">());</span> <span class="p">}</span> </pre></div> <p>実行結果はRubyの例と同じである。ただし、テンプレートによるダック・タイピングはコンパイル時に解決される静的なポリモーフィズム (static polymorphism) であり、動的型付け言語とは異なり実行時のオーバーヘッドを伴わない。 </p> <div class="mw-heading mw-heading2"><h2 id="C#での例"><span id="C.23.E3.81.A7.E3.81.AE.E4.BE.8B"></span>C#での例</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=4" title="節を編集: C#での例"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>C#はバージョン4.0で動的型付けを可能にする<code>dynamic</code>型が使えるようになった。<code>dynamic</code>は内部的には<a href="/wiki/%E3%83%AA%E3%83%95%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)" title="リフレクション (情報工学)">リフレクション</a>を利用して実装されており、該当するメソッドやプロパティの存在有無を実行時に遅延評価する。シンボル解決に失敗した場合は例外がスローされる<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>。 </p> <div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">using</span><span class="w"> </span><span class="nn">System</span><span class="p">;</span> <span class="k">class</span><span class="w"> </span><span class="nc">Duck</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="nf">Sound</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"quack"</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="k">class</span><span class="w"> </span><span class="nc">Cat</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="nf">Sound</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"myaa"</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="k">public</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">DuckTypingTest</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">Test</span><span class="p">(</span><span class="kt">dynamic</span><span class="w"> </span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">obj</span><span class="p">.</span><span class="n">Sound</span><span class="p">());</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">Main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Test</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Duck</span><span class="p">());</span> <span class="w"> </span><span class="n">Test</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Cat</span><span class="p">());</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>なお、C#はC++のテンプレートに似た機能として<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9" class="mw-redirect" title="ジェネリクス">ジェネリクス</a>をサポートするが、C++テンプレートほどの柔軟性はなく、ダック・タイピングに使用することはできない<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>。 </p> <div class="mw-heading mw-heading2"><h2 id="VB.NETでの例"><span id="VB.NET.E3.81.A7.E3.81.AE.E4.BE.8B"></span>VB.NETでの例</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=5" title="節を編集: VB.NETでの例"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Visual_Basic_.NET" title="Visual Basic .NET">Visual Basic .NET</a> (VB.NET) は<code>Option Strict Off</code>が指定されている場合、<code>System.Object</code>型による遅延バインディング (late binding) ができるようになり、これによりダック・タイピングをサポートできる<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>。これは、VB.NETが登場当初から従来の<a href="/wiki/Visual_Basic" title="Visual Basic">Visual Basic</a>および<a href="/wiki/Visual_Basic_for_Applications" title="Visual Basic for Applications">Visual Basic for Applications</a> (VBA) からの移行を狙っていたため、ゆるい型付けをサポートする必要があったことに由来する。 </p><p>下記の例は、<code>Option Strict On</code>を指定すると静的な型チェックが有効になり、コンパイルエラーになる。 </p> <div class="mw-highlight mw-highlight-lang-vb.net mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">Option</span><span class="w"> </span><span class="kd">Strict</span><span class="w"> </span><span class="kd">Off</span><span class="w"> </span><span class="c">' 遅延バインディングを許可する。</span> <span class="c">'Option Strict On ' 遅延バインディングを許可しない。</span> <span class="k">Imports</span><span class="w"> </span><span class="nn">System</span> <span class="k">Class</span><span class="w"> </span><span class="nc">Duck</span> <span class="w"> </span><span class="k">Public</span><span class="w"> </span><span class="k">Function</span><span class="w"> </span><span class="nf">Sound</span><span class="p">()</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="kt">String</span> <span class="w"> </span><span class="k">Return</span><span class="w"> </span><span class="s">"quack"</span> <span class="w"> </span><span class="k">End</span><span class="w"> </span><span class="k">Function</span> <span class="k">End</span><span class="w"> </span><span class="k">Class</span> <span class="k">Class</span><span class="w"> </span><span class="nc">Cat</span> <span class="w"> </span><span class="k">Public</span><span class="w"> </span><span class="k">Function</span><span class="w"> </span><span class="nf">Sound</span><span class="p">()</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="kt">String</span> <span class="w"> </span><span class="k">Return</span><span class="w"> </span><span class="s">"myaa"</span> <span class="w"> </span><span class="k">End</span><span class="w"> </span><span class="k">Function</span> <span class="k">End</span><span class="w"> </span><span class="k">Class</span> <span class="k">Public</span><span class="w"> </span><span class="k">Class</span><span class="w"> </span><span class="nc">DuckTypingTest</span> <span class="w"> </span><span class="k">Shared</span><span class="w"> </span><span class="k">Sub</span><span class="w"> </span><span class="nf">Test</span><span class="p">(</span><span class="n">obj</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="kt">Object</span><span class="p">)</span> <span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">obj</span><span class="p">.</span><span class="n">Sound</span><span class="p">())</span> <span class="w"> </span><span class="k">End</span><span class="w"> </span><span class="k">Sub</span> <span class="w"> </span><span class="k">Public</span><span class="w"> </span><span class="k">Shared</span><span class="w"> </span><span class="k">Sub</span><span class="w"> </span><span class="nf">Main</span><span class="p">()</span> <span class="w"> </span><span class="n">Test</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Duck</span><span class="p">())</span> <span class="w"> </span><span class="n">Test</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Cat</span><span class="p">())</span> <span class="w"> </span><span class="k">End</span><span class="w"> </span><span class="k">Sub</span> <span class="k">End</span><span class="w"> </span><span class="k">Class</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="その他の言語など"><span id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E8.A8.80.E8.AA.9E.E3.81.AA.E3.81.A9"></span>その他の言語など</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=6" title="節を編集: その他の言語など"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Javaは言語構文レベルで動的型付けをサポートしないが、リフレクションを用いることで、ダック・タイピング相当を実現できる。Core Reflection APIとして、<code><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/jp/9/docs/api/java/lang/reflect/package-summary.html">java.lang.reflect</a></code>パッケージが用意されている<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>。また、<a href="/wiki/Java_Native_Interface" title="Java Native Interface">Java Native Interface</a> (JNI) を用いることで、<a href="/wiki/C%E8%A8%80%E8%AA%9E" title="C言語">C言語</a>や<a href="/wiki/C%2B%2B" title="C++">C++</a>などのネイティブコードからJavaで書かれたクラスを利用することができるが、リフレクション同様にダック・タイピングに応用することもできる。 </p><p><a href="/wiki/Component_Object_Model" title="Component Object Model">COM</a>においても、<code>IDispatch</code>インタフェース<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>を実装することで、ダック・タイピング相当を実現できる。<a href="/wiki/VBScript" title="VBScript">VBScript</a>や<a href="/wiki/JScript" title="JScript">JScript</a>といったスクリプト言語(動的プログラミング言語)の実装を容易にするための基盤として、拡張インタフェース<code>IDispatchEx</code>も用意されている<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>。 </p> <div class="mw-heading mw-heading2"><h2 id="脚注"><span id=".E8.84.9A.E6.B3.A8"></span>脚注</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=7" title="節を編集: 脚注"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="注釈"><span id=".E6.B3.A8.E9.87.88"></span>注釈</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=8" title="節を編集: 注釈"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="reflist" style="list-style-type: decimal;"> <ol class="references"> <li id="cite_note-8"><b><a href="#cite_ref-8">^</a></b> <span class="reference-text"><a href="/wiki/%E8%8B%B1%E8%AA%9E" title="英語">英</a>: <span lang="en">nominal</span>は公称的、名目的または記名的とも訳される。</span> </li> <li id="cite_note-10"><b><a href="#cite_ref-10">^</a></b> <span class="reference-text">typingは「型付け」と訳されることが多いが、subclassingは「サブクラス化」と訳されることが多い。subtypingは「部分型付け」や「サブタイプ化」としてもよいかもしれないが、本記事ではduck typingを「ダック・タイピング」とカナ表記しているのでそれに準じることにする。</span> </li> </ol></div> <div class="mw-heading mw-heading3"><h3 id="出典"><span id=".E5.87.BA.E5.85.B8"></span>出典</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=9" title="節を編集: 出典"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="reflist" style="list-style-type: decimal;"> <ol class="references"> <li id="cite_note-1"><b><a href="#cite_ref-1">^</a></b> <span class="reference-text"><cite class="citation web" style="font-style:normal">“<a rel="nofollow" class="external text" href="https://techiehours.com/python/python-duck-typing/">Python Duck Typing - Example</a>” (英語). <i>Techie Hours</i> (2020年6月28日). <span title="">2020年7月26日</span>閲覧。</cite></span> </li> <li id="cite_note-python_glossary_duck_typing-2">^ <a href="#cite_ref-python_glossary_duck_typing_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-python_glossary_duck_typing_2-1"><sup><i><b>b</b></i></sup></a> <span class="reference-text"><cite class="citation web" style="font-style:normal">Python Software Foundation. “<a rel="nofollow" class="external text" href="https://docs.python.org/3/glossary.html#term-duck-typing">Glossary — Python 3.7.1 documentation, §duck-typing</a>”. <i>docs.python.org</i>. <span title="">2018年11月8日</span>閲覧。</cite></span> </li> <li id="cite_note-3"><b><a href="#cite_ref-3">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.oracle.com/cd/E57471_01/bigData.100/extensions_bdd/src/cext_transform_typing.html">Dynamic typing vs. static typing | Oracle</a></span> </li> <li id="cite_note-4"><b><a href="#cite_ref-4">^</a></b> <span class="reference-text"><cite style="font-style:normal" class="citation book">Benjamin C. Pierce「第15章 部分型付け」『型システム入門 −プログラミング言語と型の理論−』オーム社、2013年3月26日。<style data-mw-deduplicate="TemplateStyles:r101121245">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:var(--color-success,#3a3);margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}</style><a href="/wiki/ISBN" title="ISBN">ISBN</a> <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/978-4274069116" title="特別:文献資料/978-4274069116">978-4274069116</a>。</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.btitle=%E7%AC%AC15%E7%AB%A0+%E9%83%A8%E5%88%86%E5%9E%8B%E4%BB%98%E3%81%91&rft.atitle=%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A5%E9%96%80+%E2%88%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%A8%E5%9E%8B%E3%81%AE%E7%90%86%E8%AB%96%E2%88%92&rft.aulast=Benjamin+C.+Pierce&rft.au=Benjamin+C.+Pierce&rft.date=2013-03-26&rft.pub=%E3%82%AA%E3%83%BC%E3%83%A0%E7%A4%BE&rft.isbn=978-4274069116&rfr_id=info:sid/ja.wikipedia.org:%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"><span style="display: none;"> </span></span></span> </li> <li id="cite_note-5"><b><a href="#cite_ref-5">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/~aldrich/courses/819/slides/rows.pdf">Objects and Aspects: Row Polymorphism | Neel Krishnaswami, Department of Computer Science, Carnegie Mellon University</a></span> </li> <li id="cite_note-6"><b><a href="#cite_ref-6">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://aratama.github.io/purescript/chapter05.html">実例によるPureScript</a></span> </li> <li id="cite_note-7"><b><a href="#cite_ref-7">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="http://proofcafe.org/~keigoi/pplss2012-ocaml.pdf">OCamlで構築するモダンWeb:型付きHTML5プログラミングの実際 | 有限会社ITプランニング | 今井 敬吾</a></span> </li> <li id="cite_note-9"><b><a href="#cite_ref-9">^</a></b> <span class="reference-text"><cite style="font-style:normal" class="citation book">Benjamin C. Pierce「19.3 名前的型システムと構造的型システム」『型システム入門 −プログラミング言語と型の理論−』オーム社、2013年3月26日。<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101121245"><a href="/wiki/ISBN" title="ISBN">ISBN</a> <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/978-4274069116" title="特別:文献資料/978-4274069116">978-4274069116</a>。</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.btitle=19.3+%E5%90%8D%E5%89%8D%E7%9A%84%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%A8%E6%A7%8B%E9%80%A0%E7%9A%84%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0&rft.atitle=%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A5%E9%96%80+%E2%88%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%A8%E5%9E%8B%E3%81%AE%E7%90%86%E8%AB%96%E2%88%92&rft.aulast=Benjamin+C.+Pierce&rft.au=Benjamin+C.+Pierce&rft.date=2013-03-26&rft.pub=%E3%82%AA%E3%83%BC%E3%83%A0%E7%A4%BE&rft.isbn=978-4274069116&rfr_id=info:sid/ja.wikipedia.org:%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0"><span style="display: none;"> </span></span></span> </li> <li id="cite_note-11"><b><a href="#cite_ref-11">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.typescriptlang.org/docs/handbook/type-compatibility.html">TypeScript: Documentation - Type Compatibility</a></span> </li> <li id="cite_note-12"><b><a href="#cite_ref-12">^</a></b> <span class="reference-text"><cite class="citation web" style="font-style:normal">Python Software Foundation. “<a rel="nofollow" class="external text" href="https://docs.python.org/3/glossary.html#term-abstract-base-class">Glossary — Python 3.10.1 documentation, §abstract base class</a>”. <i>docs.python.org</i>. <span title="">2021年12月19日</span>閲覧。</cite></span> </li> <li id="cite_note-13"><b><a href="#cite_ref-13">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.ruby-lang.org/ja/latest/method/Kernel/m/puts.html">Kernel.#puts (Ruby 3.0.0 リファレンスマニュアル)</a></span> </li> <li id="cite_note-14"><b><a href="#cite_ref-14">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/using-type-dynamic">dynamic 型の使用 - C# プログラミング ガイド | Microsoft Docs</a></span> </li> <li id="cite_note-15"><b><a href="#cite_ref-15">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics">Differences Between C++ Templates and C# Generics - C# Programming Guide | Microsoft Docs</a></span> </li> <li id="cite_note-16"><b><a href="#cite_ref-16">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/variables/object-variable-declaration">Object Variable Declaration - Visual Basic | Microsoft Docs</a></span> </li> <li id="cite_note-17"><b><a href="#cite_ref-17">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/early-late-binding/">Early and Late Binding - Visual Basic | Microsoft Docs</a></span> </li> <li id="cite_note-18"><b><a href="#cite_ref-18">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/jp/1.5.0/guide/reflection/spec/java-reflection.doc.html">Java Core Reflection</a></span> </li> <li id="cite_note-19"><b><a href="#cite_ref-19">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/ja-jp/windows/desktop/winauto/idispatch-interface">IDispatch Interface and Accessibility - Windows applications | Microsoft Docs</a></span> </li> <li id="cite_note-20"><b><a href="#cite_ref-20">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/scripting/winscript/reference/idispatchex-interface">IDispatchEx Interface | Microsoft Docs</a></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="関連項目"><span id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE"></span>関連項目</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=10" title="節を編集: 関連項目"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型システム</a></li> <li><a href="/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="動的型付け">動的型付け</a></li> <li><a href="/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ポリモーフィズム">ポリモーフィズム</a></li> <li><a href="/wiki/%E6%B4%BE%E7%94%9F%E5%9E%8B" class="mw-disambig" title="派生型">派生型</a></li> <li><a href="/wiki/%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF%E3%83%90%E3%82%A4%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0" title="ダイナミックバインディング">ダイナミックバインディング</a></li> <li><a href="/wiki/%E5%8B%95%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E" title="動的プログラミング言語">動的プログラミング言語</a></li> <li><a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88" title="ダック・テスト">ダック・テスト</a></li> <li><a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%83%83%E3%82%AF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="ジェネリックプログラミング">ジェネリックプログラミング</a></li> <li><a href="https://en.wikipedia.org/wiki/Structural_type_system" class="extiw" title="en:Structural type system">en:Structural type system</a>(構造的型システム)</li> <li><a href="https://en.wikipedia.org/wiki/Nominal_type_system" class="extiw" title="en:Nominal type system">en:Nominal type system</a>(名前的型システム)</li> <li><a href="/wiki/%E5%9E%8B%E6%8E%A8%E8%AB%96" title="型推論">型推論</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="外部リンク"><span id=".E5.A4.96.E9.83.A8.E3.83.AA.E3.83.B3.E3.82.AF"></span>外部リンク</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&action=edit&section=11" title="節を編集: 外部リンク"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101304250"><table class="box-雑多な内容の箇条書き plainlinks metadata ambox mbox-small-left ambox-style" role="presentation" style="width:auto;"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><a href="/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:OOjs_UI_icon_broom.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/7/79/OOjs_UI_icon_broom.svg/40px-OOjs_UI_icon_broom.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/79/OOjs_UI_icon_broom.svg/60px-OOjs_UI_icon_broom.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/79/OOjs_UI_icon_broom.svg/80px-OOjs_UI_icon_broom.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></td><td class="mbox-text"><div class="mbox-text-span"><b>この節に<a href="/wiki/Wikipedia:%E9%9B%91%E5%A4%9A%E3%81%AA%E5%86%85%E5%AE%B9%E3%82%92%E7%AE%87%E6%9D%A1%E6%9B%B8%E3%81%8D%E3%81%97%E3%81%9F%E7%AF%80%E3%82%92%E9%81%BF%E3%81%91%E3%82%8B" title="Wikipedia:雑多な内容を箇条書きした節を避ける">雑多な内容が羅列されています</a>。</b><span class="hide-when-compact"> 事項を箇条書きで列挙しただけの節は、本文として組み入れるか、または<a href="/wiki/Wikipedia:%E9%81%8E%E5%89%B0%E3%81%AA%E5%86%85%E5%AE%B9%E3%81%AE%E6%95%B4%E7%90%86" title="Wikipedia:過剰な内容の整理">整理・除去する必要があります</a>。<small>(<span title="2019-03">2019年3月</span>)</small></span></div></td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101304250"><table class="box-精度 plainlinks metadata ambox mbox-small-left ambox-content" role="presentation" style="width:auto;"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/OOjs_UI_icon_helpNotice-ltr-destructive.svg/35px-OOjs_UI_icon_helpNotice-ltr-destructive.svg.png" decoding="async" width="35" height="35" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/OOjs_UI_icon_helpNotice-ltr-destructive.svg/53px-OOjs_UI_icon_helpNotice-ltr-destructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f4/OOjs_UI_icon_helpNotice-ltr-destructive.svg/70px-OOjs_UI_icon_helpNotice-ltr-destructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></td><td class="mbox-text"><div class="mbox-text-span">この節の出典は、<b><a href="/wiki/Wikipedia:%E4%BF%A1%E9%A0%BC%E3%81%A7%E3%81%8D%E3%82%8B%E6%83%85%E5%A0%B1%E6%BA%90" title="Wikipedia:信頼できる情報源">Wikipedia:信頼できる情報源</a>に合致していないおそれがあります</b>。<span class="hide-when-compact"> そのガイドラインに合致しているか確認し、必要であれば改善して下さい。<small>(<span title="2019-03">2019年3月</span>)</small></span></div></td></tr></tbody></table> <ul><li><a rel="nofollow" class="external text" href="http://wiki.rubygarden.org/Ruby/page/show/DuckTyping">Duck Typing: Ruby</a><sup class="noprint Inline-Template nowrap">[<i><a href="/wiki/Wikipedia:%E5%87%BA%E5%85%B8%E3%82%92%E6%98%8E%E8%A8%98%E3%81%99%E3%82%8B#リンク切れの回避と修復" title="Wikipedia:出典を明記する"><span title="外部リンクがリンク切れとなっています。(2021-09)">リンク切れ</span></a></i>]</sup></li> <li><a rel="nofollow" class="external text" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/100511">How to duck type? - the psychology of static typing in Ruby</a></li> <li><a rel="nofollow" class="external text" href="http://www.coconut-palm-software.com/the_visual_editor/?p=25">Java Does Duck Typing</a> <a href="/wiki/2005%E5%B9%B4" title="2005年">2005年</a><a href="/wiki/4%E6%9C%8829%E6%97%A5" title="4月29日">4月29日</a></li> <li><a rel="nofollow" class="external text" href="http://www.beust.com/weblog/archives/000269.html">The Perils of Duck Typing</a> (Java)</li> <li><a rel="nofollow" class="external text" href="http://diveintopython.org/http_web_services/gzip_compression.html#d0e29389">PythonでのGzipFileに関する例</a><sup class="noprint Inline-Template nowrap">[<i><a href="/wiki/Wikipedia:%E5%87%BA%E5%85%B8%E3%82%92%E6%98%8E%E8%A8%98%E3%81%99%E3%82%8B#リンク切れの回避と修復" title="Wikipedia:出典を明記する"><span title="外部リンクがリンク切れとなっています。(2012年12月)">リンク切れ</span></a></i>]</sup></li> <li><a rel="nofollow" class="external text" href="https://www.codeproject.com/Articles/16074/DuckTyping-Runtime-Dynamic-Interface-Implementatio">DuckTyping: Runtime Dynamic Interface Implementation - CodeProject</a> (.NET)</li></ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐66695f89d8‐qdxw8 Cached time: 20241119212406 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.377 seconds Real time usage: 0.869 seconds Preprocessor visited node count: 6617/1000000 Post‐expand include size: 52361/2097152 bytes Template argument size: 13734/2097152 bytes Highest expansion depth: 28/100 Expensive parser function count: 9/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 36365/5000000 bytes Lua time usage: 0.072/10.000 seconds Lua memory usage: 2047141/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 805.611 1 -total 25.27% 203.614 2 Template:Reflist 18.64% 150.156 2 Template:Cite_book 17.98% 144.857 2 Template:Citation/core-ja-jp 14.00% 112.779 2 Template:Citation/identifier 13.55% 109.148 2 Template:ISBN2 6.57% 52.917 1 Template:著作権問題調査依頼 6.44% 51.877 2 Template:Catalog_lookup_link 6.08% 48.969 1 Template:Mbox 4.11% 33.073 1 Template:型システム --> <!-- Saved in parser cache with key jawiki:pcache:793532:|#|:idhash:canonical and timestamp 20241119212406 and revision id 88205464. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">「<a dir="ltr" href="https://ja.wikipedia.org/w/index.php?title=ダック・タイピング&oldid=88205464">https://ja.wikipedia.org/w/index.php?title=ダック・タイピング&oldid=88205464</a>」から取得</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA" title="特別:カテゴリ">カテゴリ</a>: <ul><li><a href="/wiki/Category:%E8%91%97%E4%BD%9C%E6%A8%A9%E5%95%8F%E9%A1%8C%E8%AA%BF%E6%9F%BB%E4%BE%9D%E9%A0%BC" title="Category:著作権問題調査依頼">著作権問題調査依頼</a></li><li><a href="/wiki/Category:%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91" title="Category:オブジェクト指向">オブジェクト指向</a></li><li><a href="/wiki/Category:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0" title="Category:プログラミングパラダイム">プログラミングパラダイム</a></li><li><a href="/wiki/Category:%E5%9E%8B%E7%90%86%E8%AB%96" title="Category:型理論">型理論</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">隠しカテゴリ: <ul><li><a href="/wiki/Category:%E5%8F%82%E7%85%A7%E6%96%B9%E6%B3%95" title="Category:参照方法">参照方法</a></li><li><a href="/wiki/Category:%E5%87%BA%E5%85%B8%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E8%A8%98%E8%BF%B0%E3%81%AE%E3%81%82%E3%82%8B%E8%A8%98%E4%BA%8B/2021%E5%B9%B49%E6%9C%88" title="Category:出典を必要とする記述のある記事/2021年9月">出典を必要とする記述のある記事/2021年9月</a></li><li><a href="/wiki/Category:%E9%9B%91%E5%A4%9A%E3%81%AA%E5%86%85%E5%AE%B9%E3%82%92%E7%AE%87%E6%9D%A1%E6%9B%B8%E3%81%8D%E3%81%97%E3%81%9F%E7%AF%80%E3%81%AE%E3%81%82%E3%82%8B%E8%A8%98%E4%BA%8B_-_2019%E5%B9%B43%E6%9C%88" title="Category:雑多な内容を箇条書きした節のある記事 - 2019年3月">雑多な内容を箇条書きした節のある記事 - 2019年3月</a></li><li><a href="/wiki/Category:%E5%86%85%E5%AE%B9%E3%81%AE%E7%B2%BE%E5%BA%A6%E3%83%BB%E7%A2%BA%E5%BA%A6%E3%81%AB%E6%AC%A0%E3%81%91%E3%81%A6%E3%81%84%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%AE%E3%81%82%E3%82%8B%E8%A8%98%E4%BA%8B" title="Category:内容の精度・確度に欠けている可能性のある記事">内容の精度・確度に欠けている可能性のある記事</a></li><li><a href="/wiki/Category:%E5%A4%96%E9%83%A8%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%8C%E3%83%AA%E3%83%B3%E3%82%AF%E5%88%87%E3%82%8C%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E8%A8%98%E4%BA%8B/2021%E5%B9%B49%E6%9C%88" title="Category:外部リンクがリンク切れになっている記事/2021年9月">外部リンクがリンク切れになっている記事/2021年9月</a></li><li><a href="/wiki/Category:%E5%A4%96%E9%83%A8%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%8C%E3%83%AA%E3%83%B3%E3%82%AF%E5%88%87%E3%82%8C%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E8%A8%98%E4%BA%8B/2012%E5%B9%B412%E6%9C%88" title="Category:外部リンクがリンク切れになっている記事/2012年12月">外部リンクがリンク切れになっている記事/2012年12月</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> 最終更新 2022年2月23日 (水) 13:39 (日時は<a href="/wiki/%E7%89%B9%E5%88%A5:%E5%80%8B%E4%BA%BA%E8%A8%AD%E5%AE%9A#mw-prefsection-rendering" title="特別:個人設定">個人設定</a>で未設定ならば<a href="/wiki/%E5%8D%94%E5%AE%9A%E4%B8%96%E7%95%8C%E6%99%82" title="協定世界時">UTC</a>)。</li> <li id="footer-info-copyright">テキストは<a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ja">クリエイティブ・コモンズ 表示-継承ライセンス</a>のもとで利用できます。追加の条件が適用される場合があります。詳細については<a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">利用規約</a>を参照してください。</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/ja">プライバシー・ポリシー</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">ウィキペディアについて</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:%E5%85%8D%E8%B2%AC%E4%BA%8B%E9%A0%85">免責事項</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">行動規範</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">開発者</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/ja.wikipedia.org">統計</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookieに関する声明</a></li> <li id="footer-places-mobileview"><a href="//ja.m.wikipedia.org/w/index.php?title=%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">モバイルビュー</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-vkl22","wgBackendResponseTime":158,"wgPageParseReport":{"limitreport":{"cputime":"0.377","walltime":"0.869","ppvisitednodes":{"value":6617,"limit":1000000},"postexpandincludesize":{"value":52361,"limit":2097152},"templateargumentsize":{"value":13734,"limit":2097152},"expansiondepth":{"value":28,"limit":100},"expensivefunctioncount":{"value":9,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":36365,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 805.611 1 -total"," 25.27% 203.614 2 Template:Reflist"," 18.64% 150.156 2 Template:Cite_book"," 17.98% 144.857 2 Template:Citation/core-ja-jp"," 14.00% 112.779 2 Template:Citation/identifier"," 13.55% 109.148 2 Template:ISBN2"," 6.57% 52.917 1 Template:著作権問題調査依頼"," 6.44% 51.877 2 Template:Catalog_lookup_link"," 6.08% 48.969 1 Template:Mbox"," 4.11% 33.073 1 Template:型システム"]},"scribunto":{"limitreport-timeusage":{"value":"0.072","limit":"10.000"},"limitreport-memusage":{"value":2047141,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-66695f89d8-qdxw8","timestamp":"20241119212406","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"\u30c0\u30c3\u30af\u30fb\u30bf\u30a4\u30d4\u30f3\u30b0","url":"https:\/\/ja.wikipedia.org\/wiki\/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0","sameAs":"http:\/\/www.wikidata.org\/entity\/Q374282","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q374282","author":{"@type":"Organization","name":"\u30a6\u30a3\u30ad\u30e1\u30c7\u30a3\u30a2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u8ca2\u732e\u8005"},"publisher":{"@type":"Organization","name":"\u30a6\u30a3\u30ad\u30e1\u30c7\u30a3\u30a2\u8ca1\u56e3","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2006-12-05T18:02:53Z","dateModified":"2022-02-23T13:39:30Z"}</script> </body> </html>