{"id":1830,"date":"2025-03-24T08:49:49","date_gmt":"2025-03-23T23:49:49","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1830"},"modified":"2025-03-24T08:49:49","modified_gmt":"2025-03-23T23:49:49","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91%e7%8f%be%e5%a0%b4%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8bdoxygen%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e8%a8%ad%e5%ae%9a%e3%81%8b%e3%82%89","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1830","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011\u73fe\u5834\u3067\u4f7f\u3048\u308bDoxygen\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u8a2d\u5b9a\u304b\u3089\u904b\u7528\u307e\u306715\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Doxygen\u3068\u306f\uff1a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u81ea\u52d5\u751f\u6210\u306e\u9769\u65b0\u7684\u30c4\u30fc\u30eb<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">C++\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4e0d\u53ef\u6b20\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7ba1\u7406\u306e\u8ab2\u984c<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">Doxygen\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u958b\u767a\u73fe\u5834\u306e\u60a9\u307f<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\">Doxygen\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u624b\u9806<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-4\">Windows\u74b0\u5883\u3067\u306e\u5c0e\u5165\u65b9\u6cd5\u3068\u521d\u671f\u8a2d\u5b9a\u306e\u30b3\u30c4<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-5\">\u5b9f\u8df5\u7684\u306aDoxygen\u8a18\u6cd5\u306e\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-6\">\u30af\u30e9\u30b9\u3068\u30e1\u30f3\u30d0\u30fc\u306e\u52b9\u679c\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316<\/a>      <\/li>      <li>        <a href=\"#i-7\">\u95a2\u6570\u306e\u5165\u51fa\u529b\u3068\u4f8b\u5916\u4ed5\u69d8\u306e\u8a18\u8ff0\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-8\">\u30b0\u30eb\u30fc\u30d7\u5316\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u5206\u3051\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-9\">\u958b\u767a\u73fe\u5834\u3067\u306eDoxygen\u6d3b\u7528\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-10\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3078\u306e\u7d71\u5408\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-11\">\u30c1\u30fc\u30e0\u958b\u767a\u3067\u306e\u904b\u7528\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-12\">\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u3078\u306e\u6bb5\u968e\u7684\u306a\u5c0e\u5165\u6226\u7565<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">Doxygen\u3092\u4f7f\u3063\u305f\u54c1\u8cea\u7ba1\u7406\u3068\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8\u306e\u6e2c\u5b9a\u3068\u6539\u5584<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u89e3\u6790\u3068\u5bfe\u5fdc\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-16\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\u306e\u81ea\u52d5\u5316<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-17\">\u3088\u304f\u3042\u308b\u30c8\u30e9\u30d6\u30eb\u3068\u89e3\u6c7a\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-18\">\u6587\u5b57\u5316\u3051\u3068\u65e5\u672c\u8a9e\u5bfe\u5fdc\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-19\">\u751f\u6210\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Doxygen\u3068\u306f\uff1a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u81ea\u52d5\u751f\u6210\u306e\u9769\u65b0\u7684\u30c4\u30fc\u30eb<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">C++\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4e0d\u53ef\u6b20\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7ba1\u7406\u306e\u8ab2\u984c<\/h3>\n\n\n\n<p>\u5927\u898f\u6a21\u306aC++\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u9032\u3081\u308b\u4e0a\u3067\u3001\u958b\u767a\u8005\u304c\u76f4\u9762\u3059\u308b\u6700\u3082\u91cd\u8981\u306a\u8ab2\u984c\u306e\u4e00\u3064\u304c\u300c\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7ba1\u7406\u300d\u3067\u3059\u3002\u7279\u306b\u4ee5\u4e0b\u306e3\u3064\u306e\u8ab2\u984c\u304c\u9855\u8457\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30fc\u30c9\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u4e56\u96e2<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u66f4\u65b0\u306b\u4f34\u3046\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u66f4\u65b0\u6f0f\u308c<\/li>\n\n\n\n<li>\u624b\u52d5\u66f4\u65b0\u306b\u3088\u308b\u4eba\u7684\u30df\u30b9\u306e\u767a\u751f<\/li>\n\n\n\n<li>\u66f4\u65b0\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u9045\u5ef6\u306b\u3088\u308b\u60c5\u5831\u306e\u4e0d\u6574\u5408<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4f5c\u6210\u306e\u5de5\u6570<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u81a8\u5927\u306a\u6587\u66f8\u5316\u4f5c\u696d<\/li>\n\n\n\n<li>\u5f62\u5f0f\u306e\u7d71\u4e00\u3084\u54c1\u8cea\u7dad\u6301\u306b\u304b\u304b\u308b\u8ca0\u62c5<\/li>\n\n\n\n<li>\u65b0\u898f\u30e1\u30f3\u30d0\u30fc\u306e\u6559\u80b2\u30b3\u30b9\u30c8<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u3078\u306e\u5f71\u97ff<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e0d\u5341\u5206\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3088\u308b\u4fdd\u5b88\u4f5c\u696d\u306e\u975e\u52b9\u7387\u5316<\/li>\n\n\n\n<li>\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u306e\u7406\u89e3\u56f0\u96e3\u6027<\/li>\n\n\n\n<li>\u6280\u8853\u8ca0\u50b5\u306e\u84c4\u7a4d<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">Doxygen\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u958b\u767a\u73fe\u5834\u306e\u60a9\u307f<\/h3>\n\n\n\n<p>Doxygen\u306f\u3001\u3053\u308c\u3089\u306e\u8ab2\u984c\u306b\u5bfe\u3057\u3066\u9769\u65b0\u7684\u306a\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u81ea\u52d5\u5316\u306b\u3088\u308b\u4e00\u8cab\u6027\u306e\u78ba\u4fdd<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @brief \u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u30af\u30e9\u30b9\n * @details \u9867\u5ba2\u60c5\u5831\u306e\u7ba1\u7406\u3068\u66f4\u65b0\u3092\u884c\u3046\n *\/\nclass UserManager {\npublic:\n    \/**\n     * @brief \u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u66f4\u65b0\u3059\u308b\n     * @param userId \u30e6\u30fc\u30b6\u30fcID\n     * @param newData \u66f4\u65b0\u30c7\u30fc\u30bf\n     * @return \u66f4\u65b0\u306e\u6210\u5426\n     *\/\n    bool updateUserInfo(int userId, const UserData&amp; newData);\n};<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30b3\u30e1\u30f3\u30c8\u304b\u3089\u3001HTML\u3084PDF\u5f62\u5f0f\u306e\u5b8c\u5168\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u52b9\u7387\u7684\u306a\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u4e00\u5143\u7ba1\u7406<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u9023\u643a<\/li>\n\n\n\n<li>\u81ea\u52d5\u751f\u6210\u306b\u3088\u308b\u5de5\u6570\u524a\u6e1b\uff08\u7d0440%\u306e\u5de5\u6570\u524a\u6e1b\u52b9\u679c\uff09<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u54c1\u8cea\u5411\u4e0a\u3068\u6a19\u6e96\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7d71\u4e00\u3055\u308c\u305f\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u306e\u6587\u66f8\u5316<\/li>\n\n\n\n<li>\u30af\u30ed\u30b9\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u306e\u81ea\u52d5\u751f\u6210<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u53ef\u8996\u5316\u3068\u7406\u89e3\u6027\u306e\u5411\u4e0a<\/li>\n<\/ul>\n\n\n\n<p>Doxygen\u306e\u5c0e\u5165\u306b\u3088\u308a\u3001\u958b\u767a\u30c1\u30fc\u30e0\u306f\u4ee5\u4e0b\u306e\u30e1\u30ea\u30c3\u30c8\u3092\u4eab\u53d7\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-ec6c7b63-7458-4664-98fd-7a250639fe89\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30e1\u30ea\u30c3\u30c8<\/th><th>\u52b9\u679c<\/th><\/tr><\/thead><tbody><tr><td>\u4fdd\u5b88\u6027\u5411\u4e0a<\/td><td>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u81ea\u52d5\u66f4\u65b0\u306b\u3088\u308b\u6700\u65b0\u6027\u7dad\u6301<\/td><\/tr><tr><td>\u751f\u7523\u6027\u5411\u4e0a<\/td><td>\u6587\u66f8\u5316\u4f5c\u696d\u306e\u81ea\u52d5\u5316\u306b\u3088\u308b\u5de5\u6570\u524a\u6e1b<\/td><\/tr><tr><td>\u54c1\u8cea\u5411\u4e0a<\/td><td>\u7d71\u4e00\u3055\u308c\u305f\u5f62\u5f0f\u306b\u3088\u308b\u53ef\u8aad\u6027\u3068\u7406\u89e3\u6027\u306e\u5411\u4e0a<\/td><\/tr><tr><td>\u30c1\u30fc\u30e0\u9023\u643a<\/td><td>\u77e5\u8b58\u5171\u6709\u306e\u4fc3\u9032\u3068\u30aa\u30f3\u30dc\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u52b9\u7387\u5316<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u73fe\u4ee3\u306eC++\u958b\u767a\u306b\u304a\u3044\u3066\u3001Doxygen\u306f\u5358\u306a\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210\u30c4\u30fc\u30eb\u3067\u306f\u306a\u304f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6210\u529f\u3092\u5de6\u53f3\u3059\u308b\u91cd\u8981\u306a\u54c1\u8cea\u7ba1\u7406\u30c4\u30fc\u30eb\u3068\u3057\u3066\u4f4d\u7f6e\u3065\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u306e\u5177\u4f53\u7684\u306a\u5c0e\u5165\u624b\u9806\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">Doxygen\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u624b\u9806<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">Windows\u74b0\u5883\u3067\u306e\u5c0e\u5165\u65b9\u6cd5\u3068\u521d\u671f\u8a2d\u5b9a\u306e\u30b3\u30c4<\/h3>\n\n\n\n<p>Windows\u74b0\u5883\u3067\u306eDoxygen\u5c0e\u5165\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u7c21\u5358\u306b\u884c\u3048\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # 1. \u516c\u5f0f\u30b5\u30a4\u30c8\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n   # https:\/\/www.doxygen.nl\/download.html\n\n   # 2. \u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u3092\u5b9f\u884c\uff08\u63a8\u5968\u8a2d\u5b9a\uff09\n   doxygen-x.x.x-setup.exe\n\n   # 3. PATH\u74b0\u5883\u5909\u6570\u306e\u78ba\u8a8d\n   echo %PATH%<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Doxywizard\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GUI\u30c4\u30fc\u30eb\u3067\u521d\u671f\u8a2d\u5b9a\u3092\u8996\u899a\u7684\u306b\u884c\u3048\u308b<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210\u304c\u53ef\u80fd<\/li>\n\n\n\n<li>\u57fa\u672c\u8a2d\u5b9a\u304b\u3089\u8a73\u7d30\u8a2d\u5b9a\u307e\u3067\u76f4\u611f\u7684\u306b\u64cd\u4f5c<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u63a8\u5968\u30c4\u30fc\u30eb\u69cb\u6210<\/strong><br>\u30c4\u30fc\u30eb \u7528\u9014 \u63a8\u5968\u30d0\u30fc\u30b8\u30e7\u30f3<br>Doxygen \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210 1.9.x\u4ee5\u964d<br>Graphviz \u56f3\u8868\u751f\u6210 2.50\u4ee5\u964d<br>PlantUML UML\u56f3\u751f\u6210 \u6700\u65b0\u7248 Linux\/Mac\u74b0\u5883\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d7\u30ed\u30bb\u30b9 Linux\/Mac\u74b0\u5883\u3067\u306f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u3092\u4f7f\u7528\u3057\u3066\u7c21\u5358\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\uff1a <strong>Ubuntu\/Debian\u7cfb<\/strong> <code># \u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb sudo apt-get update sudo apt-get install doxygen sudo apt-get install graphviz # \u56f3\u8868\u751f\u6210\u306b\u5fc5\u8981 # \u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d doxygen --version<\/code> <strong>Mac\uff08Homebrew\u4f7f\u7528\uff09<\/strong> <code># Homebrew\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb brew install doxygen brew install graphviz # \u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d doxygen --version<\/code> Doxyfile\u306e\u57fa\u672c\u8a2d\u5b9a\u9805\u76ee\u3068\u63a8\u5968\u5024 Doxyfile\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210\u306e\u4e2d\u5fc3\u3068\u306a\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u8981\u306a\u8a2d\u5b9a\u9805\u76ee\u3068\u63a8\u5968\u5024\u3092\u793a\u3057\u307e\u3059\uff1a<ol><li><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u57fa\u672c\u8a2d\u5b9a<\/strong><\/li><\/ol><code># \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u60c5\u5831 PROJECT_NAME = \"\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\" PROJECT_NUMBER = 1.0 OUTPUT_DIRECTORY = docs OUTPUT_LANGUAGE = Japanese<\/code><ol start=\"2\"><li><strong>\u5165\u529b\u8a2d\u5b9a<\/strong><\/li><\/ol><code># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a INPUT = src FILE_PATTERNS = *.cpp *.h RECURSIVE = YES EXCLUDE_PATTERNS = *\/test\/* *\/build\/*<\/code><ol start=\"3\"><li><strong>\u51fa\u529b\u8a2d\u5b9a<\/strong><\/li><\/ol><code># \u51fa\u529b\u5f62\u5f0f\u306e\u8a2d\u5b9a GENERATE_HTML = YES GENERATE_LATEX = NO HTML_OUTPUT = html HTML_FILE_EXTENSION = .html<\/code><ol start=\"4\"><li><strong>\u89e3\u6790\u8a2d\u5b9a<\/strong><\/li><\/ol><code># \u89e3\u6790\u30aa\u30d7\u30b7\u30e7\u30f3 EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES CASE_SENSE_NAMES = YES<\/code><ol start=\"5\"><li><strong>\u30b0\u30e9\u30d5\u8a2d\u5b9a<\/strong><\/li><\/ol><code># \u30b0\u30e9\u30d5\u751f\u6210\u30aa\u30d7\u30b7\u30e7\u30f3 HAVE_DOT = YES CLASS_DIAGRAMS = YES COLLABORATION_GRAPH = YES UML_LOOK = YES<\/code> \u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a \u8a2d\u5b9a\u9805\u76ee \u63a8\u5968\u5024 \u7406\u7531 EXTRACT_ALL YES \u5b8c\u5168\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210\u306e\u305f\u3081 RECURSIVE YES \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u81ea\u52d5\u691c\u7d22 GENERATE_TREEVIEW YES \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u306e\u6539\u5584 USE_MDFILE_AS_MAINPAGE README.md \u30e1\u30a4\u30f3\u30da\u30fc\u30b8\u306e\u5145\u5b9f\u5316 \u6ce8\u610f\u70b9\uff1a<ul><li>\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f<code>EXTRACT_ALL = NO<\/code>\u3068\u3057\u3001\u5fc5\u8981\u306a\u90e8\u5206\u306e\u307f\u3092\u62bd\u51fa<\/li><li><code>EXCLUDE_PATTERNS<\/code>\u3067\u4e0d\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u5916\u3057\u3001\u751f\u6210\u6642\u9593\u3092\u77ed\u7e2e<\/li><li>\u65e5\u672c\u8a9e\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f<code>OUTPUT_LANGUAGE = Japanese<\/code>\u3092\u5fc5\u305a\u8a2d\u5b9a<\/li><\/ul>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306f<code>doxygen -g<\/code>\u30b3\u30de\u30f3\u30c9\u3067\u751f\u6210\u3055\u308c\u308b\u521d\u671fDoxyfile\u3092\u30d9\u30fc\u30b9\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-5\">\u5b9f\u8df5\u7684\u306aDoxygen\u8a18\u6cd5\u306e\u89e3\u8aac<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u30af\u30e9\u30b9\u3068\u30e1\u30f3\u30d0\u30fc\u306e\u52b9\u679c\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316<\/h3>\n\n\n\n<p>\u30af\u30e9\u30b9\u3068\u30e1\u30f3\u30d0\u30fc\u306e\u6587\u66f8\u5316\u306f\u3001C++\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u6700\u3082\u91cd\u8981\u306a\u4f5c\u696d\u306e\u4e00\u3064\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u52b9\u679c\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @brief \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3092\u7ba1\u7406\u3059\u308b\u30af\u30e9\u30b9\n * @details \u3053\u306e\u30af\u30e9\u30b9\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u3001\u5207\u65ad\u3001\n *          \u304a\u3088\u3073\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002\n * \n * @note \u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u5b9f\u88c5\u3068\u306a\u3063\u3066\u3044\u307e\u3059\n * @see Transaction\n * @author \u958b\u767a\u8005\u540d\n *\/\nclass DatabaseConnection {\nprivate:\n    std::string connectionString; \/\/\/&lt; \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u6587\u5b57\u5217\n\npublic:\n    \/**\n     * @brief \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n     * @param connStr \u63a5\u7d9a\u6587\u5b57\u5217\n     * @throw DatabaseException \u63a5\u7d9a\u6587\u5b57\u5217\u304c\u4e0d\u6b63\u306a\u5834\u5408\n     *\/\n    explicit DatabaseConnection(const std::string&amp; connStr);\n\n    \/**\n     * @brief \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3059\u308b\n     * @return true: \u63a5\u7d9a\u6210\u529f, false: \u63a5\u7d9a\u5931\u6557\n     *\/\n    bool connect();\n};<\/pre>\n\n\n\n<p>\u4e3b\u8981\u306a\u6587\u66f8\u5316\u30b3\u30de\u30f3\u30c9\uff1a<\/p>\n\n\n<div id=\"id-ea2ec67f-22ab-4a91-aa6a-73a40663083d\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30b3\u30de\u30f3\u30c9<\/th><th>\u7528\u9014<\/th><th>\u4f7f\u7528\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>@brief<\/td><td>\u6982\u8981\u8aac\u660e<\/td><td>@brief \u6a5f\u80fd\u306e\u7c21\u6f54\u306a\u8aac\u660e<\/td><\/tr><tr><td>@details<\/td><td>\u8a73\u7d30\u8aac\u660e<\/td><td>@details \u8a73\u7d30\u306a\u6a5f\u80fd\u8aac\u660e<\/td><\/tr><tr><td>@param<\/td><td>\u30d1\u30e9\u30e1\u30fc\u30bf\u8aac\u660e<\/td><td>@param name \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8aac\u660e<\/td><\/tr><tr><td>@return<\/td><td>\u623b\u308a\u5024\u306e\u8aac\u660e<\/td><td>@return \u623b\u308a\u5024\u306e\u8aac\u660e<\/td><\/tr><tr><td>@throw<\/td><td>\u4f8b\u5916\u306e\u8aac\u660e<\/td><td>@throw ExceptionType \u4f8b\u5916\u306e\u8aac\u660e<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u95a2\u6570\u306e\u5165\u51fa\u529b\u3068\u4f8b\u5916\u4ed5\u69d8\u306e\u8a18\u8ff0\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u95a2\u6570\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u3067\u306f\u3001\u5165\u529b\u3001\u51fa\u529b\u3001\u4f8b\u5916\u3092\u660e\u78ba\u306b\u8a18\u8ff0\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @brief \u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u3066\u4fdd\u5b58\u3059\u308b\n * \n * @param userData \u51e6\u7406\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\uff08null\u4e0d\u53ef\uff09\n * @param options \u51e6\u7406\u30aa\u30d7\u30b7\u30e7\u30f3\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3042\u308a\uff09\n * \n * @return \u51e6\u7406\u7d50\u679c\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\n *         - 0: \u6210\u529f\n *         - 1: \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc\n *         - 2: \u4fdd\u5b58\u30a8\u30e9\u30fc\n * \n * @throw std::invalid_argument userData\u304cnull\u306e\u5834\u5408\n * @throw DatabaseException \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u30a8\u30e9\u30fc\u306e\u5834\u5408\n * \n * @pre \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u304c\u78ba\u7acb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\n * @post \u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u304c\u6c38\u7d9a\u5316\u3055\u308c\u308b\u3053\u3068\n * \n * @since v2.0.0\n * @see UserData\n * @note \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u975e\u540c\u671f\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\n *\/\nint processAndSaveUserData(\n    const UserData* userData,\n    const ProcessOptions&amp; options = DefaultOptions()\n);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u30b0\u30eb\u30fc\u30d7\u5316\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u5206\u3051\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u9069\u5207\u306a\u30b0\u30eb\u30fc\u30d7\u5316\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u5206\u3051\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u5b9a\u7fa9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @defgroup database \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\n * @{\n *\/\n\n\/**\n * @brief \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306b\u95a2\u3059\u308b\u6a5f\u80fd\u3092\u63d0\u4f9b\n *\/\nnamespace Database {\n    \/\/ ... \u5b9f\u88c5 ...\n}\n\n\/** @} *\/ \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b0\u30eb\u30fc\u30d7\u306e\u7d42\u4e86<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u95a2\u9023\u6a5f\u80fd\u306e\u30b0\u30eb\u30fc\u30d7\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @addtogroup user_management\n * @{\n *\/\n\nclass UserManager;\nclass UserValidator;\nclass UserRepository;\n\n\/** @} *\/<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u540d\u524d\u7a7a\u9593\u306e\u6587\u66f8\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @namespace Auth\n * @brief \u8a8d\u8a3c\u95a2\u9023\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u540d\u524d\u7a7a\u9593\n *\/\nnamespace Auth {\n    \/**\n     * @brief \u30c8\u30fc\u30af\u30f3\u3092\u691c\u8a3c\u3059\u308b\n     * @param token \u691c\u8a3c\u5bfe\u8c61\u306e\u30c8\u30fc\u30af\u30f3\n     *\/\n    bool validateToken(const std::string&amp; token);\n}<\/pre>\n\n\n\n<p>\u5b9f\u8df5\u7684\u306aTips\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a4\u30f3\u30e9\u30a4\u30f3\u6587\u66f8\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int counter; \/\/\/&lt; \u30ab\u30a6\u30f3\u30bf\u30fc\u5909\u6570\nvoid increment(); \/\/\/&lt; \u30ab\u30a6\u30f3\u30bf\u30fc\u3092\u30a4\u30f3\u30af\u30ea\u30e1\u30f3\u30c8<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u6761\u4ef6\u4ed8\u304d\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @if JAPANESE\n * @brief \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u307e\u3059\n * @else\n * @brief Process data\n * @endif\n *\/\nvoid processData();<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306e\u4f8b\u793a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * \u4f7f\u7528\u4f8b\uff1a\n * @code\n * auto conn = DatabaseConnection(\"mysql:\/\/localhost:3306\");\n * if (conn.connect()) {\n *     \/\/ \u51e6\u7406\n * }\n * @endcode\n *\/<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u8b66\u544a\u3084\u30ce\u30fc\u30c8\u306e\u8ffd\u52a0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @warning \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u975e\u63a8\u5968\u3067\u3059\n * @deprecated v3.0.0\u304b\u3089\u975e\u63a8\u5968\u3001\u4ee3\u308f\u308a\u306bnewMethod()\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\n * @todo \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u304c\u5fc5\u8981\n *\/<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a18\u6cd5\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u7406\u89e3\u3057\u3084\u3059\u304f\u3001\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-9\">\u958b\u767a\u73fe\u5834\u3067\u306eDoxygen\u6d3b\u7528\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3078\u306e\u7d71\u5408\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>GitLab CI\u3067\u306e\u7d71\u5408\u4f8b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .gitlab-ci.yml\ndoxygen:\n  stage: documentation\n  script:\n    - apt-get update &amp;&amp; apt-get install -y doxygen graphviz\n    - doxygen Doxyfile\n    - mv docs\/html\/ public\/\n  artifacts:\n    paths:\n      - public\n    expire_in: 1 week\n  only:\n    - main\n    - develop<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>GitHub Actions\u3067\u306e\u7d71\u5408\u4f8b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .github\/workflows\/doxygen.yml\nname: Generate Documentation\non:\n  push:\n    branches: [ main ]\njobs:\n  build-docs:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v2\n      - name: Install Doxygen\n        run: sudo apt-get install doxygen graphviz -y\n      - name: Generate Docs\n        run: doxygen Doxyfile\n      - name: Deploy\n        uses: peaceiris\/actions-gh-pages@v3\n        with:\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          publish_dir: .\/docs\/html<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Jenkins Pipeline\u3067\u306e\u7d71\u5408\u4f8b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pipeline {\n    agent any\n    stages {\n        stage('Generate Documentation') {\n            steps {\n                sh 'doxygen Doxyfile'\n                archiveArtifacts artifacts: 'docs\/html\/**'\n            }\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u30c1\u30fc\u30e0\u958b\u767a\u3067\u306e\u904b\u7528\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u898f\u7d04<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-81f7ff36-9227-489e-8734-065fc3b48b8d\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9805\u76ee<\/th><th>\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u547d\u540d\u898f\u5247<\/td><td>\u30d1\u30b9\u30ab\u30eb\u30b1\u30fc\u30b9<\/td><td><code>@brief ProcessData<\/code><\/td><\/tr><tr><td>\u8a00\u8a9e<\/td><td>\u65e5\u672c\u8a9e\uff08\u7d71\u4e00\uff09<\/td><td>\u3059\u3079\u3066\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u65e5\u672c\u8a9e\u3067\u8a18\u8ff0<\/td><\/tr><tr><td>\u66f4\u65b0\u983b\u5ea6<\/td><td>\u30b3\u30fc\u30c9\u5909\u66f4\u6642<\/td><td>\u30ec\u30d3\u30e5\u30fc\u6642\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u66f4\u65b0\u3092\u78ba\u8a8d<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ec\u30d3\u30e5\u30fc\u30d7\u30ed\u30bb\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">graph LR\n    A[\u30b3\u30fc\u30c9\u5909\u66f4] --&gt; B[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u66f4\u65b0]\n    B --&gt; C[\u81ea\u52d5\u751f\u6210\u78ba\u8a8d]\n    C --&gt; D[\u30ec\u30d3\u30e5\u30fc\u5b9f\u65bd]\n    D --&gt; E[\u30de\u30fc\u30b8]<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u54c1\u8cea\u7ba1\u7406\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] \u5168\u3066\u306e\u516c\u958bAPI\/\u30af\u30e9\u30b9\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u5b58\u5728\u3059\u308b<\/li>\n\n\n\n<li>[ ] \u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u623b\u308a\u5024\u306e\u8aac\u660e\u304c\u660e\u78ba<\/li>\n\n\n\n<li>[ ] \u4f8b\u5916\u4ed5\u69d8\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b<\/li>\n\n\n\n<li>[ ] \u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b<\/li>\n\n\n\n<li>[ ] \u975e\u63a8\u5968API\u306b@deprecated\u30bf\u30b0\u304c\u3042\u308b<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u3078\u306e\u6bb5\u968e\u7684\u306a\u5c0e\u5165\u6226\u7565<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d5\u30a7\u30fc\u30ba1: \u6e96\u5099\u3068\u8a08\u753b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u65e2\u5b58\u30b3\u30fc\u30c9\nclass LegacySystem {\n    void processData(); \/\/ \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7121\u3057\n};\n\n\/\/ \u30d5\u30a7\u30fc\u30ba1: \u57fa\u672c\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u8ffd\u52a0\n\/**\n * @brief \u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u30af\u30e9\u30b9\n * @todo \u8a73\u7d30\u306a\u4ed5\u69d8\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u304c\u5fc5\u8981\n *\/\nclass LegacySystem {\n    \/**\n     * @brief \u30c7\u30fc\u30bf\u51e6\u7406\u3092\u5b9f\u884c\n     *\/\n    void processData();\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d5\u30a7\u30fc\u30ba2: \u8a73\u7d30\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * @brief \u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u30af\u30e9\u30b9\n * @details \u65e2\u5b58\u30b7\u30b9\u30c6\u30e0\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u30ed\u30b8\u30c3\u30af\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\n *\/\nclass LegacySystem {\n    \/**\n     * @brief \u30c7\u30fc\u30bf\u51e6\u7406\u3092\u5b9f\u884c\n     * @throws std::runtime_error \u51e6\u7406\u5931\u6557\u6642\n     * @note \u30ec\u30ac\u30b7\u30fc\u30ed\u30b8\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\n     *\/\n    void processData();\n};<\/pre>\n\n\n\n<p>\u5c0e\u5165\u6226\u7565\u306e\u30ed\u30fc\u30c9\u30de\u30c3\u30d7\uff1a<\/p>\n\n\n<div id=\"id-27993b75-622a-4487-b234-3ede4cee3236\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30d5\u30a7\u30fc\u30ba<\/th><th>\u671f\u9593<\/th><th>\u76ee\u6a19<\/th><\/tr><\/thead><tbody><tr><td>\u6e96\u5099<\/td><td>2\u9031\u9593<\/td><td>Doxyfile\u4f5c\u6210\u3001CI\u8a2d\u5b9a<\/td><\/tr><tr><td>\u57fa\u672c\u6587\u66f8\u5316<\/td><td>1\u30f6\u6708<\/td><td>\u4e3b\u8981\u30af\u30e9\u30b9\/\u95a2\u6570\u306e@brief\u8ffd\u52a0<\/td><\/tr><tr><td>\u8a73\u7d30\u5316<\/td><td>2-3\u30f6\u6708<\/td><td>\u30d1\u30e9\u30e1\u30fc\u30bf\u3001\u4f8b\u5916\u306e\u6587\u66f8\u5316<\/td><\/tr><tr><td>\u5b8c\u6210<\/td><td>1\u30f6\u6708<\/td><td>\u30b5\u30f3\u30d7\u30eb\u3001\u4f7f\u7528\u4f8b\u306e\u8ffd\u52a0<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u512a\u5148\u9806\u4f4d\u4ed8\u3051<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u516c\u958bAPI\u3092\u6700\u512a\u5148<\/li>\n\n\n\n<li>\u983b\u7e41\u306b\u4f7f\u7528\u3055\u308c\u308b\u6a5f\u80fd\u3092\u91cd\u8996<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u51e6\u7406\u3092\u512a\u5148\u7684\u306b\u6587\u66f8\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6bb5\u968e\u7684\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Step 1: \u57fa\u672c\u60c5\u5831\u306e\u8ffd\u52a0\n\/\/\/ @brief \u30c7\u30fc\u30bf\u51e6\u7406\u30e1\u30bd\u30c3\u30c9\nvoid processData();\n\n\/\/ Step 2: \u30d1\u30e9\u30e1\u30fc\u30bf\u60c5\u5831\u306e\u8ffd\u52a0\n\/**\n * @brief \u30c7\u30fc\u30bf\u51e6\u7406\u30e1\u30bd\u30c3\u30c9\n * @param data \u51e6\u7406\u5bfe\u8c61\u30c7\u30fc\u30bf\n *\/\nvoid processData(const Data&amp; data);\n\n\/\/ Step 3: \u5b8c\u5168\u306a\u6587\u66f8\u5316\n\/**\n * @brief \u30c7\u30fc\u30bf\u51e6\u7406\u30e1\u30bd\u30c3\u30c9\n * @param data \u51e6\u7406\u5bfe\u8c61\u30c7\u30fc\u30bf\n * @return \u51e6\u7406\u7d50\u679c\n * @throws ProcessException \u51e6\u7406\u5931\u6557\u6642\n * @see DataProcessor\n * @note \u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u4e92\u63db\u6027\u3042\u308a\n *\/\nResult processData(const Data&amp; data);<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u9032\u6357\u7ba1\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Doxygen\u306e\u30ab\u30d0\u30ec\u30c3\u30b8\u30ec\u30dd\u30fc\u30c8\u3092\u6d3b\u7528<\/li>\n\n\n\n<li>\u9031\u6b21\u3067\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u72b6\u6cc1\u30ec\u30d3\u30e5\u30fc<\/li>\n\n\n\n<li>\u30c1\u30fc\u30e0\u5185\u3067\u306e\u77e5\u8b58\u5171\u6709\u30bb\u30c3\u30b7\u30e7\u30f3\u5b9f\u65bd<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u5207\u306b\u5b9f\u65bd\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u679c\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7ba1\u7406\u4f53\u5236\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">Doxygen\u3092\u4f7f\u3063\u305f\u54c1\u8cea\u7ba1\u7406\u3068\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8\u306e\u6e2c\u5b9a\u3068\u6539\u5584<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30ab\u30d0\u30ec\u30c3\u30b8\u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\u8a2d\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Doxyfile\nGENERATE_HTML          = YES\nGENERATE_LATEX        = NO\nGENERATE_XML          = YES\nWARN_NO_PARAMDOC      = YES\nWARN_AS_ERROR         = NO_PARAMDOC\nXML_PROGRAMLISTING    = YES<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ab\u30d0\u30ec\u30c3\u30b8\u6e2c\u5b9a\u30b9\u30af\u30ea\u30d7\u30c8<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/usr\/bin\/env python3\n\"\"\"\nDoxygen\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8\u3092\u6e2c\u5b9a\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\n\"\"\"\nimport xml.etree.ElementTree as ET\nimport os\n\ndef calculate_coverage(xml_dir):\n    total_elements = 0\n    documented_elements = 0\n\n    for xml_file in os.listdir(xml_dir):\n        if not xml_file.endswith('.xml'):\n            continue\n\n        tree = ET.parse(os.path.join(xml_dir, xml_file))\n        root = tree.getroot()\n\n        for element in root.findall(\".\/\/memberdef\"):\n            total_elements += 1\n            if element.find('briefdescription').find('para') is not None:\n                documented_elements += 1\n\n    return (documented_elements \/ total_elements) * 100 if total_elements &gt; 0 else 0\n\ncoverage = calculate_coverage('xml')\nprint(f\"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8: {coverage:.2f}%\")<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30ab\u30d0\u30ec\u30c3\u30b8\u57fa\u6e96<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-97960eb0-684c-4642-8f77-2b72cf35d320\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30ec\u30d9\u30eb<\/th><th>\u30ab\u30d0\u30ec\u30c3\u30b8<\/th><th>\u8981\u4ef6<\/th><\/tr><\/thead><tbody><tr><td>\u6700\u5c0f\u8981\u4ef6<\/td><td>70%<\/td><td>\u516c\u958bAPI\/\u30af\u30e9\u30b9\u306e\u57fa\u672c\u6587\u66f8\u5316<\/td><\/tr><tr><td>\u63a8\u5968<\/td><td>85%<\/td><td>\u30d1\u30e9\u30e1\u30fc\u30bf\/\u623b\u308a\u5024\u306e\u5b8c\u5168\u6587\u66f8\u5316<\/td><\/tr><tr><td>\u7406\u60f3\u7684<\/td><td>95%<\/td><td>\u4f8b\u5916\u4ed5\u69d8\u542b\u3080\u5b8c\u5168\u6587\u66f8\u5316<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u89e3\u6790\u3068\u5bfe\u5fdc\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e3b\u8981\u306a\u8b66\u544a\u30bf\u30a4\u30d7\u3068\u5bfe\u5fdc<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8b66\u544a\u4f8b1: \u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u66f8\u5316\u6f0f\u308c\n\/**\n * @brief \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\n * \u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u66f8\u5316\u6f0f\u308c\u306e\u8b66\u544a\u304c\u767a\u751f\n *\/\nvoid processData(int value);  \/\/ Warning: Parameter 'value' not documented\n\n\/\/ \u4fee\u6b63\u4f8b\n\/**\n * @brief \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\n * @param value \u51e6\u7406\u5bfe\u8c61\u306e\u5024\n *\/\nvoid processData(int value);\n\n\/\/ \u8b66\u544a\u4f8b2: \u623b\u308a\u5024\u306e\u6587\u66f8\u5316\u6f0f\u308c\n\/**\n * @brief \u8a08\u7b97\u3092\u5b9f\u884c\u3059\u308b\n *\/\nint calculate();  \/\/ Warning: Return value not documented\n\n\/\/ \u4fee\u6b63\u4f8b\n\/**\n * @brief \u8a08\u7b97\u3092\u5b9f\u884c\u3059\u308b\n * @return \u8a08\u7b97\u7d50\u679c\n *\/\nint calculate();<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u8b66\u544a\u6291\u5236\u306e\u9069\u5207\u306a\u4f7f\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u7279\u5b9a\u306e\u8b66\u544a\u3092\u6291\u5236\u3059\u308b\u5834\u5408\n\/\/! @cond\nvoid internalFunction();  \/\/ \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u4e0d\u8981\u306e\u5185\u90e8\u95a2\u6570\n\/\/! @endcond\n\n\/\/ \u4e00\u6642\u7684\u306a\u8b66\u544a\u6291\u5236\n\/**\n * @brief \u958b\u767a\u4e2d\u306e\u6a5f\u80fd\n * @todo \u5b8c\u5168\u306a\u6587\u66f8\u5316\u304c\u5fc5\u8981\n *\/\nvoid developingFeature();  \/\/ SUPPRESS_WARNINGS<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\u306e\u81ea\u52d5\u5316<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5b9f\u88c5<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# Doxygen\u306e\u5b9f\u884c\u3068\u8b66\u544a\u30c1\u30a7\u30c3\u30af\ndoxygen Doxyfile 2&gt; doxygen_warnings.txt\n\n# \u8b66\u544a\u6570\u306e\u30ab\u30a6\u30f3\u30c8\nwarning_count=$(grep -c \"warning:\" doxygen_warnings.txt)\n\n# \u91cd\u8981\u306a\u8b66\u544a\u30d1\u30bf\u30fc\u30f3\u306e\u30c1\u30a7\u30c3\u30af\nparam_warnings=$(grep -c \"parameter.*not documented\" doxygen_warnings.txt)\nreturn_warnings=$(grep -c \"return.*not documented\" doxygen_warnings.txt)\nbrief_warnings=$(grep -c \"No brief description\" doxygen_warnings.txt)\n\necho \"\u8b66\u544a\u7dcf\u6570: $warning_count\"\necho \"\u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u66f8\u5316\u6f0f\u308c: $param_warnings\"\necho \"\u623b\u308a\u5024\u6587\u66f8\u5316\u6f0f\u308c: $return_warnings\"\necho \"\u6982\u8981\u8aac\u660e\u6f0f\u308c: $brief_warnings\"\n\n# \u95be\u5024\u30c1\u30a7\u30c3\u30af\nif [ $warning_count -gt 50 ]; then\n    echo \"\u8b66\u544a\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u4fee\u6b63\u304c\u5fc5\u8981\u3067\u3059\u3002\"\n    exit 1\nfi<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u54c1\u8cea\u30e1\u30c8\u30ea\u30af\u30b9\u5b9a\u7fa9<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-a4c75633-cb18-4480-addb-958bc0b8d81a\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30e1\u30c8\u30ea\u30af\u30b9<\/th><th>\u8aac\u660e<\/th><th>\u76ee\u6a19\u5024<\/th><\/tr><\/thead><tbody><tr><td>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5bc6\u5ea6<\/td><td>1000\u884c\u3042\u305f\u308a\u306e\u30b3\u30e1\u30f3\u30c8\u884c\u6570<\/td><td>&gt;200\u884c<\/td><\/tr><tr><td>API\u7db2\u7f85\u7387<\/td><td>\u6587\u66f8\u5316\u3055\u308c\u305fAPI\u5272\u5408<\/td><td>&gt;90%<\/td><\/tr><tr><td>\u8b66\u544a\u5bc6\u5ea6<\/td><td>1000\u884c\u3042\u305f\u308a\u306e\u8b66\u544a\u6570<\/td><td>&lt;5\u4ef6<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u7d99\u7d9a\u7684\u306a\u54c1\u8cea\u6539\u5584\u30d7\u30ed\u30bb\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">graph TD\n    A[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210] --&gt; B[\u8b66\u544a\u5206\u6790]\n    B --&gt; C[\u512a\u5148\u5ea6\u4ed8\u3051]\n    C --&gt; D[\u4fee\u6b63\u5b9f\u65bd]\n    D --&gt; E[\u518d\u30c1\u30a7\u30c3\u30af]\n    E --&gt; A<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u81ea\u52d5\u30c1\u30a7\u30c3\u30af\u306e\u5c0e\u5165<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .gitlab-ci.yml\ndocumentation_quality:\n  stage: quality\n  script:\n    - doxygen Doxyfile\n    - python coverage_check.py\n    - bash warning_check.sh\n  artifacts:\n    reports:\n      coverage: coverage.xml\n    paths:\n      - doxygen_warnings.txt\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\"\n    - if: $CI_COMMIT_BRANCH == \"develop\"<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u54c1\u8cea\u30ec\u30dd\u30fc\u30c8\u306e\u81ea\u52d5\u751f\u6210<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def generate_quality_report():\n    \"\"\"\u54c1\u8cea\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210\u3059\u308b\"\"\"\n    metrics = {\n        'coverage': calculate_coverage(),\n        'warnings': count_warnings(),\n        'density': calculate_doc_density()\n    }\n\n    generate_html_report(metrics)\n    notify_team_if_needed(metrics)<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u65bd\u7b56\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u52b9\u679c\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u54c1\u8cea\u306e\u5b9a\u91cf\u7684\u306a\u628a\u63e1<\/li>\n\n\n\n<li>\u554f\u984c\u7b87\u6240\u306e\u65e9\u671f\u767a\u898b\u3068\u4fee\u6b63<\/li>\n\n\n\n<li>\u30c1\u30fc\u30e0\u5168\u4f53\u3067\u306e\u54c1\u8cea\u610f\u8b58\u306e\u5411\u4e0a<\/li>\n\n\n\n<li>\u4fdd\u5b88\u6027\u306e\u7d99\u7d9a\u7684\u306a\u6539\u5584<\/li>\n<\/ul>\n\n\n\n<p>\u5b9a\u671f\u7684\u306a\u30ec\u30d3\u30e5\u30fc\u3068\u6539\u5584\u30b5\u30a4\u30af\u30eb\u3092\u78ba\u7acb\u3059\u308b\u3053\u3068\u3067\u3001\u9ad8\u54c1\u8cea\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7ba1\u7406\u4f53\u5236\u3092\u7dad\u6301\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-17\">\u3088\u304f\u3042\u308b\u30c8\u30e9\u30d6\u30eb\u3068\u89e3\u6c7a\u7b56<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u6587\u5b57\u5316\u3051\u3068\u65e5\u672c\u8a9e\u5bfe\u5fdc\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Doxyfile\u3067\u306e\u6587\u5b57\u30b3\u30fc\u30c9\u8a2d\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u65e5\u672c\u8a9e\u5bfe\u5fdc\u306e\u57fa\u672c\u8a2d\u5b9a\nOUTPUT_LANGUAGE        = Japanese\nINPUT_ENCODING        = UTF-8\nFILE_PATTERNS         = *.cpp *.h *.dox\nDOXYFILE_ENCODING     = UTF-8<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Windows\u74b0\u5883\u3067\u306e\u6587\u5b57\u5316\u3051\u5bfe\u7b56<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">rem Windows\u74b0\u5883\u3067\u306e\u6587\u5b57\u5316\u3051\u5bfe\u7b56\u30d0\u30c3\u30c1\u30d5\u30a1\u30a4\u30eb\nchcp 65001\nset LANG=ja_JP.UTF-8\n\nrem Doxygen\u5b9f\u884c\ndoxygen Doxyfile<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u6587\u5b57\u5316\u3051\u30c8\u30e9\u30d6\u30eb\u306e\u5bfe\u51e6\u6cd5<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-4ac06223-1994-46a3-ad72-09d287361deb\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u554f\u984c<\/th><th>\u539f\u56e0<\/th><th>\u89e3\u6c7a\u7b56<\/th><\/tr><\/thead><tbody><tr><td>\u30bd\u30fc\u30b9\u306e\u6587\u5b57\u5316\u3051<\/td><td>\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4e0d\u4e00\u81f4<\/td><td><code>INPUT_ENCODING = UTF-8<\/code>\u3092\u8a2d\u5b9a<\/td><\/tr><tr><td>\u51fa\u529bHTML\u306e\u6587\u5b57\u5316\u3051<\/td><td>\u51fa\u529b\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u8a2d\u5b9a\u30df\u30b9<\/td><td><code>HTML_OUTPUT_ENCODING = UTF-8<\/code>\u3092\u8ffd\u52a0<\/td><\/tr><tr><td>\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51fa\u529b\u306e\u6587\u5b57\u5316\u3051<\/td><td>\u30b3\u30f3\u30bd\u30fc\u30eb\u306e\u6587\u5b57\u30b3\u30fc\u30c9\u8a2d\u5b9a<\/td><td><code>chcp 65001<\/code>\u3067UTF-8\u306b\u8a2d\u5b9a<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u751f\u6210\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTML\u30c6\u30fc\u30de\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/* doxygen.css *\/\n\/* \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba *\/\n.navbar {\n    background-color: #2c3e50;\n    color: white;\n}\n\n\/* \u898b\u51fa\u3057\u306e\u30b9\u30bf\u30a4\u30eb *\/\nh1, h2, h3 {\n    color: #34495e;\n    border-bottom: 2px solid #eee;\n}\n\n\/* \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306e\u30b9\u30bf\u30a4\u30eb *\/\n.fragment {\n    background-color: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 4px;\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ec\u30a4\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Doxyfile\nGENERATE_TREEVIEW      = YES\nDISABLE_INDEX         = NO\nFULL_SIDEBAR         = YES\nHTML_EXTRA_STYLESHEET = doxygen-custom.css\nHTML_EXTRA_FILES     = custom.js logo.png<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\/\u30d5\u30c3\u30bf\u30fc\u306e\u8ffd\u52a0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Doxyfile\nHTML_HEADER           = header.html\nHTML_FOOTER           = footer.html\nPROJECT_LOGO          = company_logo.png<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u30ab\u30b9\u30bf\u30e0JavaScript\u6a5f\u80fd\u306e\u8ffd\u52a0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ custom.js\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ \u691c\u7d22\u6a5f\u80fd\u306e\u62e1\u5f35\n    const searchBox = document.querySelector('#MSearchBox');\n    if (searchBox) {\n        searchBox.style.width = '300px';\n    }\n\n    \/\/ \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306e\u30b3\u30d4\u30fc\u6a5f\u80fd\u8ffd\u52a0\n    document.querySelectorAll('.fragment').forEach(block =&gt; {\n        const button = document.createElement('button');\n        button.innerText = '\u30b3\u30d4\u30fc';\n        button.onclick = () =&gt; {\n            navigator.clipboard.writeText(block.textContent);\n        };\n        block.parentNode.insertBefore(button, block);\n    });\n});<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u751f\u6210\u6642\u9593\u306e\u77ed\u7e2e<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Doxyfile \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u8a2d\u5b9a\nEXTRACT_ALL           = NO\nEXTRACT_PRIVATE       = NO\nEXTRACT_STATIC        = NO\nRECURSIVE             = YES\nEXCLUDE_PATTERNS      = *\/test\/* *\/build\/* *\/3rdparty\/*\nEXCLUDE_SYMBOLS       = *_TEST *_IMPL\nHAVE_DOT             = NO  # \u56f3\u306e\u751f\u6210\u3092\u7121\u52b9\u5316<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n# \u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5411\u3051Doxygen\u5b9f\u884c\u30b9\u30af\u30ea\u30d7\u30c8\n\n# \u30e1\u30e2\u30ea\u5236\u9650\u306e\u8a2d\u5b9a\nulimit -v 4194304  # 4GB\u5236\u9650\n\n# \u4e00\u6642\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u6307\u5b9a\nexport TMPDIR=\/path\/to\/large\/tmpdir\n\n# Doxygen\u306e\u5b9f\u884c\uff08\u8907\u6570\u30d7\u30ed\u30bb\u30b9\u3067\u4e26\u5217\u51e6\u7406\uff09\ndoxygen Doxyfile<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-256a3e28-8da5-4cf9-a5de-a1b21398d11d\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u554f\u984c<\/th><th>\u8a3a\u65ad\u65b9\u6cd5<\/th><th>\u89e3\u6c7a\u7b56<\/th><\/tr><\/thead><tbody><tr><td>\u751f\u6210\u304c\u9045\u3044<\/td><td>time \u30b3\u30de\u30f3\u30c9\u3067\u8a08\u6e2c<\/td><td>EXTRACT_ALL\u3092NO\u306b\u8a2d\u5b9a\u3001\u4e0d\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u5916<\/td><\/tr><tr><td>\u30e1\u30e2\u30ea\u4e0d\u8db3<\/td><td>top\/htop\u3067\u76e3\u8996<\/td><td>RECURSIVE=NO\u306b\u8a2d\u5b9a\u3001\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u5916<\/td><\/tr><tr><td>CPU\u4f7f\u7528\u7387\u304c\u9ad8\u3044<\/td><td>profiler\u3067\u5206\u6790<\/td><td>HAVE_DOT=NO\u306b\u8a2d\u5b9a\u3001\u56f3\u306e\u751f\u6210\u3092\u5236\u9650<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u6700\u9069\u5316\u4f8b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5411\u3051Doxyfile\u8a2d\u5b9a\nFULL_PATH_NAMES       = NO\nSTRIP_FROM_PATH      = src\/\nSTRIP_FROM_INC_PATH  = include\/\nLOOKUP_CACHE_SIZE    = 2  # \u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30a4\u30ba\u5897\u52a0\nCLASS_DIAGRAMS       = NO\nHAVE_DOT             = NO\nINTERACTIVE_SVG      = NO<\/pre>\n\n\n\n<p>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6bb5\u968e\u7684\u306a\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">graph TD\n    A[\u554f\u984c\u767a\u751f] --&gt; B[\u30ed\u30b0\u78ba\u8a8d]\n    B --&gt; C[\u8a2d\u5b9a\u78ba\u8a8d]\n    C --&gt; D[\u30c6\u30b9\u30c8\u751f\u6210]\n    D --&gt; E[\u8a2d\u5b9a\u8abf\u6574]\n    E --&gt; F[\u518d\u30c6\u30b9\u30c8]<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u4e00\u822c\u7684\u306a\u30c8\u30e9\u30d6\u30eb\u5bfe\u51e6\u30d5\u30ed\u30fc<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>Doxyfile\u8a2d\u5b9a\u306e\u898b\u76f4\u3057<\/li>\n\n\n\n<li>\u5c0f\u898f\u6a21\u30c6\u30b9\u30c8\u3067\u306e\u691c\u8a3c<\/li>\n\n\n\n<li>\u6bb5\u968e\u7684\u306a\u8a2d\u5b9a\u5909\u66f4<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u4e88\u9632\u7684\u5bfe\u7b56<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b9a\u671f\u7684\u306a\u8a2d\u5b9a\u306e\u898b\u76f4\u3057<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a\u306e\u7dad\u6301<\/li>\n\n\n\n<li>\u5b9a\u671f\u7684\u306a\u52d5\u4f5c\u78ba\u8a8d<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5bfe\u7b56\u3068\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u5b89\u5b9a\u3057\u305f\u904b\u7528\u3068\u52b9\u7387\u7684\u306a\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-1830","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cpp","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1830","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1830"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1830\/revisions"}],"predecessor-version":[{"id":1832,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1830\/revisions\/1832"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1830"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1830"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}