2026年3月1日日曜日

Google Blogerにコピーボタン(execCommand不使用)を追加しました。

 日本ではBlogerが不人気なようです。

完全無料、広告表示なし、https標準対応、25年以上継続的に運用されてきたサービスなんですが、日本では使っている人が少ないようです。
とりあえず始めるのは簡単で、カスタマイズしようと思えば知識は必要ですが可能という強力なサービスだと思うのですが利用者は増えていないようです。

カスタマイズも最近でしたら生成AIがあるのでHTMLやCSS、Javascriptもあまり知識がない私のような者でもそこそ出来るようになってきました。

という事で、今回コードブロックの右側にコピーボタンを配置し、クリックするとコードをコピーできる機能を実装してみました。ただし、execCommand については非推奨になりましたので代替案であるHTML5のClipboard API を使用した形で実装したいと思います。
まずはGoogleさんで検索をして幾つかのサイトを参考に実装してみました。
私のサイトではソースの表示にはprettyprintを使っているのですが、linenumsを指定するとうまくコピーできない(1行目だけコピーされる)ようです。

原因は、linenumsを指定するとol、liダグを使って行番号を表示させているのですがこれが原因のようです。

という事でCopilotに指導を仰ぎながら修正したのが以下のコードとなります。

CSS

Blogerのテーマ > マイテーマの「HTML編集」で「]]></b:skin>」の前に以下のCSSを追加して下さい。

pre.prettyprint {
  overflow: auto;
  word-wrap: normal;
  text-align: left;
  margin: 0;
}
pre.prettyprint > ol.linenums > li
{
  list-style-type: decimal;
  margin: 0;
  padding: 0;
}
.code-container {
  text-align: right;
  margin: 0;
}
.copy-button{
  font-size: 12px;
  padding: 2px 10px;
  color: #fff;
  background-color: #444;
  border: none;
  cursor: pointer;
  transition: background-color 0.3s ease;
}
.copy-button:hover{
  background: #999
}
pre code{
  display: block;
  margin: 0;
  padding: 2px 5px;
  line-height: 1;
  overflow: auto;
  color: #f8f8f8;
}

Javascript

同じく、「/body」の直前に以下のコードを追加して下さい。

  <script>//<![CDATA[
    // コピーボタン作成用コード
    (function(d){
        const pres = d.querySelectorAll('pre.prettyprint');
        if(pres.length == 0){
          return;
        }
        pres.forEach(function(pre) {
          // コード(pre)とCopyボタンを収容するdiv作成(Copyボタンにprettyprintの影響が及ばないようにする為)
          const div = d.createElement("div");
          div.className = "code-container";
          // Copyボタンを生成してdivに追加(子の先頭)
          const btn = d.createElement('button');
          btn.className = 'copy-button';
          btn.textContent = 'copy';
          div.appendChild(btn);
          btn.addEventListener('click', copy_code, false);
          // コード(pre)の親にdivを追加
          pre.parentNode.insertBefore(div, pre);
          // コード(pre)を現在の親からdivの子の末尾へ移動)
          div.appendChild(pre);
        });
    })(document);

    // コピー機能用コード
    function copy_code(){
      const pre = this.nextElementSibling;
      let code;
      if(pre.classList.contains('linenums')){
        code = [ ... pre.querySelectorAll('li')]
          .map(li => li.textContent)
          .join('\n');	  
      } else{
        code = pre.textContent;
      }
      if(navigator.clipboard){
        navigator.clipboard.writeText(code).then(() => {
          this.textContent = 'Copied';
          setTimeout(() => {
            this.textContent = 'Copy';
          }, 500);
        }).catch(e => {
          alert('コピーできませんでした\nお手数ですが手動でコピーしてください\n\n' + e.message);
        });
      } else{
        alert('このブラウザは Clipboard API 非対応です\nお手数ですが手動でコピーしてください');
      }
    }
  //]]></script>

あとはprettyprintを使ってコードを埋め込めば、自動的にCopyボタンが追加されます。

今回参考にさせていただいたサイト
コードブロックにコピーボタンを実装する(Clipboard API 対応版)
Bloggerでコードをきれいに表示する方法-copy機能の追加

2026年2月26日木曜日

Raspberry Pi 500+ 日本語配列版はほぼパソコン

Raspberry Pi 500+ 日本語配列版をポチってしまいました。 

Raspberry Pi 500+は2025年9月25日に発表されましたが、そのキーボードを日本語版にして16GBメモリに256GB SSD持つキーボード一体型のRaspberry Pi 5 になります。
その詳細はこちらに詳しく紹介されているので見て下さい。

自宅に来た、Raspberry Pi 500+を早速試してみました。
数値的なものよりも体感的にどう感じるかで評価したいと思いますのでブラウザを使って試したいと思います。標準でChromiumとFirefoxが入っていて初回起動時に選択ができるようになっていました。
Raspberry Pi 4はmicroSD、Raspberry Pi 5はSSDからの起動となります。

2回目以降起動時ChromiumFirefox
Raspberry Pi 4/8GB4.238.89
Raspberry Pi 500+/16GB1.484.29

追記:2026/02/27
初回起動時の測定も行なってみました。
SSDの威力が発揮されている結果となりました。

初回起動時ChromiumFirefox
Raspberry Pi 4/8GB12.7118.25
Raspberry Pi 500+/16GB2.766.5

初回起動時はライブラリの読み込みなどで時間がかかるので、数回起動してから測定を行なっています。電源投入後の初回は2,3秒microSDでは8秒〜10秒、SSDでは1、2秒時間が多くかかるようです。
注目すべきはRaspberry Pi 500+でのChromiumでほぼ瞬間で起動される印象です。

そのお値段ですが、本体+公式マウス+公式ACアダプターで約53,000円(秋月電子通商)でした。これに公式ディスプレーを付けると約73,000円ですが、すでにディスプレーを持っていたり、リビングのTVを使うなら5万円ちょっとです。

しばらく使ってみてちょっと不満なのは、電源ボタンがDeleteキーのすぐ横にあるので、Deleteキーを多用する身としては誤って電源ボタンを押して、ログアウトダイアログボックスが表示されるのが面倒なのと、キー音がちょと耳障りな事でしょうか。

Chromiumを快適に使うちょっとした作業

Raspberry PiといえばChromiumですが、実はRaspberry Pi OSがBookwormになってからChromiumで日本語入力ができないという現象が出ていました。そのあたりの詳細はこちらに詳しいのですが、ここではとりあえずどうすれば解消できるかだけ纏めておきたいと思います。

STEP1: fcitxをfcitx5に変更する。

標準では fcitx-mozc がインストールされていますが、これを fcitx5-mozc にインストールし直すと共に、日本語フォントもインストールしておきます。
Terminalを開いて以下のコマンドを順次実行して下さい。

sudo apt update
sudo apt install fcitx5-mozc fcitx5-config-qt -y
sudo apt install fonts-noto-cjk fonts-ipafont -y

STEP2: Wayland用にChromiumを設定する。

これでChromiumで日本語入力は可能ですが、変換ポップアップがおかしな場所に表示される問題があるのでこの対策を行います。

具体的には /etc/chromium.d/10-gtk-version ファイルを作成して以下の内容を追加します。

<実行コマンド>

sudo nano /etc/chromium.d/10-gtk-version

<追加内容>

if [ ! "$XDG_SESSION_TYPE" = "x11" ]; then
    export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --gtk-version=4"
fi

編集を保存して終了するには、Ctrl+o、Enter、Ctrl+x の順にキー入力します。

STEP3: Fcitx5 をデフォルトに設定

以下のコマンドを実行して、再起動すれば Chromium で日本語入力が問題なく出来る様になります。

im-config -n fcitx5


2026年2月21日土曜日

Windows11でALT+Shift+PRT SCでウインドウのスクショが取れなかった件

久々の投稿です

2年程ご無沙汰しておりました。
元々、筆不精者が仕事が忙しくて物書きが全くできませんでした。ひと段落着いたのでまた書きたいと思います。
今回は投稿の為にWindows11で画面のスクショを撮ろうとしたら、ハイコントラストのショートカットとバッティングしていてスクショが取れなかったというお話です。

Windows11でALT+PRT SCはアクティブウインドウのみをスクショする為のショートカット何ですが、私のノートパソコンでは当該キーがSCR LK(スクロールロック)と共同となっていてALT+PRT SCの為にはALT+Shift+PRT SCとする必要があることからハイコントラストのショートカットと重複してしまったという事です。

解決策

ハイコントラストのショートカットを無効にする事で対応しました。

  1. 「設定」アプリを開きます(Windowsキー + I)。
  2. 左側のメニューから「アクセシビリティ」をクリックします。
  3. 「コントラスト テーマ」を選択します。
  4. 「コントラスト テーマのキーボード ショートカット」という項目を探し、スイッチを「オフ」にします。


Google Blogerにコピーボタン(execCommand不使用)を追加しました。

 日本ではBlogerが不人気なようです。 完全無料、広告表示なし、https標準対応、25年以上継続的に運用されてきたサービスなんですが、日本では使っている人が少ないようです。 とりあえず始めるのは簡単で、カスタマイズしようと思えば知識は必要ですが可能という強力なサービスだと思...