{"id":25616,"date":"2024-10-18T02:19:07","date_gmt":"2024-10-17T17:19:07","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25616"},"modified":"2024-10-18T02:19:09","modified_gmt":"2024-10-17T17:19:09","slug":"elder-html","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25616","title":{"rendered":"ELDER.html"},"content":{"rendered":"<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n&lt;head&gt;\n  &lt;meta charset=&quot;UTF-8&quot;&gt;\n  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;\n  &lt;title&gt;ELDER - \u30bd\u30fc\u30b7\u30e3\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9&lt;\/title&gt;\n  &lt;!-- CSS\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f --&gt;\n  &lt;link href=&quot;https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/css\/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt; \n  &lt;link href=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.15.4\/css\/all.min.css&quot; rel=&quot;stylesheet&quot;&gt;\n  &lt;!-- RiTa.js\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8aad\u307f\u8fbc\u307f --&gt;\n  &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/rita\/1.3.63\/rita-full.min.js&quot;&gt;&lt;\/script&gt;\n  &lt;style&gt;\n    \/* \u65e2\u5b58\u306e\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8 *\/\n    body {\n      padding-top: 20px;\n      background: linear-gradient(to right, #f8f9fa, #e9ecef);\n      font-family: 'Arial', sans-serif;\n      color: #343a40;\n    }\n\n    .navbar {\n      background-color: #007bff;\n      box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n    }\n\n    .navbar-brand,\n    .nav-link {\n      color: #fff !important;\n      font-weight: bold;\n    }\n\n    .navbar-toggler {\n      border: none;\n    }\n\n    .card {\n      border-radius: 12px;\n      box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\n      transition: transform 0.3s, box-shadow 0.3s;\n    }\n\n    .card:hover {\n      transform: translateY(-5px);\n      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);\n    }\n\n    .card-body {\n      padding: 30px;\n    }\n\n    .form-control {\n      border-radius: 20px;\n      border: 1px solid #ced4da;\n      padding: 15px;\n      transition: border-color 0.3s;\n    }\n\n    .form-control:focus {\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .btn-primary {\n      background-color: #007bff;\n      border: none;\n      border-radius: 20px;\n      padding: 10px 20px;\n      font-weight: bold;\n      transition: background-color 0.3s, transform 0.3s;\n    }\n\n    .btn-primary:hover {\n      background-color: #0056b3;\n      transform: translateY(-3px);\n    }\n\n    .btn-secondary {\n      border-radius: 20px;\n      padding: 10px 20px;\n      font-weight: bold;\n      transition: background-color 0.3s, transform 0.3s;\n    }\n\n    .btn-secondary:hover {\n      background-color: #6c757d;\n      transform: translateY(-3px);\n    }\n\n    .profile-img {\n      width: 80px;\n      height: 80px;\n      object-fit: cover;\n      border-radius: 50%;\n      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n    }\n\n    .text-center h1 {\n      font-weight: 700;\n      font-size: 2.5em;\n      margin-bottom: 20px;\n      color: #007bff;\n    }\n\n    .comment-section {\n      margin-top: 20px;\n      padding: 20px;\n      background-color: #f1f3f5;\n      border-radius: 8px;\n    }\n\n    .comment-section .card {\n      border: none;\n      background: #ffffff;\n      border-radius: 8px;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n    }\n\n    .modal-content {\n      border-radius: 15px;\n      overflow: hidden;\n    }\n\n    .modal-header {\n      background-color: #007bff;\n      color: white;\n      border-bottom: none;\n    }\n\n    .modal-footer {\n      border-top: none;\n    }\n\n    .form-error {\n      color: red;\n      font-size: 0.9em;\n    }\n\n    \/* \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30c7\u30b6\u30a4\u30f3 *\/\n    #timeline {\n      margin-top: 20px;\n    }\n\n    #timeline .card {\n      border-radius: 15px;\n      box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);\n      margin-bottom: 20px;\n      overflow: hidden;\n      background-color: #fff;\n    }\n\n    #timeline .card-body {\n      padding: 20px;\n    }\n\n    #timeline .btn {\n      border-radius: 20px;\n    }\n\n    \/* \u6295\u7a3f\u306e\u30b7\u30a7\u30a2\u30dc\u30bf\u30f3 *\/\n    .btn-share {\n      background-color: #ff9800;\n      border: none;\n      border-radius: 20px;\n      padding: 5px 10px;\n      color: #fff;\n      font-weight: bold;\n      transition: background-color 0.3s;\n    }\n\n    .btn-share:hover {\n      background-color: #e68900;\n    }\n\n    \/* X\uff08\u65e7Twitter\uff09\u30b7\u30a7\u30a2\u30dc\u30bf\u30f3 *\/\n    .btn-share-twitter {\n      background-color: #1da1f2;\n      border: none;\n      border-radius: 20px;\n      padding: 5px 10px;\n      color: #fff;\n      font-weight: bold;\n      transition: background-color 0.3s;\n    }\n\n    .btn-share-twitter:hover {\n      background-color: #1480bf;\n    }\n\n    \/* \u901a\u77e5\u30a8\u30ea\u30a2 *\/\n    #notificationArea {\n      position: fixed;\n      top: 80px;\n      right: 20px;\n      z-index: 1000;\n      max-width: 300px;\n    }\n\n    \/* FEED\u30a2\u30a4\u30b3\u30f3\u3092RSS\u306e\u6587\u5b57\u306b\u5909\u66f4 *\/\n    .nav-item .rss-icon {\n      font-weight: bold;\n      color: #fff;\n    }\n  &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\n&lt;!-- \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc --&gt;\n&lt;nav class=&quot;navbar navbar-expand-lg navbar-light bg-light&quot;&gt;\n  &lt;a class=&quot;navbar-brand&quot; href=&quot;#&quot;&gt;ELDER&lt;\/a&gt;\n  &lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#navbarNav&quot; aria-controls=&quot;navbarNav&quot; aria-expanded=&quot;false&quot; aria-label=&quot;\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u306e\u5207\u308a\u66ff\u3048&quot;&gt;\n    &lt;span class=&quot;navbar-toggler-icon&quot;&gt;&lt;\/span&gt;\n  &lt;\/button&gt;\n  &lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarNav&quot;&gt;\n    &lt;ul class=&quot;navbar-nav ml-auto&quot;&gt;\n      &lt;li class=&quot;nav-item&quot;&gt;\n        &lt;a class=&quot;nav-link&quot; href=&quot;#&quot; onclick=&quot;showLoginForm()&quot;&gt;\u30ed\u30b0\u30a4\u30f3&lt;\/a&gt;\n      &lt;\/li&gt;\n      &lt;li class=&quot;nav-item&quot;&gt;\n        &lt;a class=&quot;nav-link&quot; href=&quot;#&quot; onclick=&quot;showRegisterForm()&quot;&gt;\u767b\u9332&lt;\/a&gt;\n      &lt;\/li&gt;\n      &lt;li class=&quot;nav-item&quot;&gt;\n        &lt;a class=&quot;nav-link&quot; href=&quot;#&quot; onclick=&quot;showProfile()&quot; style=&quot;display: none;&quot; id=&quot;navProfile&quot;&gt;\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb&lt;\/a&gt;\n      &lt;\/li&gt;\n      &lt;li class=&quot;nav-item&quot;&gt;\n        &lt;a class=&quot;nav-link&quot; href=&quot;#&quot; onclick=&quot;logout()&quot; style=&quot;display: none;&quot; id=&quot;navLogout&quot;&gt;\u30ed\u30b0\u30a2\u30a6\u30c8&lt;\/a&gt;\n      &lt;\/li&gt;\n      &lt;!-- FEED\u30a2\u30a4\u30b3\u30f3\u3092RSS\u306e\u6587\u5b57\u306b\u5909\u66f4 --&gt;\n      &lt;li class=&quot;nav-item&quot; id=&quot;navFeed&quot; style=&quot;display: none;&quot;&gt;\n        &lt;a class=&quot;nav-link rss-icon&quot; href=&quot;#&quot; onclick=&quot;showFeedForm()&quot;&gt;RSS&lt;\/a&gt;\n      &lt;\/li&gt;\n    &lt;\/ul&gt;\n  &lt;\/div&gt;\n&lt;\/nav&gt;\n\n&lt;div class=&quot;container&quot;&gt;\n  &lt;!-- \u30ed\u30b0\u30a4\u30f3\u30d5\u30a9\u30fc\u30e0 --&gt;\n  &lt;div id=&quot;loginForm&quot; class=&quot;card w-50 mx-auto&quot;&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;h2 class=&quot;card-title text-center mb-4&quot;&gt;\u30ed\u30b0\u30a4\u30f3&lt;\/h2&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;text&quot; id=&quot;loginUsername&quot; class=&quot;form-control&quot; placeholder=&quot;\u30e6\u30fc\u30b6\u30fc\u540d&quot;&gt;\n        &lt;span id=&quot;loginUsernameError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;password&quot; id=&quot;loginPassword&quot; class=&quot;form-control&quot; placeholder=&quot;\u30d1\u30b9\u30ef\u30fc\u30c9&quot;&gt;\n        &lt;span id=&quot;loginPasswordError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;login()&quot; class=&quot;btn btn-primary btn-block&quot;&gt;\u30ed\u30b0\u30a4\u30f3&lt;\/button&gt;\n      &lt;button onclick=&quot;showRegisterForm()&quot; class=&quot;btn btn-secondary btn-block&quot;&gt;\u767b\u9332&lt;\/button&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n\n  &lt;!-- \u767b\u9332\u30d5\u30a9\u30fc\u30e0 --&gt;\n  &lt;div id=&quot;registerForm&quot; class=&quot;card w-50 mx-auto&quot; style=&quot;display: none;&quot;&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;h2 class=&quot;card-title text-center mb-4&quot;&gt;\u767b\u9332&lt;\/h2&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;text&quot; id=&quot;registerName&quot; class=&quot;form-control&quot; placeholder=&quot;\u6c0f\u540d&quot;&gt;\n        &lt;span id=&quot;registerNameError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;\u6c0f\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;text&quot; id=&quot;registerUsername&quot; class=&quot;form-control&quot; placeholder=&quot;\u30e6\u30fc\u30b6\u30fc\u540d&quot;&gt;\n        &lt;span id=&quot;registerUsernameError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;password&quot; id=&quot;registerPassword&quot; class=&quot;form-control&quot; placeholder=&quot;\u30d1\u30b9\u30ef\u30fc\u30c9&quot;&gt;\n        &lt;span id=&quot;registerPasswordError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;password&quot; id=&quot;registerConfirmPassword&quot; class=&quot;form-control&quot; placeholder=&quot;\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u78ba\u8a8d&quot;&gt;\n        &lt;span id=&quot;registerConfirmPasswordError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;register()&quot; class=&quot;btn btn-primary btn-block&quot;&gt;\u767b\u9332&lt;\/button&gt;\n      &lt;button onclick=&quot;showLoginForm()&quot; class=&quot;btn btn-secondary btn-block&quot;&gt;\u30ed\u30b0\u30a4\u30f3\u306b\u623b\u308b&lt;\/button&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n\n  &lt;!-- \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb --&gt;\n  &lt;div id=&quot;profile&quot; class=&quot;card w-50 mx-auto&quot; style=&quot;display: none;&quot;&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;h2 class=&quot;card-title text-center mb-4&quot;&gt;\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb&lt;\/h2&gt;\n      &lt;div class=&quot;text-center mb-3&quot;&gt;\n        &lt;img id=&quot;profileImg&quot; class=&quot;profile-img&quot; src=&quot;default_profile_img.jpg&quot; alt=&quot;\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf&quot;&gt;\n      &lt;\/div&gt;\n      &lt;p class=&quot;text-center mb-2&quot;&gt;&lt;strong&gt;\u6c0f\u540d:&lt;\/strong&gt; &lt;span id=&quot;profileName&quot;&gt;&lt;\/span&gt;&lt;\/p&gt;\n      &lt;p class=&quot;text-center mb-4&quot;&gt;&lt;strong&gt;\u30e6\u30fc\u30b6\u30fc\u540d:&lt;\/strong&gt; &lt;span id=&quot;profileUsername&quot;&gt;&lt;\/span&gt;&lt;\/p&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;file&quot; id=&quot;profileImageInput&quot; accept=&quot;image\/*&quot; class=&quot;form-control-file&quot;&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;uploadProfileImage()&quot; class=&quot;btn btn-primary btn-block&quot;&gt;&lt;i class=&quot;fas fa-upload&quot;&gt;&lt;\/i&gt; \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9&lt;\/button&gt;\n      &lt;button onclick=&quot;logout()&quot; class=&quot;btn btn-danger btn-block&quot;&gt;&lt;i class=&quot;fas fa-sign-out-alt&quot;&gt;&lt;\/i&gt; \u30ed\u30b0\u30a2\u30a6\u30c8&lt;\/button&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n\n  &lt;!-- \u6295\u7a3f\u30d5\u30a9\u30fc\u30e0 --&gt;\n  &lt;div id=&quot;postForm&quot; class=&quot;card w-75 mx-auto&quot; style=&quot;display: none;&quot;&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;h2 class=&quot;card-title text-center mb-4&quot;&gt;\u6295\u7a3f\u3092\u4f5c\u6210&lt;\/h2&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;textarea id=&quot;postContent&quot; class=&quot;form-control&quot; rows=&quot;3&quot; placeholder=&quot;\u4eca\u4f55\u3092\u8003\u3048\u3066\u3044\u307e\u3059\u304b\uff1f&quot;&gt;&lt;\/textarea&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;createPost()&quot; class=&quot;btn btn-primary btn-block&quot;&gt;\u6295\u7a3f&lt;\/button&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n\n  &lt;!-- FEED\u767b\u9332\u30d5\u30a9\u30fc\u30e0 --&gt;\n  &lt;div id=&quot;feedForm&quot; class=&quot;card w-75 mx-auto&quot; style=&quot;display: none;&quot;&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;h2 class=&quot;card-title text-center mb-4&quot;&gt;FEED\u3092\u767b\u9332&lt;\/h2&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;input type=&quot;text&quot; id=&quot;feedUrl&quot; class=&quot;form-control&quot; placeholder=&quot;RSS\u30d5\u30a3\u30fc\u30c9\u306eURL&quot;&gt;\n        &lt;span id=&quot;feedUrlError&quot; class=&quot;form-error&quot; style=&quot;display: none;&quot;&gt;RSS\u30d5\u30a3\u30fc\u30c9\u306eURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/span&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;registerFeed()&quot; class=&quot;btn btn-primary btn-block&quot;&gt;\u767b\u9332&lt;\/button&gt;\n      &lt;div class=&quot;form-group mt-4&quot;&gt;\n        &lt;label for=&quot;feedInterval&quot;&gt;\u81ea\u52d5\u6295\u7a3f\u306e\u9593\u9694\uff08\u79d2\uff09:&lt;\/label&gt;\n        &lt;input type=&quot;number&quot; id=&quot;feedInterval&quot; class=&quot;form-control&quot; placeholder=&quot;\u4f8b\uff1a60&quot; min=&quot;1&quot;&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;setFeedInterval()&quot; class=&quot;btn btn-secondary btn-block&quot;&gt;\u9593\u9694\u3092\u8a2d\u5b9a&lt;\/button&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n\n  &lt;!-- AIBOT\u6295\u7a3f\u767b\u9332\u30d5\u30a9\u30fc\u30e0 --&gt;\n  &lt;div id=&quot;aiBotForm&quot; class=&quot;card w-75 mx-auto&quot; style=&quot;display: none;&quot;&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;h2 class=&quot;card-title text-center mb-4&quot;&gt;BOT\u6295\u7a3f\u3092\u767b\u9332&lt;\/h2&gt;\n      &lt;div class=&quot;form-group&quot;&gt;\n        &lt;textarea id=&quot;aiBotContent&quot; class=&quot;form-control&quot; rows=&quot;3&quot; placeholder=&quot;BOT\u306b\u6295\u7a3f\u3055\u305b\u305f\u3044\u5185\u5bb9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044&quot;&gt;&lt;\/textarea&gt;\n      &lt;\/div&gt;\n      &lt;button onclick=&quot;registerAiBotPost()&quot; class=&quot;btn btn-primary btn-block&quot;&gt;BOT\u6295\u7a3f\u3092\u767b\u9332&lt;\/button&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n\n  &lt;!-- \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 --&gt;\n  &lt;div id=&quot;timeline&quot; class=&quot;w-75 mx-auto mt-4&quot;&gt;&lt;\/div&gt;\n\n  &lt;!-- \u901a\u77e5\u30a8\u30ea\u30a2 --&gt;\n  &lt;div id=&quot;notificationArea&quot; class=&quot;alert alert-info&quot; style=&quot;display: none;&quot;&gt;&lt;\/div&gt;\n\n&lt;\/div&gt;\n\n&lt;!-- \u30ea\u30d7\u30e9\u30a4\u30e2\u30fc\u30c0\u30eb --&gt;\n&lt;div class=&quot;modal fade&quot; id=&quot;replyModal&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;replyModalLabel&quot; aria-hidden=&quot;true&quot;&gt;\n  &lt;div class=&quot;modal-dialog&quot; role=&quot;document&quot;&gt;\n    &lt;div class=&quot;modal-content&quot;&gt;\n      &lt;!-- \u30e2\u30fc\u30c0\u30eb\u306e\u5185\u5bb9\u306f\u5f8c\u307b\u3069JavaScript\u3067\u5236\u5fa1\u3057\u307e\u3059 --&gt;\n      &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;h5 class=&quot;modal-title&quot; id=&quot;replyModalLabel&quot;&gt;\u6295\u7a3f\u306b\u8fd4\u4fe1&lt;\/h5&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-label=&quot;\u9589\u3058\u308b&quot;&gt;\n          &lt;span aria-hidden=&quot;true&quot;&gt;&amp;times;&lt;\/span&gt;\n        &lt;\/button&gt;\n      &lt;\/div&gt;\n      &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;textarea id=&quot;replyContent&quot; class=&quot;form-control&quot; rows=&quot;3&quot; placeholder=&quot;\u8fd4\u4fe1\u3092\u3053\u3053\u306b\u66f8\u3044\u3066\u304f\u3060\u3055\u3044...&quot;&gt;&lt;\/textarea&gt;\n      &lt;\/div&gt;\n      &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;btn btn-secondary&quot; data-dismiss=&quot;modal&quot;&gt;\u9589\u3058\u308b&lt;\/button&gt;\n        &lt;button type=&quot;button&quot; onclick=&quot;postReply()&quot; class=&quot;btn btn-primary&quot;&gt;\u8fd4\u4fe1&lt;\/button&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/div&gt;\n\n&lt;!-- \u30b9\u30af\u30ea\u30d7\u30c8\u306e\u8aad\u307f\u8fbc\u307f --&gt;\n&lt;script src=&quot;https:\/\/code.jquery.com\/jquery-3.5.1.slim.min.js&quot;&gt;&lt;\/script&gt;\n&lt;!-- Bootstrap\u306eJavaScript --&gt;\n&lt;script src=&quot;https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/js\/bootstrap.min.js&quot;&gt;&lt;\/script&gt;\n&lt;!-- RiTa.js\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8aad\u307f\u8fbc\u307f\uff08\u65e2\u306bhead\u5185\u3067\u8aad\u307f\u8fbc\u307f\u6e08\u307f\uff09 --&gt;\n&lt;script&gt;\n  \/\/ \u30e6\u30fc\u30b6\u30fc\u3001\u6295\u7a3f\u3001\u30d5\u30a3\u30fc\u30c9\u3001\u30c1\u30e3\u30c3\u30c8\u95a2\u9023\u306e\u30c7\u30fc\u30bf\n  let currentUser = null;\n  let users = &#x5B;];\n  let posts = &#x5B;];\n  let feeds = &#x5B;];\n  let notifications = &#x5B;];\n  let aiBotPosts = &#x5B;];\n  let feedFetchInterval = 60000; \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u306f60,000\u30df\u30ea\u79d2\uff0860\u79d2\uff09\n  let feedFetchTimer;\n  let markovBotInterval = 60000; \/\/ \u30de\u30eb\u30b3\u30d5\u9023\u9396BOT\u306e\u6295\u7a3f\u9593\u9694\n\n  \/\/ \u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u8aad\u307f\u8fbc\u307f\u30fb\u4fdd\u5b58\u95a2\u9023\u306e\u95a2\u6570\n  function saveUsersToLocalStorage() {\n    localStorage.setItem('users', JSON.stringify(users));\n  }\n\n  function savePostsToLocalStorage() {\n    localStorage.setItem('posts', JSON.stringify(posts));\n  }\n\n  function saveFeedsToLocalStorage() {\n    localStorage.setItem('feeds', JSON.stringify(feeds));\n  }\n\n  function saveAiBotPostsToLocalStorage() {\n    localStorage.setItem('aiBotPosts', JSON.stringify(aiBotPosts));\n  }\n\n  function saveCurrentUserToLocalStorage() {\n    if (currentUser) {\n      localStorage.setItem('currentUser', JSON.stringify(currentUser));\n    } else {\n      localStorage.removeItem('currentUser');\n    }\n  }\n\n  function loadUsersFromLocalStorage() {\n    const storedUsers = localStorage.getItem('users');\n    if (storedUsers) {\n      users = JSON.parse(storedUsers);\n    }\n  }\n\n  function loadPostsFromLocalStorage() {\n    const storedPosts = localStorage.getItem('posts');\n    if (storedPosts) {\n      posts = JSON.parse(storedPosts);\n    }\n  }\n\n  function loadFeedsFromLocalStorage() {\n    const storedFeeds = localStorage.getItem('feeds');\n    if (storedFeeds) {\n      feeds = JSON.parse(storedFeeds);\n    }\n  }\n\n  function loadAiBotPostsFromLocalStorage() {\n    const storedAiBotPosts = localStorage.getItem('aiBotPosts');\n    if (storedAiBotPosts) {\n      aiBotPosts = JSON.parse(storedAiBotPosts);\n    }\n  }\n\n  function loadCurrentUserFromLocalStorage() {\n    const storedCurrentUser = localStorage.getItem('currentUser');\n    if (storedCurrentUser) {\n      currentUser = JSON.parse(storedCurrentUser);\n    }\n  }\n\n  \/\/ \u30d5\u30a9\u30fc\u30e0\u306e\u8868\u793a\u30fb\u975e\u8868\u793a\n  function hideAll() {\n    document.getElementById('loginForm').style.display = 'none';\n    document.getElementById('registerForm').style.display = 'none';\n    document.getElementById('profile').style.display = 'none';\n    document.getElementById('postForm').style.display = 'none';\n    document.getElementById('feedForm').style.display = 'none';\n    document.getElementById('aiBotForm').style.display = 'none';\n  }\n\n  function showLoginForm() {\n    hideAll();\n    document.getElementById('loginForm').style.display = 'block';\n    document.getElementById('navProfile').style.display = 'none';\n    document.getElementById('navLogout').style.display = 'none';\n    document.getElementById('navFeed').style.display = 'none';\n  }\n\n  function showRegisterForm() {\n    hideAll();\n    document.getElementById('registerForm').style.display = 'block';\n  }\n\n  function showProfile() {\n    hideAll();\n    document.getElementById('profile').style.display = 'block';\n    document.getElementById('profileName').textContent = currentUser.name;\n    document.getElementById('profileUsername').textContent = currentUser.username;\n    document.getElementById('postForm').style.display = 'block';\n    document.getElementById('feedForm').style.display = 'block';\n    document.getElementById('aiBotForm').style.display = 'block';\n    loadProfileImage(); \/\/ \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u30ed\u30fc\u30c9\n    displayTimeline(); \/\/ \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u8868\u793a\n    document.getElementById('navProfile').style.display = 'block';\n    document.getElementById('navLogout').style.display = 'block';\n    document.getElementById('navFeed').style.display = 'block'; \/\/ RSS\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u3092\u8868\u793a\n  }\n\n  function showFeedForm() {\n    hideAll();\n    document.getElementById('feedForm').style.display = 'block';\n  }\n\n  \/\/ \u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u95a2\u9023\u306e\u95a2\u6570\n  function validateLoginForm() {\n    let valid = true;\n    const username = document.getElementById('loginUsername').value;\n    const password = document.getElementById('loginPassword').value;\n\n    if (!username) {\n      document.getElementById('loginUsernameError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('loginUsernameError').style.display = 'none';\n    }\n\n    if (!password) {\n      document.getElementById('loginPasswordError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('loginPasswordError').style.display = 'none';\n    }\n\n    return valid;\n  }\n\n  function login() {\n    if (!validateLoginForm()) {\n      return;\n    }\n\n    const username = document.getElementById('loginUsername').value;\n    const password = document.getElementById('loginPassword').value;\n    const user = users.find(u =&gt; u.username === username &amp;&amp; u.password === password);\n    if (user) {\n      currentUser = user;\n      saveCurrentUserToLocalStorage(); \/\/ currentUser\u3092\u4fdd\u5b58\n      showProfile();\n    } else {\n      alert('\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059\u3002');\n    }\n  }\n\n  function logout() {\n    currentUser = null;\n    saveCurrentUserToLocalStorage(); \/\/ currentUser\u3092\u524a\u9664\n    hideAll();\n    showLoginForm();\n  }\n\n  function validateRegisterForm() {\n    let valid = true;\n    const name = document.getElementById('registerName').value;\n    const username = document.getElementById('registerUsername').value;\n    const password = document.getElementById('registerPassword').value;\n    const confirmPassword = document.getElementById('registerConfirmPassword').value;\n\n    if (!name) {\n      document.getElementById('registerNameError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('registerNameError').style.display = 'none';\n    }\n\n    if (!username) {\n      document.getElementById('registerUsernameError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('registerUsernameError').style.display = 'none';\n    }\n\n    \/\/ \u30e6\u30fc\u30b6\u30fc\u540d\u306e\u91cd\u8907\u30c1\u30a7\u30c3\u30af\n    if (users.find(u =&gt; u.username === username)) {\n      document.getElementById('registerUsernameError').textContent = '\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u306f\u65e2\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059';\n      document.getElementById('registerUsernameError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('registerUsernameError').style.display = 'none';\n    }\n\n    if (!password) {\n      document.getElementById('registerPasswordError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('registerPasswordError').style.display = 'none';\n    }\n\n    if (password !== confirmPassword) {\n      document.getElementById('registerConfirmPasswordError').style.display = 'block';\n      valid = false;\n    } else {\n      document.getElementById('registerConfirmPasswordError').style.display = 'none';\n    }\n\n    return valid;\n  }\n\n  function register() {\n    if (!validateRegisterForm()) {\n      return;\n    }\n\n    const name = document.getElementById('registerName').value;\n    const username = document.getElementById('registerUsername').value;\n    const password = document.getElementById('registerPassword').value;\n\n    users.push({ name, username, password, profileImage: null });\n    saveUsersToLocalStorage(); \/\/ \u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u4fdd\u5b58\n    alert('\u767b\u9332\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\uff01\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002');\n    showLoginForm();\n  }\n\n  \/\/ \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u306e\u51e6\u7406\n  function loadProfileImage() {\n    const profileImg = document.getElementById('profileImg');\n    \/\/ \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u305d\u306e\u753b\u50cf\u3092\u8868\u793a\n    if (currentUser.profileImage) {\n      profileImg.src = currentUser.profileImage;\n    } else {\n      \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u8868\u793a\n      profileImg.src = 'default_profile_img.jpg';\n    }\n  }\n\n  function uploadProfileImage() {\n    const input = document.getElementById('profileImageInput');\n    const file = input.files&#x5B;0];\n    if (file) {\n      \/\/ FileReader\u3092\u4f7f\u7528\u3057\u3066\u753b\u50cf\u3092\u8aad\u307f\u8fbc\u3080\n      const reader = new FileReader();\n      reader.onload = function(e) {\n        \/\/ \u8aad\u307f\u8fbc\u3093\u3060\u753b\u50cf\u3092\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3068\u3057\u3066\u8a2d\u5b9a\n        currentUser.profileImage = e.target.result;\n        \/\/ \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u66f4\u65b0\u3057\u3066\u8868\u793a\n        loadProfileImage();\n        saveUsersToLocalStorage(); \/\/ \u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u4fdd\u5b58\n        saveCurrentUserToLocalStorage(); \/\/ currentUser\u3092\u66f4\u65b0\n      }\n      reader.readAsDataURL(file);\n    }\n  }\n\n  \/\/ AIBOT\u6295\u7a3f\u3092\u767b\u9332\n  function registerAiBotPost() {\n    const content = document.getElementById('aiBotContent').value;\n    if (content.trim() !== '') {\n      aiBotPosts.push(content);\n      saveAiBotPostsToLocalStorage();\n      alert(&quot;BOT\u306e\u6295\u7a3f\u304c\u767b\u9332\u3055\u308c\u307e\u3057\u305f\uff01&quot;);\n      document.getElementById('aiBotContent').value = ''; \/\/ \u5165\u529b\u6b04\u3092\u7a7a\u306b\u3059\u308b\n    }\n  }\n\n  \/\/ AIBOT\u304c\u5b9a\u671f\u7684\u306b\u6295\u7a3f\n  function postAiBotContent() {\n    if (aiBotPosts.length &gt; 0) {\n      const content = aiBotPosts&#x5B;Math.floor(Math.random() * aiBotPosts.length)];\n      const aiUser = {\n        name: 'BOT',\n        username: 'bot',\n        profileImage: 'default_ai_profile_img.jpg'\n      };\n      const post = {\n        id: Date.now(),\n        content: content,\n        author: aiUser.name,\n        authorUsername: aiUser.username,\n        authorProfileImage: aiUser.profileImage,\n        likes: 0,\n        comments: &#x5B;]\n      };\n      posts.unshift(post);\n      savePostsToLocalStorage();\n      displayTimeline();\n    }\n  }\n\n  setInterval(postAiBotContent, 500000); \/\/ 50,000\u30df\u30ea\u79d2 = 50\u79d2\n\n  \/\/ \u30de\u30eb\u30b3\u30d5\u9023\u9396\u3092\u4f7f\u7528\u3057\u305f\u81ea\u52d5\u6295\u7a3fBOT\n  function generateMarkovChainText(order = 2) {\n    const allTexts = posts.map(post =&gt; post.content).join(' ');\n    if (allTexts.length &lt; 100) return null; \/\/ \u30c6\u30ad\u30b9\u30c8\u304c\u77ed\u3059\u304e\u308b\u5834\u5408\u306f\u751f\u6210\u3057\u306a\u3044\n\n    const markov = new RiTa.Markov(order);\n    markov.addText(allTexts);\n    const sentences = markov.generate(1);\n    return sentences&#x5B;0];\n  }\n\n  function postMarkovBotContent() {\n    const generatedText = generateMarkovChainText(3); \/\/ \u968e\u6570\u30923\u306b\u8a2d\u5b9a\n    if (generatedText) {\n      const botUser = {\n        name: 'MarkovBot',\n        username: 'markovbot',\n        profileImage: 'markov_bot_profile_img.jpg'\n      };\n      const post = {\n        id: Date.now(),\n        content: generatedText,\n        author: botUser.name,\n        authorUsername: botUser.username,\n        authorProfileImage: botUser.profileImage,\n        likes: 0,\n        comments: &#x5B;]\n      };\n      posts.unshift(post);\n      savePostsToLocalStorage();\n      displayTimeline();\n    }\n  }\n\n  setInterval(postMarkovBotContent, markovBotInterval); \/\/ \u30de\u30eb\u30b3\u30d5\u9023\u9396BOT\u306e\u6295\u7a3f\u9593\u9694\n\n  \/\/ \u6295\u7a3f\u95a2\u9023\u306e\u95a2\u6570\n  function createPost() {\n    const postContent = document.getElementById('postContent').value;\n    if (postContent.trim() !== '') {\n      const post = {\n        id: Date.now(),\n        content: postContent,\n        author: currentUser.name,\n        authorUsername: currentUser.username,\n        authorProfileImage: currentUser.profileImage,\n        likes: 0,\n        comments: &#x5B;],\n        shares: 0\n      };\n      posts.unshift(post); \/\/ \u6700\u65b0\u306e\u6295\u7a3f\u3092\u5148\u982d\u306b\u8ffd\u52a0\n      savePostsToLocalStorage(); \/\/ \u6295\u7a3f\u3092\u4fdd\u5b58\n      displayTimeline();\n      document.getElementById('postContent').value = ''; \/\/ \u6295\u7a3f\u5f8c\u3001\u5165\u529b\u6b04\u3092\u7a7a\u306b\u3059\u308b\n    }\n  }\n\n  function displayTimeline() {\n    const timeline = document.getElementById('timeline');\n    timeline.innerHTML = '';\n    posts.forEach(post =&gt; {\n      const postElement = document.createElement('div');\n      postElement.classList.add('card', 'mb-3');\n      postElement.innerHTML = `\n        &lt;div class=&quot;card-body&quot;&gt;\n          &lt;div class=&quot;d-flex align-items-center mb-3&quot;&gt;\n            &lt;img src=&quot;${post.authorProfileImage || 'default_profile_img.jpg'}&quot; class=&quot;profile-img mr-2&quot; alt=&quot;\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf&quot;&gt;\n            &lt;div&gt;\n              &lt;strong&gt;${post.author}&lt;\/strong&gt; (@${post.authorUsername})\n              ${post.shared ? '&lt;span class=&quot;badge badge-info ml-2&quot;&gt;\u30b7\u30a7\u30a2&lt;\/span&gt;' : ''}\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n          &lt;p class=&quot;card-text&quot;&gt;${post.content}&lt;\/p&gt;\n          ${post.link ? `&lt;a href=&quot;${post.link}&quot; target=&quot;_blank&quot; class=&quot;btn btn-link&quot;&gt;\u7d9a\u304d\u3092\u8aad\u3080&lt;\/a&gt;` : ''}\n          &lt;div class=&quot;d-flex justify-content-between&quot;&gt;\n            &lt;div&gt;\n              &lt;button onclick=&quot;likePost(${post.id})&quot; class=&quot;btn btn-primary btn-sm&quot;&gt;&lt;i class=&quot;fas fa-thumbs-up&quot;&gt;&lt;\/i&gt; \u3044\u3044\u306d (${post.likes})&lt;\/button&gt;\n              &lt;button onclick=&quot;toggleComments(${post.id})&quot; class=&quot;btn btn-secondary btn-sm&quot;&gt;&lt;i class=&quot;fas fa-comments&quot;&gt;&lt;\/i&gt; \u30b3\u30e1\u30f3\u30c8 (${post.comments.length})&lt;\/button&gt;\n              &lt;button onclick=&quot;replyToPost(${post.id})&quot; class=&quot;btn btn-info btn-sm&quot;&gt;&lt;i class=&quot;fas fa-reply&quot;&gt;&lt;\/i&gt; \u8fd4\u4fe1&lt;\/button&gt;\n              &lt;button onclick=&quot;sharePost(${post.id})&quot; class=&quot;btn btn-share btn-sm&quot;&gt;&lt;i class=&quot;fas fa-share&quot;&gt;&lt;\/i&gt; \u30b7\u30a7\u30a2 (${post.shares || 0})&lt;\/button&gt;\n              &lt;button onclick=&quot;shareToTwitter(${post.id})&quot; class=&quot;btn btn-share-twitter btn-sm&quot;&gt;&lt;i class=&quot;fab fa-twitter&quot;&gt;&lt;\/i&gt; X\u3067\u30b7\u30a7\u30a2&lt;\/button&gt;\n            &lt;\/div&gt;\n            &lt;small class=&quot;text-muted&quot;&gt;${new Date(post.id).toLocaleString()}&lt;\/small&gt;\n          &lt;\/div&gt;\n          &lt;div id=&quot;comments-${post.id}&quot; class=&quot;comment-section mt-3&quot; style=&quot;display: none;&quot;&gt;\n            ${post.comments.map(comment =&gt; `\n              &lt;div class=&quot;card mb-2&quot;&gt;\n                &lt;div class=&quot;card-body&quot;&gt;\n                  &lt;p&gt;&lt;strong&gt;${comment.author}&lt;\/strong&gt;: ${comment.content}&lt;\/p&gt;\n                &lt;\/div&gt;\n              &lt;\/div&gt;\n            `).join('')}\n          &lt;\/div&gt;\n        &lt;\/div&gt;\n      `;\n      timeline.appendChild(postElement);\n    });\n  }\n\n  \/\/ \u3044\u3044\u306d\u6a5f\u80fd\n  function likePost(postId) {\n    const post = posts.find(p =&gt; p.id === postId);\n    post.likes++;\n    savePostsToLocalStorage();\n    displayTimeline();\n  }\n\n  \/\/ \u30b3\u30e1\u30f3\u30c8\u8868\u793a\u5207\u66ff\n  function toggleComments(postId) {\n    const commentSection = document.getElementById(`comments-${postId}`);\n    commentSection.style.display = commentSection.style.display === 'none' ? 'block' : 'none';\n  }\n\n  \/\/ \u30ea\u30d7\u30e9\u30a4\u6a5f\u80fd\n  function replyToPost(postId) {\n    const modal = document.getElementById('replyModal');\n    modal.dataset.postId = postId;\n    $('#replyModal').modal('show');\n  }\n\n  function postReply() {\n    const postId = parseInt(document.getElementById('replyModal').dataset.postId);\n    const post = posts.find(p =&gt; p.id === postId);\n    const replyContent = document.getElementById('replyContent').value;\n    if (replyContent.trim() !== '') {\n      post.comments.push({ author: currentUser.name, content: replyContent });\n      $('#replyModal').modal('hide');\n      savePostsToLocalStorage();\n      displayTimeline();\n    } else {\n      alert('\u8fd4\u4fe1\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002');\n    }\n  }\n\n  \/\/ \u6295\u7a3f\u306e\u30b7\u30a7\u30a2\u6a5f\u80fd\n  function sharePost(postId) {\n    const post = posts.find(p =&gt; p.id === postId);\n    if (post) {\n      const sharedPost = {\n        ...post,\n        id: Date.now(),\n        author: currentUser.name,\n        authorUsername: currentUser.username,\n        authorProfileImage: currentUser.profileImage,\n        shared: true,\n        likes: 0,\n        comments: &#x5B;],\n        shares: post.shares ? post.shares + 1 : 1\n      };\n      posts.unshift(sharedPost);\n      savePostsToLocalStorage();\n      displayTimeline();\n      alert('\u6295\u7a3f\u3092\u30b7\u30a7\u30a2\u3057\u307e\u3057\u305f\u3002');\n    }\n  }\n\n  \/\/ X\uff08\u65e7Twitter\uff09\u306b\u30b7\u30a7\u30a2\u3059\u308b\u6a5f\u80fd\n  function shareToTwitter(postId) {\n    const post = posts.find(p =&gt; p.id === postId);\n    if (post) {\n      let shareText = post.content;\n      if (post.link) {\n        shareText += ' ' + post.link;\n      }\n      const shareUrl = `https:\/\/twitter.com\/intent\/tweet?text=${encodeURIComponent(shareText)}&amp;url=${encodeURIComponent(window.location.href)}`;\n      window.open(shareUrl, '_blank');\n    }\n  }\n\n  \/\/ FEED\u306e\u767b\u9332\u3068\u81ea\u52d5\u6295\u7a3f\u6a5f\u80fd\n  function registerFeed() {\n    const feedUrl = document.getElementById('feedUrl').value;\n    if (feedUrl.trim() !== '') {\n      feeds.push(feedUrl);\n      saveFeedsToLocalStorage(); \/\/ \u30d5\u30a3\u30fc\u30c9\u60c5\u5831\u3092\u4fdd\u5b58\n      alert('RSS\u30d5\u30a3\u30fc\u30c9\u304c\u767b\u9332\u3055\u308c\u307e\u3057\u305f\uff01');\n      document.getElementById('feedUrl').value = ''; \/\/ \u767b\u9332\u5f8c\u3001\u5165\u529b\u6b04\u3092\u7a7a\u306b\u3059\u308b\n    } else {\n      document.getElementById('feedUrlError').style.display = 'block';\n    }\n  }\n\n  function fetchFeeds() {\n    feeds.forEach(feedUrl =&gt; {\n      fetch(`https:\/\/api.rss2json.com\/v1\/api.json?rss_url=${encodeURIComponent(feedUrl)}`)\n        .then(response =&gt; response.json())\n        .then(data =&gt; {\n          data.items.forEach(item =&gt; {\n            \/\/ \u540c\u3058\u6295\u7a3f\u304c\u65e2\u306b\u5b58\u5728\u3059\u308b\u304b\u30c1\u30a7\u30c3\u30af\n            if (!posts.some(p =&gt; p.link === item.link)) {\n              const post = {\n                id: Date.now() + Math.random(), \/\/ \u91cd\u8907\u3057\u306a\u3044ID\u3092\u751f\u6210\n                content: item.title,\n                link: item.link, \/\/ \u30ea\u30f3\u30af\u3092\u8ffd\u52a0\n                author: 'FEEDBOT',\n                authorUsername: 'feedbot',\n                authorProfileImage: 'feedbot_profile_img.jpg', \/\/ FEEDBOT\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u8a2d\u5b9a\n                likes: 0,\n                comments: &#x5B;]\n              };\n              posts.unshift(post); \/\/ \u6700\u65b0\u306e\u6295\u7a3f\u3092\u5148\u982d\u306b\u8ffd\u52a0\n              savePostsToLocalStorage(); \/\/ \u6295\u7a3f\u3092\u4fdd\u5b58\n            }\n          });\n          displayTimeline(); \/\/ \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u8868\u793a\n        })\n        .catch(error =&gt; console.error('RSS\u30d5\u30a3\u30fc\u30c9\u306e\u53d6\u5f97\u30a8\u30e9\u30fc:', error));\n    });\n  }\n\n  function setFeedInterval() {\n    const intervalInput = document.getElementById('feedInterval').value;\n    if (intervalInput &amp;&amp; parseInt(intervalInput) &gt; 0) {\n      feedFetchInterval = parseInt(intervalInput) * 1000; \/\/ \u30df\u30ea\u79d2\u306b\u5909\u63db\n      clearInterval(feedFetchTimer);\n      feedFetchTimer = setInterval(fetchFeeds, feedFetchInterval);\n      alert(`\u81ea\u52d5\u6295\u7a3f\u306e\u9593\u9694\u304c${intervalInput}\u79d2\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002`);\n    } else {\n      alert('\u6709\u52b9\u306a\u9593\u9694\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\uff081\u4ee5\u4e0a\u306e\u6570\u5b57\uff09\u3002');\n    }\n  }\n\n  \/\/ \u30da\u30fc\u30b8\u30ed\u30fc\u30c9\u6642\u306b\u30d5\u30a3\u30fc\u30c9\u306e\u81ea\u52d5\u53d6\u5f97\u3092\u958b\u59cb\n  function startFeedFetch() {\n    feedFetchTimer = setInterval(fetchFeeds, feedFetchInterval);\n  }\n\n  \/\/ \u521d\u671f\u5316\n  function init() {\n    loadUsersFromLocalStorage();\n    loadPostsFromLocalStorage();\n    loadFeedsFromLocalStorage();\n    loadAiBotPostsFromLocalStorage();\n    loadCurrentUserFromLocalStorage();\n\n    if (currentUser) {\n      showProfile();\n    } else {\n      hideAll();\n      document.getElementById('loginForm').style.display = 'block';\n    }\n\n    displayTimeline();\n    startFeedFetch(); \/\/ \u30d5\u30a3\u30fc\u30c9\u306e\u81ea\u52d5\u53d6\u5f97\u3092\u958b\u59cb\n  }\n\n  \/\/ \u30da\u30fc\u30b8\u30ed\u30fc\u30c9\u6642\u306b\u521d\u671f\u5316\n  window.onload = init;\n\n&lt;\/script&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[80],"tags":[3],"class_list":["post-25616","post","type-post","status-publish","format-standard","hentry","category-html","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25616"}],"version-history":[{"count":1,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25616\/revisions"}],"predecessor-version":[{"id":25617,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25616\/revisions\/25617"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25616"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}