できるかな?できるかな?

ちょっと難しそうだなと思うことに挑戦します。

Raspberry Pi 2 でScratch「キャラクターを動かす」

この記事の概要

  1. キャラクターをどう動かしたいのか?
  2. キーを押してからキャラクターが動くまで
  3. 自由に動かすには?


キャラクターをどう動かしたいのか?

最初にどんな目標(ゴール)にするか決めておくと、作業がスムーズに進みます。これはプログラミングに限ったことではなく、何かを作る行為なら大体当てはまると思います。

ここでは難しく考えず、「キーボードの矢印キーを押したら、その方向にキャラクターが動く」としておきます。細かいことも合わせて決めることができるなら、それもここで宣言してしまいます。例えば、「ボタンを押しっぱなしでもOK」です。


キーを押してからキャラクターが動くまで

ここからはScratchでプログラミングです。その方法ですが、ぼくの場合は次の様にしています。

  1. 目標として決めたことを単純な動作に分解する
  2. 分解した単純な動作を行うプレートを探す
  3. 見つけたプレートを繋げる
  4. 繋げたプレートを実行し、思った通りになっていること確かめる
  5. もし思った通りでなければプレート探しからやり直す

このような手順で「キーボードの矢印キーを押したら、その方向にキャラクターが動く」を単純な動作に分解すると、次のような結果となりました。

  1. キーボードの矢印キーが押されたことをプログラムに伝える
  2. 矢印の方向へ移動する距離を決める
  3. キャラクターの位置を2で決めた方向へ移動させる

まだまだ単純な動作ではないかもしれませんが、これらの動作を行うプレートを探してみます。すると、次のプレートが見つかりました。

f:id:dekirukana_dekirukana:20160207154108j:plain


これらのプレートは「動き」、「制御」にありました。これらを繋げ、移動する距離を変えてみます。

f:id:dekirukana_dekirukana:20160207154123j:plain


簡単ですがとりあえず完成です。思った通りに動くか確かめてみましょう。今回は変化が分かりやすいように移動する距離を大きくしています。上向き矢印キーを一回押すと、キャラクターが画面の上方向へ移動してくれます。成功ですね。

また、キーを押しっぱなしにすると、キャラクターがどんどん上方向へ移動していきます。ついでに決めた「ボタンを押しっぱなしでもOK」もできてしまいました。こんなのでいいのかなと不安になるほど簡単な作業です。

座標ですが、Scratchは画面の上下方向をY座標、左右方向をX座標と決まっています。Y座標は中心より上側がプラス値、下側がマイナス値となり、X座標は中心より右側がプラス値、左側がマイナス値となっています。

Y座標を10ずつ変えるとキャラクターを上方向へ移動させることができますが、この値を-10に変えると、キャラクターは下方向へ移動していくようになります。


自由に動かすには?

上向き矢印キーを押したときのキャラクターの動きをプログラミングすることができました。他の方向も同じ様に作ってしまいましょう。

f:id:dekirukana_dekirukana:20160207154134j:plain


プレートを散らかしただけに見えますが、これでキャラクターを上下左右方向へ自由に移動させることができるようになっています。しかし、このままではキャラクターがワープしたように見えてしまいますので、座標の変化を小さい値に変更します。するとキャラクターがワープしたように見えなくなります。

上下左右の移動だけなら次の様にプレートを繋げても実現できます。こちらの方はプログラミング経験者が考えたような形ですね。なんとなくですがソースコードがイメージできてしまいます。

f:id:dekirukana_dekirukana:20160207154154j:plain


Raspberry Pi 2 でScratchを使ってみる

この記事の概要

  1. Scratch とは?
  2. プログラミングのやり方


Scratch とは?

ウィキペディア によると、

Scratch (スクラッチ) とは初心者が最初に正しい構文の書き方を覚えること無く結果を得られるプログラミング言語学習環境である。

だそうです。

公式サイト には、

スクラッチを使って、自分だけのストーリー、ゲーム、アニメーションをプログラムすることができます。さあ、その作品をコニュニティを通じて共有しましょう。

と表現がされています。

ぼくは「難しい勉強をしなくても、マウスだけでゲームやアニメーションを簡単に作れるツールだな」と感じました。

プログラミングのことを何も知らなくても作品を作ることができる、本当にそう思います。


プログラミングのやり方

既にたくさんのサイトでプログラミングの方法が詳しく紹介されているので、簡単に説明します。

始めにソフトの起動です。デスクトップの Menu からプログラミングにカーソルを移動させると、色んなプログラミングソフトが表示されます。その中にあるScratchをクリックすると、ソフトが起動し、日本語で表示されます。

f:id:dekirukana_dekirukana:20160126233312j:plain


Scratchのウインドウには色んなものが表示されていますが、ソフト起動直後は右上エリアに表示されている猫(?)のキャラクターに対するプログラミングを行う状態になっています。右下エリアからキャラのアイコンが青色で囲ってあることからも確認することができます。

左側エリアから「10歩動かす」とか「15度回す」等と書かれている青色のプレートを中央エリアのスクリプト領域へ配置することで、この猫のアクションをプログラミングすることができます。

f:id:dekirukana_dekirukana:20160126233329j:plain


配置するプレートを下へ下へとつなげていくと、連続で命令することができます。プレートの中にある白い楕円や黒い四角の中は自由に変えることができるようになっています。

f:id:dekirukana_dekirukana:20160126233340j:plain


スクリプト領域へ配置できるプレートは左上エリアにある「制御」や「調べる」等たくさんの種類が用意されているので、見た目を変えたり、音を出したり、線を引かせたりと様々なことができるようになっています。

f:id:dekirukana_dekirukana:20160126233400j:plain


f:id:dekirukana_dekirukana:20160126233426j:plain


作ったスクリプトを動かす時はプレートをクリックします。一番下まで到達したら自動で停止するので、2つ3つのプレートをつなげたくらいだと一瞬で動作が完了してしまいます。

「制御」のプレートには「ずっと繰り返す」ものもあり、永遠に終了しないスクリプトを作ることができます、無限ループですね。うっかり無限ループを動かしてしまい、マウス操作を受け付けない時でも、右上エリアにある赤マルをクリックすることで強制停止させることができますので安心して下さい。

f:id:dekirukana_dekirukana:20160126233441j:plain


試しに「15度回す(右向き)」プレートを3つ続けたスクリプトを実行すると、キャラクターは次の位置まで回転します。

f:id:dekirukana_dekirukana:20160126233452j:plain


プログラミングの知識が少なからずあるぼくには「簡単にプログラミングできること」に対する感動は少なかったです。しかし、パソコンをほとんど使ったことがない子供や年配の方でもプログラミングすることができるのは間違いなさそうです、本当に簡単でした。

余談ですが、Scratchを使っていると、昔遊んでいたPlayStationPortableのゲームソフト「 カルネージハート 」を思い出しました。このゲームもロボットの動きをプレート(ゲーム内ではチップ)の組み合わせでプログラミングし、対戦していくゲームです。良ければこちらもプレイしてみて下さい。

Raspberry Pi 2 SDカードのバックアップ その2 (失敗)

この記事の概要

  1. W32DiskImagerで作成したimgファイルを縮小しようとしましたが、うまく出来ませんでした。


W32DiskImagerで作成したimgファイルを縮小する準備

Linuxのコマンドを使って、Linuxのパーテション/ファイルシステムを編集するため、Virtual Boxをインストールしました。Virtual BoxでUbuntuをエミュレートし、Ubuntuへimgファイルを渡し、その中でファイルを縮小する考えです。

Virtual Boxについてはこちらをどうぞ。Ubuntuについてはこちらをどうぞ。

インストールには特別必要なことはありません、インストールする位置、ショートカットの作成等を指示するだけです。

次にVirtual Boxの仮想HDDへUbuntuのインストールですが、こちらも求められた内容を入力するだけです、アカウント設定やキーボードの種類、住んでいる地域等です。Windowsとファイルの受け渡しをするため、Guest Additionsもインストールします。

Virtual BoxでWindows側のファイル共有の設定を行い、Ubuntuのターミナルで次のコマンドを入力すれば、imgファイルが確認できます。

sudo mount -t vboxsf windos側の共有フォルダ名 ubuntu側の共有フォルダ名

ここまで作業できれば準備完了です。


Ubuntuでimgファイルを縮小する手順 (出来ませんでした)

Ubuntuのターミナルで次のコマンドを入力して、imgファイルをloopデバイスとして制御出来るようにします。

sudo losetup imgファイルパス /dev/loop0

次にパーティションの情報を変更します(サイズを小さくする)

sudo fdisk /dev/loop0

コマンド:pで情報確認、パーティション2のcylinder位置を後で入力します

コマンド:dでパーティション2を削除

コマンド:nで新規作成
パーティション2、primary、cylinder位置はコマンド:pで確認した時と同じ、サイズは適当に小さく

コマンド:wで書き込み
ワーニングが表示される(再読み込みされた時に反映されます、と書いてあった気がします)

次に、パーティション情報を変更したimgファイルをデバイスのように接続します。

sudo kpartx -a /dev/loop0

ファイルシステムのチェックを行います。しかし、ここでパーティションの変更が確認されませんでした。

sudo e2fsck -f /dev/mapper/loop0p2

ファイルシステムのリサイズを行います。しかし、何もリサイズされませんでした。e2fsckで変更が確認されなかったので、当然と言えば当然ですが。。。

sudo resize2fs /dev/mapper/loop0p2

ここでリサイズは完了し、次のコマンドで接続を終了します。

sudo kpart -d /dev/loop0
sudo losetup -d /devloop0

ここで紹介した作業は残念ながら成功しませんでした。成功した場合は別記事で改めて紹介するつもりです。

Raspberry Pi 2 SDカードのバックアップ その1

この記事の概要

  1. W32DiskImagerを使って、SDカードを丸ごとバックアップ保存してみました。

W32DiskImagerを使って、SDカードを丸ごとバックアップ保存

Raspberry Pi で色々なことを試していく上で、「最初に(XX日前に)戻せる」ということはとても重要で心強いことです。変更する前の設定を覚える必要も、インストールしたソフトの完全除去も考えなくていいのですから。個人的には「簡単な方法で変更を加える前の状態を保存できる/戻せること」も重視したいと思います。

RaspbianのOSイメージを書き込んだW32DiskImagerを使って、出来るだけ簡単にバックアップを残してみます。

先ず、Raspberryで使用しているSDカードをWindowsからRead/Writeできるように接続し、W32DiskImagerを起動します。

W32DiskImagerのImageFileにこれから作成するバックアップファイルのパスと名前を書き込みます。右側の青いフォルダアイコンをクリックし、ダイアログを使いながら入力することもできます。

f:id:dekirukana_dekirukana:20151221231626j:plain


パスを入力すると、Readボタンが有効になるので、SDカードの読み取りを開始します。カードの容量次第ですが、完了まで時間がかかる作業なので別のことをした方がいいと思います。

f:id:dekirukana_dekirukana:20151221231639j:plain


完了したら、入力したパスにimgファイルが作成されていることを確認します。これでバックアップ作業は終了です。

f:id:dekirukana_dekirukana:20151221231647j:plain


SDカードをまるごと保存するのでかなり大きいサイズのファイルになっていますが、zip圧縮すると小さくなりました。Raspberry Pi で実際に使われていた容量が少なかったからでしょう。

f:id:dekirukana_dekirukana:20151221231654j:plain


Windows にSD カードを認識させ、バックアップファイルのパスを決めてRead ボタンを押すだけでバックアップできました。データのサイズは大きいですが、簡単な作業だけなのが嬉しいですね。

Raspberry Pi 2 デフォルトブラウザEpiphanyについて

この記事の概要

  1. デフォルトブラウザについて調べてみた。
  2. サイト表示をチェックしてみた。
  3. Youtubeが表示できるかチェックしてみた。
  4. デフォルト検索エンジンを変えてみた。


デフォルトブラウザについて調べてみた

Epiphanyというブラウザがデフォルト設定されています。普段Windowsを使っているぼくは初めて使うブラウザなので、どういうものなのかサッパリ分かりません。GoogleChromeとかFirefoxに変えたほうがいいのかなと考えてしまいます。とりあえず、インターネット検索して評判を確かめてみると 気になる記事 が見つかりました。

どうやらRaspberry Pi 向けにEpiphanyを改良したそうなのです。改良点がリストアップされていましたが、特に強調されていたのはビデオ再生のハードウェアアクセラレーション対応です。Raspberry Pi にビデオ再生支援機能が活かされていることは知っていましたが、ブラウザもそれに対応したらしいのです。

具体的にはYoutubeの高画質動画がRaspberry Pi でも再生できるっぽいのです。Youtubeがスルスルと再生できますとは書かれていないので、自信がありませんが多分あってます。それをこの記事の後半で確認してみようと思います。


サイト表示をチェックしてみた

個人的によく使うサイトが正常に表示されるか確かめてみました。結論としては「表示されるまで少々待たされるが、概ね問題無い」ですね。

f:id:dekirukana_dekirukana:20151215233849j:plain


f:id:dekirukana_dekirukana:20151215233900j:plain


f:id:dekirukana_dekirukana:20151215233907j:plain


f:id:dekirukana_dekirukana:20151215233912j:plain


Youtubeが表示できるかチェックしてみた

Epiphanyのビデオ再生支援機能が有効なことを確かめるため、720p以上の高画質動画を再生してみます。ちょうど映画「バクマン。」予告がランキング上位にあったので、これがスムーズに再生されることを利用しました。

デフォルト表示は問題なく再生されます。シアターモードに切り替えても問題なく再生されました、たまにカクつくような気がしますが、ぼくは許容範囲だと思います。全画面表示に切り替えると、残念ながらコマ飛びが激しくカクカクと表示されました。処理能力が向上したRaspberry Pi 2でも全画面表示は難しい様です。

Raspberry Pi でよく利用される軽量ブラウザmidoriでも、同様の表示できるか試してみました。デフォルト表示はどうにか再生されましたが、シアターモードはコマ飛びが頻発してしまいました。全画面表示は試すまでもなさそうなので未実施です。

EpiphanyYoutubeのシアターモードまでならそれなりに再生できる、ぼくはそう感じました。


デフォルト検索エンジンを変えてみた

Epiphany検索エンジンduckduckgo.comというものですが、正直聞いたことがない検索エンジンです。使い慣れたGoogle検索に変えたいなぁとインターネット検索していると、 同じことを考えている人 がいました。ぼくもこれを真似てみようと思います。

次のコマンドでxmlファイルを編集します。XMLファイルが編集できるればエディタは何でもかまわないと思います。

sudo vi /usr/share/glib-2.0/schemas/org.gnome.epiphany.gschema.xml

XMLファイルのだいたい12行目あたりにある次の内容を修正します。

...
<key type="s" name="keyword-search-url">
<default>`https://duckduckgo.com/?q=%s&amp;t=raspberrypi`</default>
<summary>URL Search</summary>
...

修正後はこうなります。

...  
<key type="s" name="keyword-search-url">  
<!-- default>`https://duckduckgo.com/?q=%s&amp;t=raspberrypi`</default -->  
<default>`https://www.google.co.jp/search?q=%s`</default>  
<summary>URL Search</summary>  
...

リンク先の記事とGoogleのURLの書き方が異なるので注意です。 この後は記事の通りなのですが、ぼくの環境ではインストール作業は既に最新ですと表示されたので不要でした。

sudo apt-get install libglib2.0-bin
sudo glib-compile-schemas /usr/share/glib-2.0/schemas

Epiphanyを再起動し、上部のボックスに検索文字列を入力した結果がGoogleになっていれば成功です。検索エンジン変更で使い勝手が向上しました。デフォルトブラウザはこのままで十分かもしれません。

f:id:dekirukana_dekirukana:20151215233934j:plain

また、検索エンジンをYahooやBing等にすることも出来ます。GoogleのURLを記入する変わり次のものを記入するだけです。

http://search.yahoo.co.jp/search?p=%s
https://www.bing.com/search?q=%s

Raspberry Pi 2 で日本語表示/入力できるようにする

この記事の概要

  1. Raspberry Pi 2を初めて起動する。
  2. SDカードの容量を全部利用できるように設定する。
  3. 日本語表示ができるようにフォントをインストールする。
  4. 日本語入力ができるようにIMEソフトをインストールする。


初めての起動

SDカードをセットし通電させると、無事にOSが起動し、30秒もしないうちにデスクトップ画面が表示されました。どうやらユーザ名"pi"で自動ログインする設定になっているみたいです。

f:id:dekirukana_dekirukana:20151212004853j:plain


ユーザ名"pi"はパスワードもよく知られているため、このまま利用を続けるのはセキュリティリスクが高いそうです。管理者権限を持ったユーザ名とパスワードが既知なので当たり前といえば当たり前ですね。


SDカードの全容量を使えるようにする

起動後に"Terminal"を起動し、ディスク容量を確認すると、ほとんど空きがありませんでした。これではソフトの追加もほとんどできないので、使われていない残りの容量も利用できるようにします。

f:id:dekirukana_dekirukana:20151212004916j:plain


次のコマンドを入力します。

sudo raspi-config

すると、グレーのウインドウが表示されるので、"1. Expand Filesystem"を選択します。右側の説明には"SDカードの全容量をOSで利用可能にします"とあります。

f:id:dekirukana_dekirukana:20151212004932j:plain


色々と細々したことを自動でやってくれた後、再起動するとSDカードの全容量が利用できるようになっていました。

f:id:dekirukana_dekirukana:20151212004940j:plain


後で気づいたのですが、Menu > Prefereces > Raspberry Pi Configuration をクリックし、表示されたウインドウのSystemタブにある"Expand Filesystem"ボタンでも同様のことができるみたいです。


日本語表示ができるようにする

素の状態では日本語を表示することができません。言語設定が日本語になっていない、日本語のデータがないことが原因の様です。

f:id:dekirukana_dekirukana:20151212004958j:plain


先ず、日本語のデータをインストールします。"Terminal"を起動し、次のコマンドを入力するだけで作業完了しました。

sudo apt-get update
sudo apt-get install fonts-ipaexfont

次に言語設定を日本語にします。Menu > Prefereces > Raspberry Pi Configuration をクリックします。表示されたウインドウのLocalisationタブの"Set Locale..."をクリックし、LanguageとCountryを設定します。

f:id:dekirukana_dekirukana:20151212005011j:plain


ついでに、TimezoneとKeyboardも設定します。Timezoneは時差を設定するものです。KeyboardはJapanese(OADG109A)を選択します(ぼくの場合です)。

f:id:dekirukana_dekirukana:20151212005023j:plain

f:id:dekirukana_dekirukana:20151212005034j:plain

全て設定し終え、OKをクリックすると「設定を有効にするには再起動が必要です。再起動しますか?」と表示されるので、再起動するを選択します。再起動後は日本語を表示することができるようになっていました。

f:id:dekirukana_dekirukana:20151212005051j:plain


日本語フォントはたくさんあり、どれをインストールしたらいいのか正直よく分かりませんでした。今回はたまたま目についたIPA(独立行政法人 情報処理推進機構)のフォントをインストールしただけです。


日本語入力ができるようにする

表示と同様に初期状態では日本語を入力することもできません。原因はIMEソフトがインストールされていないためです。

IMEソフトは"Terminal"で次のコマンドを入力するだけで作業完了します。

sudo apt-get update
sudo apt-get install uim uim-mozc

一度、ログアウトし、再ログインしなおすと利用可能になりました。

f:id:dekirukana_dekirukana:20151212005106j:plain


インターネットで検索すると"ibus-anthy"をインストールする記事の方がすぐ見つかります。しかし、最近のバージョンアップでWindowsIMEとはずいぶん挙動が違ったものに変わってしまったらしく、使えないIMEになったと酷評が多いです。

ぼくはWindowsIMEと同じように使える方が嬉しいので"uim"を選択しました。


Raspberry Pi とは何か?

f:id:dekirukana_dekirukana:20151209235051j:plain

この記事の概要

Raspberry Pi について調べたこと、他人の使い方等を紹介します。


調べたこと

Raspberry Piとは?

Raspberry Pi は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団(Raspberry Pi Foundation)によって開発されている。(Wikipediaより)。

ARMプロセッサとは?

組み込み機器や低電力アプリケーション向けに広く用いられるプロセッサのこと。代表的な製品としてスマートフォンタブレットがある。(Wikipediaより)

シングルボードコンピュータとは?

一般家庭にあるパソコンと比較すると低性能ではあるが、マウスやキーボードを使って操作可能で、インターネット閲覧やメール送受信、音楽再生や動画再生、USB機器の利用、プログラミング等、日常的な作業が可能で、GPIOやI2Cといった高機能なワンボードマイコンとしての利用も可能なパソコンのこと。(Wikipediaより)


他人の使い方(遊び方)

  1. 演算性能やデータ転送性能を評価ソフトで調べる。
  2. 各種サーバーを構築する。
    リモートデスクトップ
    Web
    ファイル共有
    VPN
  3. 各種アプリケーションソフトを定期的に実行させる。
  4. USB接続のWebカメラを制御して、写真や動画をインターネット経由で配信する。
  5. 汎用の入出力信号を制御して色々な電子部品や装置を利用する。
    LED
    スピーカー
    カメラ
    ディスプレイ
    モータ
    センサー各種


自分の考えている遊び方

  1. 一般家庭にあるパソコンとしてどの程度まで利用できるか試してみる。
  2. サーバーというものを構築してみる。
  3. 汎用の入出力信号を使った活用方法を実践してみる。
  4. 教育向けのソフト、プログラミング環境を使ってみる。