5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

タグ: PHP

  • WordPressのサイトがアクセスできなくなったので対応した話し

    お客さんからサイトがアクセスできなくなったと連絡がありました。こちらはWordPressで作ったサイトです。この前と同じようなエラーです。

    phpMyAdmin でMySQLデータベースにアクセスしてプラグインを無効にしてみます。無効の方法はエラーのページにあるトラブルシューティングに書いてある通りです。

    プラグインを無効にしてあげると正常にアクセスができるようになりました。今度もBackWPupプラグインが悪さしていると思って、一旦BackWPupプラグインを削除して、その他のプラグインを有効にしてみます。

    するとまだエラーがでてアクセスできません。

    ここは面倒でも一つずつプラグインを有効にしていって、どのプラグインがエラーになっているかを確かめてみます。

    エラーを起こしているのは、WP-SCSSプラグインでした。

    WP-SCSSプラグインを有効にするとエラーになります。そこでWP-SCSSプラグインを削除してしまいます。もし、SCSSからSCCの変換が必要であれば、自分でCSSに変換してCSSファイルに追加しておきます。

    以上で無事にWordPressのサイトにアクセスができるようになりました。同じエラーだからと言っても同じ原因だと決めつけてはいけません。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • 外部リンクをPz-LinkCardプラグインとオリジナルパターンでWordPressのリンクカードを挿入した話し

    WordPressの記事中に外部リンクを貼り付けるには、今までは引用ブロックを使っていました。引用ブロックを使う場合は、貼り付けるページのURLとタイトルを拾って貼り付けていました。タイトルを貼り付けるの意外と面倒で、サイトのソースのtitleタグを見つけて拾ってきていました。

    意外と面倒くさい外部リンクの貼り付けを何とかしたいと思って考えてみました。

    最初は、ブロックに埋め込みリンクを探してみましたが、Twenty Twenty-Twoのテーマには残念ながら用意されていませんでした。仕方ないので、プラグインを探します。見つかったのは、Pz-LinkCardというプラグインです。以下のサイトを参考にしました。あまりプラグインを増やしたくないので、これまた仕方ありません。

    こちらはPz-LinkCardプラグインでリンクカードを生成しています。

    Pz-LinkCardプラグインをインストールしてみましたが、こちらの要求する機能はあります。貼り付けたカードはリンクカードとか、ブログカードと言うのですね。これは知りませんでした。oEmbedをサポートしているサイトなら、リンクカードを生成してくれます。

    Pz-LinkCardプラグインで生成されたリンクカードのデザインは、行間とかフォントスタイルなどが気に入らないところがありますので、スタイルシートを調整してしまいます。追加したスタイルシートは以下の通りです。Pz-LinkCardプラグインの設定も多少調整しています。

    .lkc-title-text,
    .lkc-domain,
    .lkc-title-text {
      font-family: var(--wp--preset--font-family--system-font) !important;
    }
    .lkc-content>div {
      margin-bottom: 10px;
    }

    あとは、リンクカードを使いしていくだけと思いましたが、Pz-LinkCardプラグインのショートコードをいちいち入力していくのも、これまた面倒です。最初は再利用可能ブロックで実現しようとしましたが、こちらは登録は簡単なのですが、いちいち通常ブロックに変換するのが面倒なのでやめました。そこで、WordpressのパターンにPz-LinkCardプラグインのショートコードを追加します。

    こんなコードをテーマのfunction.phpに追加します

    // Pz-LinkCard リンクカードショートカットのためのパターンを登録
    add_action('admin_init', function () {
      //1 パラメータの設定
      $pattern = [
        "title" => "Pz-LinkCard リンクカードショートカット",
        "categories" => ["original", "featured"],
        "descripiton" => "",
        "content" => '<!-- wp:paragraph --><p>[blogcard url=""]</p><!-- /wp:paragraph -->',
      ];
    
      //2 ブロックパターンの登録
      register_block_pattern($pattern["title"], $pattern);
    
      //3 カテゴリーの登録
      register_block_pattern_category('original', ['label' => 'オリジナル']);
    });

    参考にしたのはこのサイトです。こちらのソースを丸ごとコピーさせていただきました。

    こちらはサイトがWordpressなのでリンクを貼り付けるだけでリンクカードを自動的に生成してくれます。

    以上のサイトの通りに書くとパターンのカテゴリーがオリジナルだけになります。それだけではカテゴリーからオリジナルを選択してなんて作業が一つ入ってこれまたまた面倒なので、パターンの最初に表示されてくる”注目”カテゴリーにPz-LinkCard プラグインのショートカットが表示されるように追加しています。こちらでこのようにパターンにPz-LinkCardプラグインのショートカットが表示されます。

    このパターンを選択すると、以下のショートカットが記事に挿入されます。

    [blogcard url=""]

    こちらのショートカットのダブルクォーテーションの中に外部リンクで表示したいサイトのURLを貼り付ければリンクカードが表示されるはずです。

    もし、リンクカードが表示されない場合は、サイトがoEmbedをサポートされていないので諦めて引用ブロックやリンクで誤魔化しておきましょう。

    Pz-LinkCardプラグインを使わなくてもWordpressのほうでリンクを貼り付けてあげれば、自動的にリンクカードを生成してくれればいいのです。現にリンクを貼り付けてあげれば、一応はタイトルやサムネール画像が表示してくれるので、一応はサイトの情報は取得してくれているのではないかと思います。しかも外部リンクがWordpressのサイトであれば、今も自動的にリンクカードにリンクを変換してくれています。すべての外部リンクがリンクカードにしてくれるように望みます。

    以上、面倒なことを重なってPz-LinkCardプラグインを使ってリンクカードを生成する話しでした。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

    追記(2022年10月19日)

    現在、主立ったページのあるリンクを引用ブロックからPz-LinkCardプラグインのリンクカードに手作業で変更しています。

    リンクで気になったのは、あるページでリンク先がアダルトサイトへのリンクに置き換わっている箇所があったことです。おそらく、リンク先が乗っ取られたのでしょうか? リンクを外しておきましたが、外部のリンクを埋め込む場合には注意が必要です。

    追記(2022年10月31日)

    最近Wordpressがアップデートしたようで、パターンの選択が味気ないUIに変わってしまった。プレビューが最初に表示されなくなったのは寂しい。

    今まではパターンを選択すれば、すぐにPz-LinkCardプラグインのショートカットが選択できたのに、一度「注目」か「オリジナル」のメニューを選択しなければいけなくなった。ワンクッション動作が増えるのは、なにげに面倒である。

    WordPressは、たまにこのようによく使う機能へのUIが変わってしまうのは辛い。

  • baserCMSでスマートURLが使えなくなった話し。意味もわからずコピペしてはダメなのよね、という話し

    お客さんからの連絡があって、サイトのリンクがすべてトップページになってしまうということだった。

    サイトを見てみると、すべてのリンクが/index.phpに遷移している。このサイトは、数年前にbaserCMSで作成している(メンテナンス契約はしていない)。baserCMSのスマートURLが全滅している。おそらく、rewriteの設定がおかしくなっているということではないかと予想する。

    baserCMSのスマートURLの.htaccessにあるrewiteの設定の

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]

    の前にあるRewriteルールを一旦削除してみる。すると、正常にスマートURLが動いてリンクが有効になる。次に少しずつRewriteルールを削除しながら試してみる。すると以下の行だけを削除すると正常に動作することがわかった。

    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://[ドメイン]/$1 [R=301,L]

    この設定はさくらインターネットでhttpでアクセスされたときにhttpsに遷移するようにおまじないで入れたものである。どこから拾ってきてコピペしたような覚えがある。

    このサイトでもWordPressでも同じ現象が発生すると報告がある。何でもさくらインターネットのサーバーがアップデートされたおかげで、この設定が悪さするという話しである。

    WordPressで構築されているサイトが突然トップページしか表示されなくなってしまったという不具合の解決策は「.htaccess」の見直しから

    ドモドモコーポレーション

    やはり、意味もわからずコピペするのはダメなのである。

    著:大竹 龍史, 著:山本 道子
    ¥2,950 (2025/04/01 13:05時点 | Amazon調べ)
    著:Piro, 編集:日経Linux
    ¥2,178 (2025/03/28 21:08時点 | Amazon調べ)
    著:三宅 英明, 著:大角 祐介
    ¥2,970 (2025/04/01 13:05時点 | Amazon調べ)

    それにしても、さくらインターネットのサーバーがアップデートしたせいで(アップデートしておかげでサーバーが快適になったことのほうが大きいけど)、作ったこちらが悪いようで、調査して改修してもお金にならなかった。メンテナンス契約していないと、小さなシステム下請けではよくある話しである。最初からお金が出ないなら断ってしまうことのありだけど、仏心で話しを聞いて対応してしまうのは悪いことなのかな。

    ひとり言

    baserCMSは、自身のアップデートを管理画面からできるようにしてくれないかな。サイトのアップデートがめんどくさい。これだからWordPressをおすすめしてしまう。

  • WordPressのテーマTwenty Twenty-TwoにGoogle AdSenseの自動広告を設置してみた話し

    Google AdSenseから「自動広告を使ってみなよ。」という通知があったので、設置してみた。このブログはWordpressのテーマTwenty Twenty-Twoを使っている。

    以前のテーマだったら、外観の設定でheader.php辺りにGoogle AdSenseのスクリプトを挿入してしまえばよかったけれど、Twenty Twenty-TwoではテーマのPHPを編集するところがない。テーマのファイルを眺めてみても、どこにHTMのheadタグを編集していいかわからない。

    いろいろWordpressのテーマを調べてみると、最近のテーマはアクションに関数をフックして機能を追加するみたいである。直接テーマファイルを編集することはしないようである。

    そこでTwenty Twenty-Twoのfuncrion.phpの最後にadd_action()でwp_headアクションフックを使って、<head>タグ内にGoogle AdSenseの自動広告のコードを追加するようにする。

    add_action('wp_head','add_google_adsense');
    function add_google_adsense() {
      if( !is_user_logged_in() ) { 
      ?>
    // ここにGoogle AdSenseの自動広告のコードを貼り付けます。
      <?php 
      }
    
    
    

    申し訳ないが、こちらのコードの元記事を保存するのを忘れたので、参照元がわからない。見つかり次第、追記する。

    WordPressのフックで参考にしたのは、こちらのサイトである(Chromeの履歴を探ったら見つかった)。

    あとは正しくコードが出力されているか、HTMLのソースを確認しておく。無事に出力されていた。

    最初はモバイル全面広告をOffにして1週間掲載してみたが、ほぼ収益は変わらなかった。モバイル全面広告をOnしてしまうとアクセスする方からすると広告が大変ウザくなるのはイヤだけど、テスト的にこちらをOnにした。しかし、こちらも1週間掲載してみても収益は変わらないので、再びOffにしておいた。結局、分母のサイトのアクセス数が少ないので、アクセス数をこれ以上増やさない限りは収益は変わらないと言うことである。アフリエイト広告でガッポリというのは妄想なのである。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

    追記(2022年8月21日)

    上記のコードのis_user_logged_in()でログインしているかどうかを判定してあげないと、自分のサイトを参照するときにGoogle AdSenseの自動広告が表示されてしまうので、「表示できる広告の数が制限されています。」のエラーが出るので、必ず判定してあげた方がいいぞ。

    本当にGoogle AdSenseの自動広告が表示されるかどうかは、ログインしないでサイトにアクセスすればいいのだけど、「表示できる広告の数が制限されています。」のエラーを出さないためにも、頻繁にログインしないでサイトにアクセスしない方がいいぞ。

    自分がGoogle AdSenseの自動広告を表示したかどうかなんて、勝手にGoogle AdSenseで判定してくれればいいのに思うけどさ。あまりGoogle様の悪口を書くとバンされるから、この辺で・・・。

  • さくらインターネットのレンタルサーバーでInternal Server Errorが出る件は、All in One SEO Packを削除したら直ったかも、でもまだ直っていないかも、どちらなの、という話し

    ずっと本ブログサイトで出ていたInternal Server Errorが出る件は、ようやく落ち着いてきました。原因は、All in One SEO Packプラグインのようでした。

    “ようでした”というのは、All in One SEO Packを削除してから、Internal Server Errorが出なくなくなったというだけで、本当にAll in One SEO Packが原因がどうかはわかりません。単純にInternal Server Errorが出るからって、All in One SEO Packを削除すればいいとは限りません。

    どうしてAll in One SEO Packを何でインストールしたかというと、Bing Webmaster Toolsでたくさん

    説明がページのヘッド セクションにありません。

    と怒られたせいで、それで<meta name=’description’ を付けようということになって、面倒なのでAll in One SEO Packプラグインでやってしまえ、ということでインストールしました。後は、キレイにTwitterに投稿した記事を共有できるということです。

    All in One SEO Packプラグインを削除することにすると、<meta name=’description’ を違う方法で付けてあげなければいけません。Twitterの共有については、共有できていればいいだけですので放っておきます。descriptionのほうは、以下のサイトを参考に、Wordpressのfunction.phpでプログラムで生成してあげるようにします。

    そのまま利用するのではなく、適当に本ブログで必要なcontent=””を生成しています。

    しかしながら、All in One SEO Packは重いプラグインと言いながら、これでInternal Server Errorを出すようなさくらインターネットのレンタルサーバーはいかがながものでしょうか?

    さくらインターネットのレンタルサーバは、WordpressのAll in One SEO PackプラグインでSEOをバリバリやるのであれば、使わないほうがいいような気がします。自分のような、適当なブログサイトなら問題ないかもしれません。

    でも、そんなことを言うのなら、もっと金を払ってスペックの高いサーバーを契約しろ、というところでしょうか。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

    追記(2020年12月22日)

    相変わらず、まだInternal Server Errorはたまに出ています。All in One SEO Packプラグインが原因ではないのかな? たまにエラーが出るくらいなので、サイトの運用には問題ないレベルだから、放っておいてもいいレベルなのかな?

    その他、WordpressのテーマをTwentyTwenty-oneにしたりキャッシュのプラグインを見直したりで、アクセスがだいぶ速くなったし、よくわからない。さくらインターネットのレンタルサーバーで共有している他のユーザーのサイトに、アクセスが集中しているのだったらしょうがないな。

    昔のことを思い出したけど、Wordpressはさくらインターネットのレンタルサーバーの機能を使ってインストールした覚えがある。これでWordpressのインストールや設定がしくじっているとかだと辛いかもな。

    さくらインターネットから別のレンタルサーバーに移行するのも面倒だし、どうしてものやら・・・。

    続きはこちらから

  • PHPカンファレンス 2020 に参加を申し込しこんだら、その日は手術で入院の予定だった話し。 #phpcon2020

    PHPカンファレンス2020に参加を申し込しこんだら、そういえばその日は手術で入院の予定だったことを忘れていた。

    PHPカンファレンス2020はオンラインだから、入院中でも参加できるから、病院のネットワーク状態と、手術した後の痛みが大丈夫だったらで参加しようかな。

    と、今は入院前で非常に楽観的なのである。これでも、一応は腹を切る手術をするのだけど。でも、当日それどころではなかったりしてね。

    PHP Conference Japan 2020 Re:born

    それにしても、家族のみんなは、私が入院している間に、いつ焼肉に行こうか盛り上がっています。新型コロナウイルスの影響で、見舞いもできないので仕方ないか・・・・。

  • baserCMSのお問い合わせフォームで送信ボタンが無効になってしまう話し

    baserCMSのお問い合わせフォームで送信ボタンが無効になってしまう話し

    baserCMSで作ったお客さんのサイトがようやくサービスを開始した。。しかし、ここでクレームが発生する。このサイトの開発はメンテナンスフィーは出ないので、これが最後の対応となる

    クレームは、お問合せフォームのボタンが押せないとのことだった。

    どうも、調べてみると、PCやAndroidでは、その障害が発生しない。iPhoneのiOSのSafariで送信ボタンが押せない。

    手元にあったiPadでこの障害が発生したので、Macにつなげてデバッグしてみると、Submitのボタンにdisabled属性が付いて無効状態になっていた。お問い合わせのページにアクセスしただけの状態で(ブラウザで戻ったとか、直接お問い合わせページにアクセスしたとか、おかしなアクセスをしていない)、どうして無効状態になってしまっているのかは、baserCMSのソースを追っていないので原因不明である。

    baserCMSのフォーラムで同じような現状が報告されいないかチェックすると、以下の記事が見つかった。

    【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう|フォーラム|baserCMSユーザーズ

    フォーラム|baserCMSユーザーズ

    根本的な解決は書かれてしないし時間もないので、この記事のヒントで書かれているように

    /theme/テーマ名/Elements/mail_form.php

    の先頭の方にある

    $this->Mail->token();

    をコメントアウとするという、あまりお勧めできない暫定的な対応をしておいた。とりあえず、これで送信ボタンが有効になってフォームを送れるようになった。

    これは、あまり良い解決方法ではないな。

    テーマの問題といい、基本的なところでつまずくところが多いと、これからbaserCMSでのサイト構築は辛くなってきたぞ。

  • このサイトのWordPressのデータベースであるMySQLを5.5から5.7にバージョンアップした話し

    どうもこのサイトのWordpressの管理画面が遅くなっているし、Gutenbergでのいろいろ障害が発生するしで、サイトを見直してみる。

    とにかく記事を書いているときに遅いのは問題である。Gutenbergが原因かもしれないが、まずは自分のサイトを疑ってみる。

    今間気になっていたのはWordpressサイトで使っているMySQLのバージョンである。しばらく前からさくらインターネットのレンタルサーバーを使っているが、そのときにインストールしたMySQLは5.5であった。現在のWordpressのMySQLの推奨バージョンは、5.6以上になっていた。

    ということで、MySQLをバージョンアップしてみる。

    さくらインターネットのレンタルサーバーでは、データベースアップグレード機能というのを用意している。最初はこの機能を使ってバージョンアップしてみようと思ったが、処理はスケジューリングされて、今から4時間後になっていたので見送る。その間はデーターベースの更新はしない方がよいとか書かれているので、これではないと思った。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

    そこでデーターベースを手作業でやってみる。phpMyAdminでお手軽にエクスポート、インポートをしようとしたけど、インポートできるデータベースのサイズが32MBだったので、こちらは320MBでZIPで圧縮しても32MBをわずかに越えるということで断念した。

    仕方ないので、MySQLのコマンドを叩いて対応することにする。参考にしたのは、以下のサイトである。

    まずは、データベースをバックアップしたSQLファイルを、Webサーバーの適当なところに置く。今回は、WordpressのバックアップするためのプラグインのBackWPupでローカルディスクを指定してバックアップしておく。あとは、SSHでWebサーバーにログインして、データベースに接続して、mysqlのsourceコマンドでSQLファイルを投入する。

    そして、Wordpressの設定ファイルでデータベースの接続先を変更して完了である。sourceコマンドでのSQLファイルの投入に時間がかかったが、問題無くMySQLデータベースのバージョンアップが完了した。

    さて、MySQLデータベースのバージョンアップの結果はというと、Gutenbergの再利用ブロックの挿入は解決したが、利用ブロックの10個以上の一覧表示は解決されなかった。

    しかしながら、まだ投稿の更新が非常に遅い。ただし、ブラウザのネットワークのパフォーマンスを見ると、アクセス時間が半分くらいになっていた。

    再利用ブロックの挿入が解決しただけでも、良しとしましょうか。

    追記

    自動保存で更新待ちになるタイミングが多いので、Gutenbergの自動保存の設定を変更しておいた。更新時間が長いので、延々と更新となってしまう。

    https://www.nxworld.net/wordpress/wp-gutenberg-custom-autosave-interval.html

    デフォルト10秒らしいけど、これって短すぎやしないか?? function.phpを変更させずに設定画面で変更するようにして欲しいわ。

    それと、こんな風に再利用ブロックのタブが出てこないときがある。何回かタブをクリックすると再利用ブロックのタブが出てくる。

    今はどういう訳か再利用ブロックのタブが出てこない。

    まだまだGutenbergは不安定である。

    追記2(2020年10月30日)

    再利用ブロックのタブが出てこないのは、データベースから再利用ブロックの取得が遅いため。しばらく待っていると再利用ブロックのタブが表示されるようになる。待ち時間は5~10秒位。

    続きはこちらから

  • CandyCaneをRedmineに移行した。だけどデータ移行なんて考えないで移行したという話し。

    こちらの話しの続き。

    現在作業記録をCandyCaneで行っている。CandyCaneは元々Redmineの機能をPHPで記述するということで始まったプロジェクトである。現在は、ほぼ開発は停止している。

    CandyCaneはPHP5.6の上で動かしているので、PHP自体アップデートはない。新しくPHP7の上で動かそうにも難しい。実際にDockerのコンテナでPHP7のサーバーを起動してCandyCaneを動かしたが諦めた。この際、CandyCaneを捨ててしまおうと考えた。

    つぎのバグトラッキングシステムを何にしようかいろいろ検討したが、チケットごとに時間での工数記録してお客さんに報告をしなければいけないので(これが一番大事)、結局はCandyCaneの大元のRedmineに落ち着いた。操作もあまり変わらないし。

    最初はCandyCaneからRedmineにデータの移行をしようと考えたが、これは大変だったのでやめた。今月からCandyCaneの使用をやめてきっぱりRedmineでチケット管理をやっていく。チケット番号(issue ID)の重複をさけるため、チケット番号はGitでも管理しているので、チケット番号を途中まで採番しておく。これはissuesテーブルのidのオートインクリメントを設定し直すだけ。

    CandyCaneは古いPHPが動くようにQNAPの中にDockerのコンテナを立てて、CandyCaneのファイルとデータベースをそのまま移行するくらいで問題無かった。

    最後に利用しているお客さんにCandyCaneからRedmineに変わったというアナウンスと、Redmineのアカウントを発行すれば完了。

    しかしながら、CandyCaneを使い始めて11年経っていた。チケットは約3,000近く溜まっている。トラブルなくここまで無事に動いてくれた。ご苦労様でした。

    SambaをLinuxサーバーのインストールしてファイルサーバーとして動かすよりも、サクッとQNAPを入れてしまったほうが簡単、安心、便利でおすすめ。ファイルサーバーだけではなくてIntelのCPUのQNAPなら、Dockerでいろいろとコンテナを設定してサーバーをたくさん立てられるしね。

  • WordPressのBackWPupプラグインでまたエラーが出るという話し

    WordPressのBackWPupプラグインからエラーの通知がやってきた。

    「ステップを中止: 回数が多すぎます。」というエラーメッセージでGoogleさんに聞くと、自分のサイトが出てきた。

    同じ障害が出ていたのを忘れていた。たまにある話し。

    そのときはPHPのバージョンを上げれば対応したようだけど、現在はさくらインターネットのVPSからただのレンタルサーバーにWordpressのサイトを移している。さくらインターネットのコントロールパネルを見るとPHPのバージョンは7.2だった。これを7.3にバージョンアップする。

    結果はエラーは変わらない。他に原因があるようだ。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

    続きはこちら