CINXE.COM
salemlightstsのブログ
<!DOCTYPE html> <html lang="ja" data-admin-domain="//blog.hatena.ne.jp" data-admin-origin="https://blog.hatena.ne.jp" data-author="salemlightsts" data-avail-langs="ja en" data-blog="salemlightsts.hatenablog.com" data-blog-comments-top-is-new="1" data-blog-host="salemlightsts.hatenablog.com" data-blog-is-public="1" data-blog-name="salemlightstsのブログ" data-blog-owner="salemlightsts" data-blog-show-ads="1" data-blog-show-sleeping-ads="1" data-blog-uri="https://salemlightsts.hatenablog.com/" data-blog-uuid="26006613493684692" data-blogs-uri-base="https://salemlightsts.hatenablog.com" data-brand="hatenablog" data-data-layer="{"hatenablog":{"admin":{},"analytics":{"brand_property_id":"","measurement_id":"","non_sampling_property_id":"","property_id":"","separated_property_id":"UA-29716941-25"},"blog":{"blog_id":"26006613493684692","content_seems_japanese":"true","disable_ads":"","enable_ads":"true","enable_keyword_link":"true","entry_show_footer_related_entries":"true","force_pc_view":"false","is_public":"true","is_responsive_view":"false","is_sleeping":"true","lang":"ja","name":"salemlightsts\u306e\u30d6\u30ed\u30b0","owner_name":"salemlightsts","uri":"https://salemlightsts.hatenablog.com/"},"brand":"hatenablog","page_id":"index","permalink_entry":null,"pro":"free","router_type":"blogs"}}" data-device="pc" data-dont-recommend-pro="false" data-global-domain="https://hatena.blog" data-globalheader-color="b" data-globalheader-type="pc" data-has-touch-view="1" data-help-url="https://help.hatenablog.com" data-page="index" data-parts-domain="https://hatenablog-parts.com" data-plus-available="" data-pro="false" data-router-type="blogs" data-sentry-dsn="https://03a33e4781a24cf2885099fed222b56d@sentry.io/1195218" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-static-domain="https://cdn.blog.st-hatena.com" data-version="1ca111bc9f0112690b12e1842a1ce8" data-initial-state="{}" > <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="robots" content="max-image-preview:large" /> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=7; IE=9; IE=10; IE=11" /> <title>salemlightstsのブログ</title> <link rel="canonical" href="https://salemlightsts.hatenablog.com/"/> <meta itemprop="name" content="salemlightstsのブログ"/> <meta itemprop="image" content="https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png"/> <meta property="og:title" content="salemlightstsのブログ"/> <meta property="og:type" content="blog"/> <meta property="og:url" content="https://salemlightsts.hatenablog.com/"/> <meta property="og:image" content="https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png"/> <meta property="og:image:alt" content="salemlightstsのブログ"/> <meta property="og:description" content="salemlightstsのブログ" /> <meta property="og:site_name" content="salemlightstsのブログ"/> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:image" content="https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png" /> <meta name="twitter:title" content="salemlightstsのブログ" /> <meta name="twitter:description" content="salemlightstsのブログ" /> <meta name="twitter:app:name:iphone" content="はてなブログアプリ" /> <meta name="twitter:app:id:iphone" content="583299321" /> <meta name="twitter:app:url:iphone" content="hatenablog:///open?uri=https%3A%2F%2Fsalemlightsts.hatenablog.com%2F" /> <script id="embed-gtm-data-layer-loader" data-data-layer-page-specific="" > (function() { function loadDataLayer(elem, attrName) { if (!elem) { return {}; } var json = elem.getAttribute(attrName); if (!json) { return {}; } return JSON.parse(json); } var globalVariables = loadDataLayer( document.documentElement, 'data-data-layer' ); var pageSpecificVariables = loadDataLayer( document.getElementById('embed-gtm-data-layer-loader'), 'data-data-layer-page-specific' ); var variables = [globalVariables, pageSpecificVariables]; if (!window.dataLayer) { window.dataLayer = []; } for (var i = 0; i < variables.length; i++) { window.dataLayer.push(variables[i]); } })(); </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-P4CXTW');</script> <!-- End Google Tag Manager --> <link rel="shortcut icon" href="https://salemlightsts.hatenablog.com/icon/favicon"> <link rel="apple-touch-icon" href="https://salemlightsts.hatenablog.com/icon/touch"> <link rel="icon" sizes="192x192" href="https://salemlightsts.hatenablog.com/icon/link"> <link rel="alternate" type="application/atom+xml" title="Atom" href="https://salemlightsts.hatenablog.com/feed"/> <link rel="alternate" type="application/rss+xml" title="RSS2.0" href="https://salemlightsts.hatenablog.com/rss"/> <link rel="author" href="http://www.hatena.ne.jp/salemlightsts/"> <link rel="preload" href="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" as="image"/> <link rel="stylesheet" type="text/css" href="https://cdn.blog.st-hatena.com/css/blog.css?version=1ca111bc9f0112690b12e1842a1ce8"/> <link rel="stylesheet" type="text/css" href="https://usercss.blog.st-hatena.com/blog_style/26006613493684692/c347039d5d9a3bfbb502211ed0cf21083132ab19"/> <script> </script> <style> div#google_afc_user, div.google-afc-user-container, div.google_afc_image, div.google_afc_blocklink { display: block !important; } </style> <script src="https://cdn.pool.st-hatena.com/valve/valve.js" async></script> <script id="test-valve-definition"> var valve = window.valve || []; valve.push(function(v) { v.config({ service: 'blog', content: { result: 'adtrust', documentIds: ["blog:entry:6801883189060583713","blog:entry:6801883189060582264","blog:entry:6801883189060581595","blog:entry:6801883189060580362","blog:entry:6801883189060579734","blog:entry:6801883189060576175","blog:entry:6801883189060574451"] } }); v.defineDFPSlot({"sizes":[[300,250],[336,280]],"slotId":"google_afc_user_container_0","unit":"/4374287/blo_pc_com_6_3328_0_no"}); v.defineDFPSlot({"lazy":1,"sizes":{"mappings":[[[320,568],[[336,280],[300,250],"fluid"]],[[0,0],[[300,250]]]]},"slotId":"sleeping-ad-in-entry","unit":"/4374287/blog_pc_entry_sleep_in-article"}); v.defineDFPSlot({"lazy":"","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_1","unit":"/4374287/blog_user"}); v.defineDFPSlot({"lazy":"","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_2","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_3","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_4","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_5","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_6","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_7","unit":"/4374287/blog_user_2nd"}); v.sealDFPSlots(); }); </script> <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"salemlightstsのブログ","url":"https://salemlightsts.hatenablog.com/"}</script> </head> <body class="page-index globalheader-ng-enabled"> <div id="globalheader-container" data-brand="hatenablog" > <iframe id="globalheader" height="37" frameborder="0" allowTransparency="true"></iframe> </div> <nav class=" blog-controlls "> <div class="blog-controlls-blog-icon"> <a href="https://salemlightsts.hatenablog.com/"> <img src="https://cdn.image.st-hatena.com/image/square/f0e2147d3240fc5320cc21e4445bb9e1bca7188d/backend=imagemagick;height=128;version=1;width=128/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fblog_custom_icon%2F155337944%2F1699354489642629" alt="salemlightstsのブログ"/> </a> </div> <div class="blog-controlls-title"> <a href="https://salemlightsts.hatenablog.com/">salemlightstsのブログ</a> </div> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_source=blogs_topright_button&utm_medium=button&utm_campaign=subscribe_blog" class="blog-controlls-subscribe-btn test-blog-header-controlls-subscribe"> 読者になる </a> </nav> <div id="container"> <div id="container-inner"> <header id="blog-title" data-brand="hatenablog"> <div id="blog-title-inner" > <div id="blog-title-content"> <h1 id="title"><a href="https://salemlightsts.hatenablog.com/">salemlightstsのブログ</a></h1> </div> </div> </header> <div id="content" class="hfeed" > <div id="content-inner"> <div id="wrapper"> <div id="main"> <div id="main-inner"> <article class="entry no-entry sleeping-ads" style="display: block !important;"> <div class="entry-inner"> <div class="entry-content"> <div class="variable-mobileWeb-ad"> <div id="google_afc_user_container_0" class="sleeping-ad" style="display: block !important;"></div> </div> <p class="sleeping-ads-notice" style="display: none;">この広告は、90日以上更新していないブログに表示しています。</p> </div> </div> </article> <!-- google_ad_section_start --> <!-- rakuten_ad_target_begin --> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-2000 words-200 mode-html entry-odd" id="entry-6801883189060583713" data-keyword-campaign="" data-uuid="6801883189060583713" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:59:02Z" title="2023-11-21T08:59:02Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175902" class="entry-title-link bookmark">20. 結論 - XMLの重要性と汎用性 - 今後のXMLの役割について</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } ul { color: #fff; list-style-type: square; padding-left: 20px; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="XML結論"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>結論</h1> </header> <section> <h2 id="XMLの重要性と汎用性"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の重要性と汎用性</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a></strong>はデータの表現と交換において、その柔軟性と汎用性から広く利用されています。 以下は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>がどのようにして重要であり、どのような場面で汎用的に使用されているかについての考察です。</p> <ul> <li><strong>データ構造の柔軟性:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は階層的な構造を持つため、異なる種類のデータを表現しやすく、変更に対する柔軟性があります。 これは特に異なるシステムやプログラム間でデータを交換する場面で重要です。</li> <li><strong>プラットフォームの独立性:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はテキストベースのフォーマットであり、プラットフォームに依存せずにデータを表現できます。 これにより、異なる<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AA%A5%DA%A5%EC%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0%A5%B7%A5%B9%A5%C6%A5%E0">オペレーティングシステム</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC">プログラミング言語</a>での相互運用性が確保されます。</li> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B6%C8%B3%A6%C9%B8%BD%E0">業界標準</a>としての採用:</strong> 多くの業界や技術領域で<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は標準として採用されており、これにより異なるシステムや<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>が 互いに通信する際に共通の基盤となっています。</li> </ul> <p>例えば、以下は<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>を使用したシンプルなデータ表現の例です。</p> <pre><code> <person> <name>John Doe</name> <age>30</age> <city>Tokyo</city> </person> </code></pre> <p>このような形式は、個々のデータ項目がタグで囲まれ、構造が明示的であるため、 異なるアプリケーションやプログラムで容易に解釈できます。</p> </section> <section> <h2 id="今後のXMLの役割について">今後の<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の役割について</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a></strong>は今後も重要な役割を果たし続けるでしょう。以下はその理由と今後の展望についての考察です。</p> <ul> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/Web%A5%B5%A1%BC%A5%D3%A5%B9">Webサービス</a>との統合:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は<a class="keyword" href="https://d.hatena.ne.jp/keyword/Web%A5%B5%A1%BC%A5%D3%A5%B9">Webサービス</a>の通信で広く使用されており、今後も様々なアプリケーションやサービスとの 統合において中心的な役割を果たすでしょう。</li> <li><strong>データの可視化と交換:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はデータの可視化や異なるプログラム間でのデータ交換において優れたツールとして機能しています。 新しいデータ表現形式が登場する中でも、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の柔軟性と拡張性は引き続き求められるでしょう。</li> <li><strong>拡張性の重要性:</strong> 新しい技術やビジネスニーズに対応するためには、データの拡張性が求められます。 <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はその設計において未だに有効であり、将来のニーズにも対応できるでしょう。</li> </ul> <p>例えば、以下は将来的な拡張性を考慮した<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書の一例です。</p> <pre><code> <product> <name>New Product</name> <description>This is a description of the new product.</description> <price currency="USD">29.99</price> <releaseDate>2023-12-01</releaseDate> <newFeature>Some exciting new feature.</newFeature> </product> </code></pre> <p>今後も<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はデータ表現の分野で重要な存在であり続けるでしょう。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XML" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XML</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175902"><time data-relative datetime="2023-11-21T08:59:02Z" title="2023-11-21T08:59:02Z" class="updated">2023-11-21 17:59</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_campaign=subscribe_blog&utm_medium=button&utm_source=blogs_entry_footer"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/175902" data-hatena-star-title="20. 結論 - XMLの重要性と汎用性 - 今後のXMLの役割について" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/175902" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/175902" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175902"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=XML&text=20.+%E7%B5%90%E8%AB%96+++++-+XML%E3%81%AE%E9%87%8D%E8%A6%81%E6%80%A7%E3%81%A8%E6%B1%8E%E7%94%A8%E6%80%A7+++++-+%E4%BB%8A%E5%BE%8C%E3%81%AEXML%E3%81%AE%E5%BD%B9%E5%89%B2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F175902" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_1" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-middle autopagerize_page_element chars-1600 words-200 mode-html entry-even" id="entry-6801883189060582264" data-keyword-campaign="" data-uuid="6801883189060582264" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date middle"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:51:47Z" title="2023-11-21T08:51:47Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175147" class="entry-title-link bookmark">19.XMLのベストプラクティス - XML文書の設計原則 - ドキュメンテーションの重要性</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } ul { color: #fff; list-style-type: square; padding-left: 20px; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="XMLのベストプラクティス"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>のベストプ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%E9%A5%AF">ラク</a>ティス</h1> </header> <section> <h2 id="XML文書の設計原則"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書の設計原則</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a></strong>はデータの表現において非常に柔軟であり、適切な設計原則を守ることで効果的に活用できます。 以下は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書を設計する際の基本的な原則です。</p> <ul> <li><strong>構造の明示性:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書はその構造を明示的に示すことが重要です。適切な要素名と階層構造を使用して、 データがどのように組織されているかを理解しやすくします。</li> <li><strong>要素と属性の使い分け:</strong> データを表現する際、基本的な情報は要素として、補足的な情報は属性として適切に使い分けることで、 文書がシンプルで理解しやすくなります。</li> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>の活用:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>を使用して、要素や属性の衝突を回避し、異なる文脈で使用される場合でも一貫性を保つことができます。</li> <li><strong>正確な文書バージョン:</strong> 文書のバージョン番号や関連する<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B9%A5%AD%A1%BC%A5%DE">スキーマ</a>の情報を文書に含め、将来的な変更に備えることが良いプ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%E9%A5%AF">ラク</a>ティスです。</li> </ul> <p>これらの原則を守ることで、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書は拡張性があり、保守性が高くなります。</p> </section> <section> <h2 id="ドキュメンテーションの重要性"><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%AD%A5%E5%A5%E1%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">ドキュメンテーション</a>の重要性</h2> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書を作成する際、<strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%AD%A5%E5%A5%E1%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">ドキュメンテーション</a></strong>は欠かせない要素です。 <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%AD%A5%E5%A5%E1%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">ドキュメンテーション</a>は次のような点で重要な役割を果たします。</p> <ul> <li><strong>理解と利用の容易性:</strong> 文書の構造や要素、属性に関する説明をドキュメントにまとめることで、他の開発者や利用者が容易に理解できます。</li> <li><strong>バージョン管理:</strong> ドキュメントにはバージョン情報や変更履歴を含め、文書の進化や変更に追従する手助けとなります。</li> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A5%D0%A5%C3%A5%B0">デバッグ</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C8%A5%E9%A5%D6%A5%EB%A5%B7%A5%E5%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0">トラブルシューティング</a>:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%AD%A5%E5%A5%E1%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">ドキュメンテーション</a>は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A5%D0%A5%C3%A5%B0">デバッグ</a>時や<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C8%A5%E9%A5%D6%A5%EB%A5%B7%A5%E5%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0">トラブルシューティング</a>時に貴重な情報を提供し、 問題の特定と解決を迅速かつ効果的に行うのに役立ちます。</li> </ul> <p>例えば、以下は<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書にコメントを追加して<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%AD%A5%E5%A5%E1%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">ドキュメンテーション</a>する方法の一例です。</p> <pre><code> <!-- この要素はユーザーの基本情報を表現します。 - name: ユーザーの名前 - age: ユーザーの年齢 --> <user name="John Doe" age="30" /> </code></pre> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%AD%A5%E5%A5%E1%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">ドキュメンテーション</a>は文書をより使いやすくし、メンテナンスがしやすくするために不可欠です。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175147"><time data-relative datetime="2023-11-21T08:51:47Z" title="2023-11-21T08:51:47Z" class="updated">2023-11-21 17:51</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_campaign=subscribe_blog&utm_medium=button&utm_source=blogs_entry_footer"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/175147" data-hatena-star-title="19.XMLのベストプラクティス - XML文書の設計原則 - ドキュメンテーションの重要性" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/175147" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/175147" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175147"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?text=19.XML%E3%81%AE%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9+++++-+XML%E6%96%87%E6%9B%B8%E3%81%AE%E8%A8%AD%E8%A8%88%E5%8E%9F%E5%89%87+++++-+%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%87%8D%E8%A6%81%E6%80%A7+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F175147" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_2" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-middle autopagerize_page_element chars-2000 words-200 mode-html entry-odd" id="entry-6801883189060581595" data-keyword-campaign="" data-uuid="6801883189060581595" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date middle"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:48:04Z" title="2023-11-21T08:48:04Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174804" class="entry-title-link bookmark">18.XMLベースのテクノロジー - XHTML(eXtensible HyperText Markup Language) - SVG(Scalable Vector Graphics)</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } ul { color: #fff; list-style-type: square; padding-left: 20px; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="XMLベースのテクノロジー"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>ベースのテク<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%CE%A5%ED">ノロ</a><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B8%A1%BC">ジー</a></h1> </header> <section> <h2 id="XHTMLeXtensible-HyperText-Markup-Language"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a>(eXtensible HyperText Markup Language)</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a></strong>は、HTMLの拡張であり、より厳格な<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>構文に基づいた<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%DE%A1%BC%A5%AF%A5%A2%A5%C3%A5%D7">マークアップ</a>言語です。 HTMLが寛容であるのに対し、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a>は<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の規則に従うことが求められます。 これにより、文書の整合性が向上し、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の柔軟性をHTMLに組み込むことが可能となりました。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a>はHTMLと基本的な構造は同じですが、以下のような点が異なります。</p> <ul> <li><strong>タグの小文字化:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a>ではすべてのタグと属性が小文字で記述される必要があります。これは<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の構文規則に基づいています。</li> <li><strong>閉じられたタグ:</strong> すべての要素は閉じられた形式で記述される必要があります。例えば、<p>要素は</p>で閉じられます。</li> <li><strong>属性の引用:</strong> 属性値はダブルクォーテーションでくくられる必要があります。</li> </ul> <p>以下は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a>の例です。</p> <pre><code> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>XHTML Example</title> </head> <body> <h1>Hello, XHTML!</h1> <p>This is an XHTML document.</p> </body> </html> </code></pre> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XHTML">XHTML</a>の使用は、主に文書構造の整合性を重視する場合や、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>とHTMLを組み合わせて利用する場合に適しています。</p> </section> <section> <h2 id="SVGScalable-Vector-Graphics"><a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>(Scalable <a class="keyword" href="https://d.hatena.ne.jp/keyword/Vector">Vector</a> Graphics)</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a></strong>は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>ベースのベクトルグラフィックス言語であり、静的または動的な2次元のベクトル画像を表現するために使用されます。 ベクトルグラフィックスは拡大縮小しても画質が劣化せず、異なる解像度のデ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9">バイス</a>で一貫した表示が可能です。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>の特徴的な点には以下があります。</p> <ul> <li><strong>座標系:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>は座標系を使用してオブジェクトを配置します。絶対座標や相対座標を指定することができます。</li> <li><strong>図形とパス:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>では様々な図形(円、四角形、直線など)やパス(曲線、直線の連結)を描画できます。</li> <li><strong>スタイルとアニメーション:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/CSS">CSS</a>を使用してスタイルを適用し、アニメーションを追加することができます。</li> </ul> <p>以下は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>の例です。</p> <pre><code> <svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"> <circle cx="100" cy="100" r="80" fill="green" /> <text x="50%" y="50%" text-anchor="middle" dy=".3em" fill="white">SVG</text> </svg> </code></pre> <p>この例では、円とテキストが<a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>で描画されています。<a class="keyword" href="https://d.hatena.ne.jp/keyword/SVG">SVG</a>はWeb上のグラフィカルなコンテンツやデータ可 視化などで広く利用されています。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XML" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XML</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XHTML" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XHTML</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/SVG" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">SVG</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174804"><time data-relative datetime="2023-11-21T08:48:04Z" title="2023-11-21T08:48:04Z" class="updated">2023-11-21 17:48</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_source=blogs_entry_footer&utm_campaign=subscribe_blog&utm_medium=button"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/174804" data-hatena-star-title="18.XMLベースのテクノロジー - XHTML(eXtensible HyperText Markup Language) - SVG(Scalable Vector Graphics)" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/174804" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/174804" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174804"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=XML&hashtags=XHTML&hashtags=SVG&text=18.XML%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC+++++-+XHTML%EF%BC%88eXtensible+HyperText+Markup+Language%EF%BC%89+++++-+SVG%EF%BC%88Scalable+Vector+Graphics%EF%BC%89+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F174804" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_3" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-middle autopagerize_page_element chars-1600 words-200 mode-html entry-even" id="entry-6801883189060580362" data-keyword-campaign="" data-uuid="6801883189060580362" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date middle"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:42:04Z" title="2023-11-21T08:42:04Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174204" class="entry-title-link bookmark">17.XMLとJSONの比較 - XMLとJSONの特徴と違い - どちらを使用すべきか?</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } ul { color: #fff; list-style-type: square; padding-left: 20px; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="XMLとJSONの比較"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>の比較</h1> </header> <section> <h2 id="XMLとJSONの特徴と違い"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>の特徴と違い</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>(eXtensible Markup Language)</strong>と<strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>(<a class="keyword" href="https://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Object Notation)</strong>は、 どちらもデータの表現に使われる形式であり、それぞれに特長があります。</p> <ul> <li><strong>構造:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は階層的な構造を持つタグベースの言語で、人間が読みやすく理解しやすい特長があります。 一方で<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>はキーと値のペアからなり、シンプルかつコンパクトな構造を持っています。</li> <li><strong>可読性:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はタグを使用するため、可読性が高く、文書構造が明示的です。しかし、冗長でありデータの量が増えると ファイルサイズが大きくなる傾向があります。<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>はデータを効率的に表現できるため、通信やストレージでの使用に適しています。</li> <li><strong>拡張性:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はタグを自由に定義できるため、柔軟性と拡張性があります。<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>も柔軟性がありますが、タグのような 文書構造は持たず、シンプルなキーと値の形式です。</li> <li><strong>データタイプ:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は文字列、数値、ブール値、日付などさまざまなデータタイプをサポートしています。<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>も基本的な データタイプをサポートしていますが、型情報が<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>よりも少ない傾向があります。</li> </ul> <p>これらの違いから、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>はそれぞれの状況や用途において適している場面があります。 例えば、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は文書構造が複雑であり、人間が読むことが主要な要件である場合に適しています。 一方で、<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>はデータの通信やデータベースの保存など、効率的なデータのやり取りが求められる場面に適しています。</p> </section> <section> <h2 id="どちらを使用すべきか">どちらを使用すべきか?</h2> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>、どちらを使用すべきかはプロジェクトの要件や目的によります。 <strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の利点</strong>は主に以下の点にあります。</p> <ul> <li><em>複雑な文書構造:</em> ドキュメントの構造が複雑であり、階層構造や<a class="keyword" href="https://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>が必要な場合。</li> <li><em>人間が読 むことが主要な要件:</em> ドキュメントが可読性重視で、人間が直感的に理解しやすい表現が必要な場合。</li> </ul> <p>一方で、<strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>の利点</strong>は次のような場面です。</p> <ul> <li><em>データ通信:</em> サーバーとのデータ通信が頻繁に発生し、データの効率的なやり取りが求められる場合。</li> <li><em>軽量なデータ表現:</em> データが簡潔で冗長性を排除する必要があり、ファイルサイズが小さくなることが求められる場合。</li> </ul> <p>いくつかのプロジェクトでは、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>を併用することもあります。例えば、 システム間通信には<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>を使用し、設定ファイルや文書保存には<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>を使用するといった使い分けが行われています。 どちらを使用するかは具体的な要件や利用状況によりますので、適切な選択が重要です。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174204"><time data-relative datetime="2023-11-21T08:42:04Z" title="2023-11-21T08:42:04Z" class="updated">2023-11-21 17:42</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_medium=button&utm_campaign=subscribe_blog&utm_source=blogs_entry_footer"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/174204" data-hatena-star-title="17.XMLとJSONの比較 - XMLとJSONの特徴と違い - どちらを使用すべきか?" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/174204" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/174204" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174204"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?text=17.XML%E3%81%A8JSON%E3%81%AE%E6%AF%94%E8%BC%83+++++-+XML%E3%81%A8JSON%E3%81%AE%E7%89%B9%E5%BE%B4%E3%81%A8%E9%81%95%E3%81%84+++++-+%E3%81%A9%E3%81%A1%E3%82%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%81%B9%E3%81%8D%E3%81%8B%EF%BC%9F+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F174204" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_4'); }); </script> <div id="google_afc_user_container_4" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-middle autopagerize_page_element chars-1600 words-100 mode-html entry-odd" id="entry-6801883189060579734" data-keyword-campaign="" data-uuid="6801883189060579734" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date middle"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:37:32Z" title="2023-11-21T08:37:32Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173732" class="entry-title-link bookmark">16.XMLの最新動向 - XMLの最新バージョンと仕様 - XMLの将来展望</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="XMLの最新動向"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の最新動向</h1> </header> <section> <h2 id="XMLの最新バージョンと仕様"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の最新バージョンと仕様</h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>(eXtensible Markup Language)</strong>は、その柔軟性と拡張性から広く使用されているデータ記述言語です。 最新の<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>バージョンは、<strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a> 1.0</strong>および<strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a> 1.1</strong>ですが、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a> 1.1は1.0の拡張として追加されたものであり、 通常の使用ケースでは1.0が主流となっています。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はタグによって階層的に構造化された文書を表現し、これにより異なるアプリケーション間でのデータの交換が容易になります。 例えば、以下はシンプルな<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書の例です。</p> <pre><code> <book> <title>The XML Revolution</title> <author>John Doe</author> <year>2023</year> </book> </code></pre> <p>この文書では、本のタイトル、著者、出版年が<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>タグによって表現されています。 <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はこれまでの多くのプロジェクトで使われてきましたが、最新の動向では<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/YAML">YAML</a>などの形式との比較も重要な視点となっています。</p> </section> <section> <h2 id="XMLの将来展望"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の将来展望</h2> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の将来展望において、<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>(<a class="keyword" href="https://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a> Object Notation)など他の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A1%BC%A5%BF%B7%C1%BC%B0">データ形式</a>との競合がありますが、 <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は依然として特定の使用ケースで強力な存在感を示しています。</p> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>の強み</strong>は主に以下の点にあります。</p> <ul> <li><strong>拡張性:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>はタグを自由に定義できるため、様々な文書構造を表現することができます。</li> <li><strong>人間可読性:</strong> タグによる構造とテキストベースの表現は、人間が理解しやすく、手動での編集が容易です。</li> <li><strong>標準化:</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は<a class="keyword" href="https://d.hatena.ne.jp/keyword/W3C">W3C</a>(<a class="keyword" href="https://d.hatena.ne.jp/keyword/World%20Wide%20Web">World Wide Web</a> Consortium)によって標準化されており、広くサポートされています。</li> </ul> <p>また、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>は特に文書の構造が複雑であり、拡張性や<a class="keyword" href="https://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>が必要な場合や、 ドキュメントがテキストとして読みやすく保持されることが要求される場合に適しています。</p> <p>一方で、<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>は軽量でパースが容易であり、特に<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A6%A5%A7%A5%D6%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3">ウェブアプリケーション</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>通信などで広く使われています。 これらの<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A1%BC%A5%BF%B7%C1%BC%B0">データ形式</a>はそれぞれの特長があり、プロジェクトの要件や目的によって使い分けられています。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XML" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XML</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">バージョン</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173732"><time data-relative datetime="2023-11-21T08:37:32Z" title="2023-11-21T08:37:32Z" class="updated">2023-11-21 17:37</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_source=blogs_entry_footer&utm_campaign=subscribe_blog&utm_medium=button"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/173732" data-hatena-star-title="16.XMLの最新動向 - XMLの最新バージョンと仕様 - XMLの将来展望" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/173732" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/173732" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173732"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=XML&hashtags=%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3&text=16.XML%E3%81%AE%E6%9C%80%E6%96%B0%E5%8B%95%E5%90%91+++++-+XML%E3%81%AE%E6%9C%80%E6%96%B0%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A8%E4%BB%95%E6%A7%98+++++-+XML%E3%81%AE%E5%B0%86%E6%9D%A5%E5%B1%95%E6%9C%9B+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F173732" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_5'); }); </script> <div id="google_afc_user_container_5" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-middle autopagerize_page_element chars-1600 words-100 mode-html entry-even" id="entry-6801883189060576175" data-keyword-campaign="" data-uuid="6801883189060576175" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date middle"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:32:07Z" title="2023-11-21T08:32:07Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173207" class="entry-title-link bookmark">15.XMLのセキュリティ - XML文書のセキュリティ脆弱性 - XML署名と暗号化</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="XMLのセキュリティ"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>のセキュリティ</h1> </header> <section> <h2 id="XML文書のセキュリティ脆弱性"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書のセキュリティ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C0%C8%BC%E5%C0%AD">脆弱性</a></h2> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>(eXtensible Markup Language)</strong>は柔軟で拡張性があり、データの表現に優れた形式ですが、 その柔軟性がセキュリティ上の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C0%C8%BC%E5%C0%AD">脆弱性</a>を引き起こすことがあります。</p> <p>一般的な<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>のセキュリティ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C0%C8%BC%E5%C0%AD">脆弱性</a>には、以下のようなものがあります。</p> <ul> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/DTD">DTD</a>攻撃(Document Type Definition):</strong> <a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書内での外部エンティティ参照の悪用により、機密情報が漏えいする可能性があります。</li> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XPath">XPath</a>インジェクション:</strong> 不正な<a class="keyword" href="https://d.hatena.ne.jp/keyword/XPath">XPath</a>クエリを挿入することにより、悪意のある操作が行われる危険性があります。</li> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>外部エンティティ攻撃:</strong> 外部エンティティを参照することで、サーバーのリソースにアクセスする攻撃が行われる可能性があります。</li> </ul> <p>これらの<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C0%C8%BC%E5%C0%AD">脆弱性</a>から<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書を保護するには、適切なセキュリティ対策を講じる必要があります。 具体的な対策としては、外部エンティティの無効化、適切な入力検証、署名と暗号化の利用などが挙げられます。</p> </section> <section> <h2 id="XML署名と暗号化"><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>署名と暗号化</h2> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書のセキュリティを向上させるために、<strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>署名</strong>と<strong>暗号化</strong>が広く利用されています。</p> <p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>署名</strong>は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書の整合性と認証を確保するための手法です。 これにより、文書が改ざんされていないかどうかを検証でき、送信元が正当なものであることを確認できます。 署名は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B8%F8%B3%AB%B8%B0%B0%C5%B9%E6%CA%FD%BC%B0">公開鍵暗号方式</a>を利用し、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C8%EB%CC%A9%B8%B0">秘密鍵</a>で署名を生成し、公開鍵で検証します。</p> <p><strong>暗号化</strong>は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書の内容を保護するために使用されます。 例えば、機密情報を含む<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書を送信する際に、その内容を暗号化することで<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C9%D4%C0%B5%A5%A2%A5%AF%A5%BB%A5%B9">不正アクセス</a>から情報を守ります。 一般的には対称鍵暗号方式や非対称鍵暗号方式が使用され、セキュアな通信を実現します。</p> <p>以下は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>文書に署名と暗号化を適用する一例です。</p> <pre><code> <signedEnvelope> <signature>...署名情報...</signature> <encryptedPayload>...暗号化された内容...</encryptedPayload> </signedEnvelope> </code></pre> <p>この例では、署名と暗号化が<signedEnvelope>要素内で行われています。 これにより、受信者は署名を検証し、暗号化を解除することで文書の信頼性と機密性を確保できます。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XML" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XML</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XML%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XMLセキュリティ</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/XML%E7%BD%B2%E5%90%8D" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">XML署名</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173207"><time data-relative datetime="2023-11-21T08:32:07Z" title="2023-11-21T08:32:07Z" class="updated">2023-11-21 17:32</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_source=blogs_entry_footer&utm_medium=button&utm_campaign=subscribe_blog"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/173207" data-hatena-star-title="15.XMLのセキュリティ - XML文書のセキュリティ脆弱性 - XML署名と暗号化" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/173207" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/173207" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173207"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=XML&hashtags=XML%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&hashtags=XML%E7%BD%B2%E5%90%8D&text=15.XML%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3+++++-+XML%E6%96%87%E6%9B%B8%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E8%84%86%E5%BC%B1%E6%80%A7+++++-+XML%E7%BD%B2%E5%90%8D%E3%81%A8%E6%9A%97%E5%8F%B7%E5%8C%96+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F173207" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_6'); }); </script> <div id="google_afc_user_container_6" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-last autopagerize_page_element chars-1600 words-200 mode-html entry-odd" id="entry-6801883189060574451" data-keyword-campaign="" data-uuid="6801883189060574451" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date last"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11/21" rel="nofollow"> <time datetime="2023-11-21T08:27:08Z" title="2023-11-21T08:27:08Z"> <span class="date-year">2023</span><span class="hyphen">-</span><span class="date-month">11</span><span class="hyphen">-</span><span class="date-day">21</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/172708" class="entry-title-link bookmark">14.RESTとXML - RESTful APIとXML - RESTとSOAPの比較</a> </h1> </header> <div class="entry-content hatenablog-entry"> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/salemlightsts/20231107/20231107192104.jpg" width="1024" height="1024" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p> <p> </p> <p> </p> <style> body { font-family: 'Arial', sans-serif; line-height: 1.6; margin: 20px; background-color: #000; color: #fff; } h1 { color: #fff; font-weight: bold; border-bottom: 2px solid #fff; padding-bottom: 5px; } h2 { color: #fff; } p { color: #fff; } strong { color: #ffcc00; /* 強調表示の色を設定 */ } em { font-style: italic; /* 斜体表示 */ } </style> <header> <h1 id="RESTとXML">RESTと<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a></h1> </header> <section> <h2 id="RESTful-APIとXML">RESTful <a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>と<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a></h2> <p><strong>REST(Representational State Transfer)</strong>は、分散型のネットワーク<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の設計原則の一つで、 ウェブ上の資源を一意な<a class="keyword" href="https://d.hatena.ne.jp/keyword/URI">URI</a>(Uniform Resource Identifier)で識別し、HTTP<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>を通じてその資源に対する操作を行います。 RESTful <a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>は、このRESTの原則に従って設計された<a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>です。</p> <p>RESTful <a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>では、クライアントがHTTPメソッド(GET、POST、PUT、DELETEなど)を使用してリソースを操作します。 リソースは<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>形式や<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>形式で表現され、これらの形式を使用してデータの受け渡しが行われます。</p> <p>例えば、以下はRESTful <a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>を使用してユーザー情報を取得するための<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>形式のリク<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トの一例です。</p> <pre><code> GET /users/123 HTTP/1.1 Host: example.com Accept: application/xml </code></pre> <p>この例では、サーバーに対してユーザーIDが123のユーザー情報を取得するようにリク<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トしています。 サーバーは<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>形式でユーザー情報を返すことが期待されます。</p> </section> <section> <h2 id="RESTとSOAPの比較">RESTと<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>の比較</h2> <p>RESTと<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>は、どちらも分散型のネットワーク<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>を利用してサービスを提供するための手段ですが、 それぞれに特徴があります。以下にRESTと<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>の比較を示します。</p> <table> <tbody> <tr> <th>特徴</th> <th>REST</th> <th><a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a></th> </tr> <tr> <td><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a></td> <td>HTTPや<a class="keyword" href="https://d.hatena.ne.jp/keyword/HTTPS">HTTPS</a></td> <td>HTTP、<a class="keyword" href="https://d.hatena.ne.jp/keyword/SMTP">SMTP</a>、<a class="keyword" href="https://d.hatena.ne.jp/keyword/FTP">FTP</a>など様々な<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a></td> </tr> <tr> <td><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A1%BC%A5%BF%B7%C1%BC%B0">データ形式</a></td> <td><a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>、<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a></td> <td>主に<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a></td> </tr> <tr> <td>ステートレス</td> <td>ステートレス</td> <td>ステートフルまたはステートレス</td> </tr> <tr> <td>拡張性</td> <td>高い</td> <td>低い</td> </tr> </tbody> </table> <p>RESTはシンプルで拡張性があり、主に<a class="keyword" href="https://d.hatena.ne.jp/keyword/JSON">JSON</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>を使用してデータのやり取りを行います。 一方で、<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>はより厳格な<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>であり、<a class="keyword" href="https://d.hatena.ne.jp/keyword/XML">XML</a>形式が主流です。また、<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>はステートフルまたはステートレスなど 複数の通信モデルをサポートしていますが、RESTは基本的にステートレスです。</p> <p>RESTと<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>は、それぞれの用途や要件に合わせて選択されるべきです。 RESTはシンプルで柔軟性があり、特に軽量なモバイルアプリケーションや<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A6%A5%A7%A5%D6%A5%B5%A1%BC%A5%D3%A5%B9">ウェブサービス</a>などに適しています。 一方で<a class="keyword" href="https://d.hatena.ne.jp/keyword/SOAP">SOAP</a>は厳格で信頼性があり、企業間の大規模なシステム間通信など、高度なセキュリティが求められる場面で利用されます。</p> </section> <footer></footer> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="salemlightsts" >salemlightsts</span></span> <span class="entry-footer-time"><a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/172708"><time data-relative datetime="2023-11-21T08:27:08Z" title="2023-11-21T08:27:08Z" class="updated">2023-11-21 17:27</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/salemlightsts/salemlightsts.hatenablog.com/subscribe?utm_campaign=subscribe_blog&utm_medium=button&utm_source=blogs_entry_footer"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/172708" data-hatena-star-title="14.RESTとXML - RESTful APIとXML - RESTとSOAPの比較" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/salemlightsts.hatenablog.com/entry/2023/11/21/172708" class="hatena-bookmark-button" data-hatena-bookmark-url="https://salemlightsts.hatenablog.com/entry/2023/11/21/172708" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://salemlightsts.hatenablog.com/entry/2023/11/21/172708"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?text=14.REST%E3%81%A8XML+++++-+RESTful+API%E3%81%A8XML+++++-+REST%E3%81%A8SOAP%E3%81%AE%E6%AF%94%E8%BC%83+-+salemlightsts%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2Fentry%2F2023%2F11%2F21%2F172708" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_7'); }); </script> <div id="google_afc_user_container_7" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> </div> </footer> </div> </article> <!-- rakuten_ad_target_end --> <!-- google_ad_section_end --> <div class="pager autopagerize_insert_before"> <span class="pager-next"> <a href="https://salemlightsts.hatenablog.com/?page=1700555228" rel="next">次のページ</a> </span> </div> </div> </div> <aside id="box1"> <div id="box1-inner"> </div> </aside> </div><!-- #wrapper --> <aside id="box2"> <div id="box2-inner"> <div class="hatena-module hatena-module-profile"> <div class="hatena-module-title"> プロフィール </div> <div class="hatena-module-body"> <a href="https://salemlightsts.hatenablog.com/about" class="profile-icon-link"> <img src="https://cdn.profile-image.st-hatena.com/users/salemlightsts/profile.png" alt="id:salemlightsts" class="profile-icon" /> </a> <span class="id"> <a href="https://salemlightsts.hatenablog.com/about" class="hatena-id-link"><span data-load-nickname="1" data-user-name="salemlightsts">id:salemlightsts</span></a> </span> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box" > <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> <div class="profile-about"> <a href="https://salemlightsts.hatenablog.com/about">このブログについて</a> </div> </div> </div> <div class="hatena-module hatena-module-search-box"> <div class="hatena-module-title"> 検索 </div> <div class="hatena-module-body"> <form class="search-form" role="search" action="https://salemlightsts.hatenablog.com/search" method="get"> <input type="text" name="q" class="search-module-input" value="" placeholder="記事を検索" required> <input type="submit" value="検索" class="search-module-button" /> </form> </div> </div> <div class="hatena-module hatena-module-links"> <div class="hatena-module-title"> リンク </div> <div class="hatena-module-body"> <ul class="hatena-urllist"> <li> <a href="https://hatena.blog/">はてなブログ</a> </li> <li> <a href="https://hatena.blog/guide?via=200109">ブログをはじめる</a> </li> <li> <a href="http://blog.hatenablog.com">週刊はてなブログ</a> </li> <li> <a href="https://hatena.blog/guide/pro">はてなブログPro</a> </li> </ul> </div> </div> <div class="hatena-module hatena-module-recent-entries "> <div class="hatena-module-title"> <a href="https://salemlightsts.hatenablog.com/archive"> 最新記事 </a> </div> <div class="hatena-module-body"> <ul class="recent-entries hatena-urllist "> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175902" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">20. 結論 - XMLの重要性と汎用性 - 今後のXMLの役割について</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/175147" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">19.XMLのベストプラクティス - XML文書の設計原則 - ドキュメンテーションの重要性</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174804" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">18.XMLベースのテクノロジー - XHTML(eXtensible HyperText Markup Language) - SVG(Scalable Vector Graphics)</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/174204" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">17.XMLとJSONの比較 - XMLとJSONの特徴と違い - どちらを使用すべきか?</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://salemlightsts.hatenablog.com/entry/2023/11/21/173732" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">16.XMLの最新動向 - XMLの最新バージョンと仕様 - XMLの将来展望</a> </div> </li> </ul> </div> </div> <div class="hatena-module hatena-module-archive" data-archive-type="default" data-archive-url="https://salemlightsts.hatenablog.com/archive"> <div class="hatena-module-title"> <a href="https://salemlightsts.hatenablog.com/archive">月別アーカイブ</a> </div> <div class="hatena-module-body"> <ul class="hatena-urllist"> <li class="archive-module-year archive-module-year-hidden" data-year="2023"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://salemlightsts.hatenablog.com/archive/2023" class="archive-module-year-title archive-module-year-2023"> 2023 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://salemlightsts.hatenablog.com/archive/2023/11" class="archive-module-month-title archive-module-month-2023-11"> 2023 / 11 </a> </li> <li class="archive-module-month"> <a href="https://salemlightsts.hatenablog.com/archive/2023/10" class="archive-module-month-title archive-module-month-2023-10"> 2023 / 10 </a> </li> <li class="archive-module-month"> <a href="https://salemlightsts.hatenablog.com/archive/2023/09" class="archive-module-month-title archive-module-month-2023-9"> 2023 / 9 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2020"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://salemlightsts.hatenablog.com/archive/2020" class="archive-module-year-title archive-module-year-2020"> 2020 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://salemlightsts.hatenablog.com/archive/2020/10" class="archive-module-month-title archive-module-month-2020-10"> 2020 / 10 </a> </li> <li class="archive-module-month"> <a href="https://salemlightsts.hatenablog.com/archive/2020/01" class="archive-module-month-title archive-module-month-2020-1"> 2020 / 1 </a> </li> </ul> </li> </ul> </div> </div> </div> </aside> </div> </div> </div> </div> <footer id="footer" data-brand="hatenablog"> <div id="footer-inner"> <address class="footer-address"> <a href="https://salemlightsts.hatenablog.com/"> <img src="https://cdn.image.st-hatena.com/image/square/f0e2147d3240fc5320cc21e4445bb9e1bca7188d/backend=imagemagick;height=128;version=1;width=128/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fblog_custom_icon%2F155337944%2F1699354489642629" width="16" height="16" alt="salemlightstsのブログ"/> <span class="footer-address-name">salemlightstsのブログ</span> </a> </address> <p class="services"> Powered by <a href="https://hatena.blog/">Hatena Blog</a> | <a href="https://blog.hatena.ne.jp/-/abuse_report?target_url=https%3A%2F%2Fsalemlightsts.hatenablog.com%2F" class="report-abuse-link test-report-abuse-link" target="_blank">ブログを報告する</a> </p> </div> </footer> <script async src="https://s.hatena.ne.jp/js/widget/star.js"></script> <script> if (typeof window.Hatena === 'undefined') { window.Hatena = {}; } if (!Hatena.hasOwnProperty('Star')) { Hatena.Star = { VERSION: 2, }; } </script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&appId=719729204785177&version=v17.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div class="quote-box"> <div class="tooltip-quote tooltip-quote-stock"> <i class="blogicon-quote" title="引用をストック"></i> </div> <div class="tooltip-quote tooltip-quote-tweet js-tooltip-quote-tweet"> <a class="js-tweet-quote" target="_blank" data-track-name="quote-tweet" data-track-once> <img src="https://cdn.blog.st-hatena.com/images/admin/quote/quote-x-icon.svg?version=1ca111bc9f0112690b12e1842a1ce8" title="引用して投稿する" > </a> </div> </div> <div class="quote-stock-panel" id="quote-stock-message-box" style="position: absolute; z-index: 3000"> <div class="message-box" id="quote-stock-succeeded-message" style="display: none"> <p>引用をストックしました</p> <button class="btn btn-primary" id="quote-stock-show-editor-button" data-track-name="curation-quote-edit-button">ストック一覧を見る</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="message-box" id="quote-login-required-message" style="display: none"> <p>引用するにはまずログインしてください</p> <button class="btn btn-primary" id="quote-login-button">ログイン</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="quote-stock-failed-message" style="display: none"> <p>引用をストックできませんでした。再度お試しください</p> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="unstockable-quote-message-box" style="display: none; position: absolute; z-index: 3000;"> <p>限定公開記事のため引用できません。</p> </div> </div> <script type="x-underscore-template" id="js-requote-button-template"> <div class="requote-button js-requote-button"> <button class="requote-button-btn tipsy-top" title="引用する"><i class="blogicon-quote"></i></button> </div> </script> <div id="hidden-subscribe-button" style="display: none;"> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box" > <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> </div> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <script src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script> <script type="text/javascript" src="https://cdn.blog.st-hatena.com/js/external/jquery.min.js?v=1.12.4&version=1ca111bc9f0112690b12e1842a1ce8"></script> <script src="https://cdn.blog.st-hatena.com/js/texts-ja.js?version=1ca111bc9f0112690b12e1842a1ce8"></script> <script id="vendors-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/vendors.js?version=1ca111bc9f0112690b12e1842a1ce8" crossorigin="anonymous"></script> <script id="hatenablog-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/hatenablog.js?version=1ca111bc9f0112690b12e1842a1ce8" crossorigin="anonymous" data-page-id="index"></script> <script>Hatena.Diary.GlobalHeader.init()</script> <script id="valve-dmp" data-service="blog" src="https://cdn.pool.st-hatena.com/valve/dmp.js" data-test-id="dmpjs" async></script> </body> </html>