dockerコンテナ間の疎通確認をしようとしたらpingがない!

dockerコンテナ間で通信を行って見ようかなと思ったらpingコマンドがない!

ubuntuのデフォルトコンテナを例えば以下のように実行すると

PS > docker run -it --name myubuntu ubuntu

起動後に以下のようにpingコマンドを実行すると以下の様に表示されます。

root@1b2dac91de25:/# ping
bash: ping: command not found
root@1b2dac91de25:/#

pingなどのコマンドはどうも基本のコンテナ内に入っていないようです。最小限度のものがコンテナに含まれるのでこのようなこともよく発生しがちです。仕方ないのでpingをインストールしていきます。

続きを読む

Macを使い始めて学んだショートカット(Windowsとの比較)

MacBookAirを手に入れて使い始めているのですが、やはりショートカットキーの部分でわかっていないので、タッチパットなど頼る操作が多く少しもどかしく感じています。

ということで、自分のメモということも兼ねてWindows時に使用していたショートカットキーの対比のような形でまとめます。そもそも双方で存在しない操作もありますが、その代替案を後日考えてみようかなと思っています。

記法について

シフトキーなどの修飾キーは【】←こちらの墨カッコをしようして囲んでいます。その他キーはそのままアルファベットなどを書くようにします。

アルファベットは表記のみやすさのために大文字にしていますが入力時は小文字(シフトキーなどは不要)にしてください。 同時に押す場合には+をつけています。

(2022.06.19 追記)「デスクトップの表示」を追記しました。 (2022.06.29 追記)「ファイルの削除」を追記しました。

続きを読む

ワイヤレスイヤホンが原因不明の不調だったので対応した話

ここ数日、いつも使用していたワイヤレスイヤホンがBuletoothのペアリングが不調で、ペアリングしても片側しか音がならないという現象に見舞われました。 その対応についてちょっとメモしておきます。

使用していたワイヤレスイヤホン

使用していたのはAnker Soundcore Liberty Air 2となります。

購入は2020年の年末のセールだったので1.5年ほど使用しているというところです。できればもう少し持ってもらって3年ぐらいつかったら買い替えしたいなあぐらいの考えだったので、今回の出費はちょっと痛いなという思いでした。

親機はAndroid端末だったのですが、Buletoothのデバイスの検索を行うと

  • Anker Soundcore Liberty Air 2  … 両耳用
  • Anker Soundcore Liberty Air 2-L … L側のみ片耳用

上記のデバイスが表示されます。

続きを読む

iPadでScratch使用時にスペースキーのイベント処理がうまく動作しない

Noteでは書いていたんだけど、長く残すためにこちらにも転記しました。内容は変更はありません。

note.com

note.com

2022年3月の年度末にiPadScratchのワークショップを計画していました。扱うワークをどうするか検討中に不思議な事象が発生してしまったの、調査を解決策をメモっておきます。

iPadでScratchを動かす

Scratchはいわずと知れた無料の教育プログラミング言語及びその開発環境でですが、iPadに関していうとブラウザ経由でしようすることになるかと思います。オフラインのアプリがダウンロードできるといいのですが、ストアにはScratch.Jrあるのですが、iPad用にはみあたりません。

f:id:ueponx:20220330235642p:plain

iPadでブラウザとなるとSafariを利用するか、別途ダウンロードしたGoogle Chromeを使用するかどちらかになるのかなと思いましたが、何台もiPadを準備する必要があったので、Safariで行う方向で検討しました。

以下のようにブラウザでアクセスしても問題なくエディタを開くことはできます。

f:id:ueponx:20220330235722p:plain

もちろんGoogle Chromeでも同様にScratchを動作させることはできます。ただ、画面上部にアドレスバーなどがあるので、ちょっと画面が狭いですがPCのように最大化することもできます。Safariではアドレスバー左側のあたりをタッチするとメニューが表示されて最大化をすることができるようです。

f:id:ueponx:20220330235857p:plain

不思議な現象が発生

そんな中、PCでワークショップ用の授業の内容を作っていて、iPadでも動作するかを確かめることになりましたが、現象はそこで発生しました。

想定の環境ではiPadに物理的にUSB経由でキーボードとマウスを接続してPCとほぼ同じ環境にしようとしていました。そのため、以下の変換コネクタを使用しています。これ2ポート接続できるので他のものより少し便利です。

f:id:ueponx:20220331000049p:plain

行っていたのはキーボード入力を受け付けて猫のスプライトを動かすというもので、少し簡素化すると以下のようになります。

f:id:ueponx:20220331000116p:plain

このコードではキーボードの【スペースキー】と【右向き矢印】のどちらを動かしても10歩動かすようになっているのですが、動作させると【右向き矢印】では意図通り動作しますが、【スペースキー】では動作しません。

もしかしてSafari側特有の問題なのかなと思って、Google Chromeでも試してみたのですが、やはりうまく動作しません。【矢印キー】が動作するので他のキー試してみたのですが、やはり【スペースキー】ではうまく動作してくれません。

いろいろと調査

ネットで同じような情報がないかと検索すると、うまくいかないこともあるという非常にあいまいな情報が多かったです。その時の打ち合わせでは時間がなかったこともあり、使用するキーを変更しましょうという話で決着がついたのですが、やはりもやもやしてしまいます。

iPadを家に持ち帰り、同様にやってみたのですが、うまく動作しました。あれ?

環境は変わっていません、接続するUSBキーボードが違うといったことはありますが、USBキーボードは特殊なデバイスでない一般的なものです。先ほどネット検索したときになんとなく引っかかった表現「うまくいかないこともある」というのはこういうところからきてるのかも?と思いました。

なにが違うのか考えてみたのですが、Scratch側のアプリには関係のない処理に原因があるのではないかと予想しました。そして、【スペースキー】のみ発生している事象なのでこのあたりに何があるのではと思って調べてみます。

原因は・・・?

いろいろと実験をすることで原因がわかりました。iPadに日本語キーボードを導入していて、操作時の入力モードが日本語入力になっているとスペースキーの動作が変換などに割当られ、【スペースキー】を押しても、スペース文字が入力されない状態になっていました。

授業デモのときには、日本語変換のままでScratchを操作していて、調査時は英数入力でScratchを操作していたという違いになります。

ようやく原因がわかりました。が、これ現在の入力モードがどちらなのかは実はScratch上では簡単にはわからないようです。また、物理キーボードの変換ボタンを押しても入力モードは変化しません(ここも厄介)。

キーボードを強制的に表示するのもできないようで、数値入力可能なのブロックなどにしてもこの日本語入力モードなのかどうかはわかりません(数値しか入力できないので)、最終的に行き着いたのは見た目のグループにある【話すブロック】を1つ取り出して、そこで文字を入力することで日本語入力モードか否かを判定する方法を思いつきました。

f:id:ueponx:20220331000307p:plain

変数やはなす言葉を日本語で入力することは多いので、変換の戻し忘れで容易にこのような動作になることは多いのかなと思いました。

この事象は日本でしか発生しない可能性があるので修正には結構時間がかかりそうですね。

日本語入力モード英数入力モードとを切り替える方法

先程はScratchを動作させているブラウザ(SafariChromeなど)で入力できる箇所で、日本語入力モードから英数入力モードに変更して、使用するというような回避をするとしていましたが、ちゃんと解決手段がわかりました。

対応方法について

ではどうやったらキーボードの操作によって、英数入力モードに変更できるかというと、

【Controlキー + スペースキー】を押下する

iPadに接続したキーボードでは【Controlキー + スペースキー】を押すことで言語を切り替えが可能になります。

f:id:ueponx:20220331000705p:plain

【Caps Lockキー】を押下する

iPad側の設定【Caps Lockキー】を押すことで切り替えることも可能です。

設定方法は以下で行います。デフォルトではオンになっているかもしれませんが念の為設定を確認しましょう。

【Caps Lockキー】を使っての切り替えは、iPadの【設定】から【一般】を選択して【キーボード】を選びます。【ハードウェアキーボード】()内の【Caps Lockを押して言語を切り替え】をオンにすることで、 【Caps Lockキー】を押して言語の切り替え(日本語入力モード⇔英数入力モード)が可能になります(切替えはこの2つに限られるようです)

(※)【ハードウエアキーボード】の設定はUSBキーボードを接続しないと表示されません。

f:id:ueponx:20220331000806p:plain

f:id:ueponx:20220331000822p:plain

f:id:ueponx:20220331000834p:plain

実際に入力時に【Casps Lockキー】を押下すると切り替えメニューが表示されるようになります。

f:id:ueponx:20220331000907p:plain

おわりに

iPadでScratchを動作させたときの不思議な挙動とその対応策についてのメモでした。iPadなどのタブレットでは日本語入力モードで変わった挙動をすることもあるので、キーボード周りの動作がおかしい場合には一度疑ってみてもいいでしょう。

ただ、【半角/全角キー】でできないのかは納得してない感じです😥

あと、【マイナス(-)記号】を入力すると、日本語変換候補ではほとんど違いの判別のつかない【マイナス記号】が出てくるのも辛いところです😥

【結論】スペースキーが動作しない場合には日本語入力モードを疑え

蛇足

日本語変換に関する動作で変わった挙動を示すのはScratchだけには限りません、以前Makecodeでも変わった動作が発生しました。それは日本語入力モードで数値【0】を入力すると【0】が2つ入力されてしまうというものでした。

日本語入力モードの入力と入力ボックスでのキーイベントの文字入力の2つが動作しているのは?という予想です。このときは入力値がおかしいのがすぐにわかる状況なので問題はないのですが、今回の実行時に発生する事象に関しては原因の特定が難しいですね。とくに、ある時は正常に動き、とあるときには全く動作しないというのが厄介です。

Survivalモードに対応したMineCraft Piのパッケージがdeb形式からAppImage形式に変更

先日、子供の科学2022年4月号を購入してきました。

普段はあまり購入しない方面なのですが、久しぶりに購入。気になった記事としてはMinecraft Pi(マインクラフトのRaspberry Piバージョン、以下MCPIと呼ぶことにします。)でもサバイバルモードが使えるという内容の記事があったからです、MCPIはクリエイティブモードしかできないため、一般に販売しているMinecraft(Java版や統合版)に比べてゲームというよりもクリエーション的な側面を持っていました。ただ、それだけではつまらないということもあるので、手をいれることでサバイバルモードにも対応することができるという話は聞いていましが、結構たいへんだという話も聞いていました。

そこで今回購入した大人の科学ではMCPIでサバイバルモードができるというような内容だったのでちょっと買ってみようかなと思ったのでした。サバイバルモードができるパッケージはminecraft-pi-rebornという名前になります。

github.com

面倒なことを排除したパッケージなので、比較的おすすめなのかも。

書籍・雑誌媒体の宿命

購入して内容をみるとdebパッケージがあるのでそれをdpkgコマンドでインストールする内容だったので、簡単じゃんと思っていたのですが、実際にサイトにいってみると…書面で示されているバージョン以降でMCPIのパッケージがdeb形式ではなくなっていました。

さすがにちょっとこれは厳しいというか、書いた方もここまで変わると思っていなかったんだろうなと思います。

パッケージ形態が変わるときは徐々に変わっていくのかなと思ってはいたのですが、ここまで急に変わると結構びっくりさせられます。書籍、雑誌といった媒体の記事はクラウドサービスとかなり相性が良くないですよね。更新時期を教えてもらえるわけでもないので、最新の情報を掲載しても発売した時期によって、陳腐化みための違いなどが発生し、下手をすると使用できない情報になっていることすらありえます。寄稿されたかたも気の毒です。サポートページがあるといいのでしょうか、それもどこまでメンテナンスするかも結構大変かと思います。

インストール手順が変更になったのでメモっておく

上記しましたが、MCPIでサバイバルモードを行うことができるようになったminecraft-pi-reborndeb形式のパッケージからAppImage形式というパッケージに変更されたようです。AppImageは自分も今回初めてみた形式でした。

AppImageとは?

AppImage形式のパッケージに関してどんなものかを調べてみると…Wikipediaにありました。

en.wikipedia.org

AppImage is a format for distributing portable software on Linux without needing superuser permissions to install the application.[1] It tries also to allow Linux distribution-agnostic binary software deployment for application developers,[2] also called upstream packaging. Released first in 2004 under the name klik, it was continuously developed, then renamed in 2011 to PortableLinuxApps and later in 2013 to AppImage.(Wikipediaより)

要約すると 「AppImageはスーパーユーザー権限を必要としないアプリケーションの配布するためのフォーマットで、 Linuxディストリビューションに依存しないバイナリの配布をできるように目指したもの」とのことでした。

ディストリビューションごとのライブラリ依存に合わせるのは大変なので、この思想はいいですね。

公式ページは以下になります。

github.com

AppImageパッケージのインストール(導入)のやり方

ではAppImage形式のパッケージのバイナリはどのようにインストールするかというと。インストール作業は不要で、ダウンロードされたバイナリ(拡張子AppImage)に実行権限を与えて、実行するだけでアプリケーションを動作させる事ができます。

例えば、Subsurface*.AppImageという名前のバイナリパッケージがあった場合には以下の様に実行権限を与えて、そのまま実行すれば動作します。

$ chmod a+x Subsurface*.AppImage
$ ./Subsurface*.AppImage

インストールという作業がなく直感的かもしれません。(実行権限を付与操作の部分もラッピングされるともってお手軽なんですけど)

minecraft-pi-rebornをインストール

AppImageについてはおおよそ理解できたので、では早速実行できるように作業をしていきましょう。

インストール方法は以下のページを参照してもらうことになるかと思いますが、前述したとおり、基本的にはパッケージをダウンロードして実行権限を与えることになります。

インストールドキュメント github.com

ドキュメントの冒頭にあるダウンロードページへのリンクをたどると、最新のビルドパッケージに遷移します。 ここから以下のような形式のファイルとダウンロードします。※2022/03/20現在の情報

jenkins.thebrokenrail.com

minecraft-pi-reborn-client-2.3.1-armhf.AppImage

数字がバージョン(上記の場合は2.3.1)、armhfがCPUのアーキテクチャになります。

(注意)RaspberryPiのアーキテクチャarmhfとなっているものを選択してダウンロードしてください。

f:id:ueponx:20220320204040p:plain

Raspberry Piのブラウザなどでダウンロードして、保存場所を決めておきましょう。今回の作業はインストールではないため、動作させるユーザで操作できるパスであればどこでも大丈夫です。今回はブラウザなどのデフォルトの保存先である、~/Downloadにしました。

CLIであれば、chmodコマンドを使用しますが、今回はGUI(XWindow)を使用して実行権限を与えてみます。

ファイルが保存されているパスをウインドウで開き、

f:id:ueponx:20220320200615p:plain

マウスの右ボタンをクリックして、

f:id:ueponx:20220320200711p:plain

プロパティを開きます。

f:id:ueponx:20220320201217p:plain

【File Properties】ダイアログが表示されるので、

f:id:ueponx:20220320201219p:plain

【Permissions】タブをクリックして、【Access Control】の【Excecute(実行権限)】のプルダウンボックスをクリックして

f:id:ueponx:20220320201222p:plain

【Nobody】から【Anyone】に変更して

f:id:ueponx:20220320201224p:plain

【OK】ボタンをクリックします。

f:id:ueponx:20220320201227p:plain

これでパッケージを動作させる事ができるようになりました。

パッケージの実行

ここまできたら、あとはパッケージファイルをダブルクリックをするだけで動作できます。

MCPI Rebornは実行時に設定を訪ねてくるので、それに答えて操作を勧めていくと無事にMCPIが起動します。あとは一般的なMinecraftと同じ操作ですが、ちゃんとSurvivalモードの選択もできるようになっています。

実行確認のダイアログが表示されたら【Execute】ボタンをクリックしていきます。

f:id:ueponx:20220320203712p:plain

有効化する機能の選択がでるので、必要な物があれば…チェックをつけて

f:id:ueponx:20220320203823p:plain

レンダリングの範囲(奥行き)を設定後

f:id:ueponx:20220320203850p:plain

ユーザー名を入力すると

f:id:ueponx:20220320203918p:plain

Minecraft Piが無事に起動しました。あとは通常通り操作していきますが、【Start Game】をクリックして

f:id:ueponx:20220320123102p:plain

【Create new】ボタンをクリックすると

f:id:ueponx:20220320123112p:plain

【クリエイティブモード】と【サバイバルモード】の選択ボタンが表示されます。

f:id:ueponx:20220320123115p:plain

モードの選択でワールドの作成が行われて

f:id:ueponx:20220320123118p:plain

無事にサバイバルモードが開始されました。

f:id:ueponx:20220320204004p:plain

おわりに

今回はdeb形式で配布されていたMCPI Rebornがパッケージ形式が変更となりAppImage形式に変更され、 その対応について書いてみました。今回はパッケージ形式が初めてみた形式だったのでかなり焦ってしまいましたが、 作業的にはスーパーユーザ権限も不要で、ごく一般的な基本的な操作で実行できるようになるというのが非常にいいなと感じました。WindowsでもPortableアプリ形式といった管理権限不要のアプリ配布の形態もあるので、こちらも同じものだと思って問題ないかと思います。Linuxでもこのような動きがあるとは知りませんでした。

個人的にはディストリビューションごとのライブラリのバージョンの依存性の対応は大変なので、この動きは進んでいくといいなと思いました(特にGUIを使用するアプリなど)

/* -----codeの行番号----- */