Raspberry Pi3を使い始める人に向けた個人的な説明用メモ

Raspberry Piを使い始めるためには、いろいろな記事が投稿されていますが、使いずらく感じたので、個人的な説明資料としてリンクを中心に情報をまとめています。

これだけでは不足するので、他の資料と合わせて参考にしてください。

# 【前提】そもそもどうやって使い始めれば良いのか
まずはディスクトップ環境を構築するのが良いと思います。それにはキーボード・マウス・ディスプレイを接続し、ネットワークに接続するためRaspberry Pi3以降は内蔵Wi-Fiを利用するのが一般的です。

[公式サイトの説明(Getting Started)](https://projects.raspberrypi.org/en/projects/raspberry-pi-getting-started)にあるGIFアニメーションが分かりやすいと思います。

![20181215_rapsi_plug.png](https://qiita-image-store.s3.amazonaws.com/0/78296/02d514ab-61e9-8a9a-f38e-b2a9b1aacb15.png)


公式サイトの図では分かりにくいですが、吹き出しのようなデバイス(機器)が必要です。

* USBキーボード
* USBマウス
* HDMIケーブル + ディスプレイ
* microSDカード (8GB以上)
* 電源 (microUSBケーブル, 5V 2.5A以上)
※[秋月電子通商の5V 3A MicroBオスUSBアダプター](http://akizukidenshi.com/catalog/g/gM-12001/)は入手しやすいと思います)

以下では、このような環境を前提として、どうやって始めれば良いのか、つまづきやすい点についてまとめています。

# SDカードを準備する方法
ここでは[公式サイトからダウンロード可能なRaspbian](https://www.raspberrypi.org/downloads/raspbian/)を対象に話しを進めます。

## イメージファイルの準備
イメージファイルを公式サイトからダウンロードする場合、一般的な日本のインターネット環境では2時間はかかると思われます。

[日本国内にミラーサイト](https://www.raspbian.org/RaspbianMirrors)があるので、2018/12時点では、Fullイメージと呼ばれるファイルをJAISTなどからダウンロードします。

* http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_full/images/

以前はFullと呼ばれるイメージは存在しなかったため、古い内容の文書を参考にしている場合、リンク先をクリックするとFullではないディレクトリに誘導される場合があると思います。

また他のミラーサイトを利用とする場合、全てのミラーサイトがイメージファイルを含めた全ファイルのコピーを行なっているわけではないため、見つからなければ、ほかのサイトに移るといった対応が必要になるでしょう。

脇道に外れますが、古いノートPCやVMWare用にIntel版のデスクトップ環境Pixelが発表された当時、インストールイメージはpixel_x86というディレクトリに配置されました。そのため古い記事のリンク先には2016年当時のイメージしかないという場合があります。現在はrpd_x86というディレクトリに移っているため、最新のファイルかどうか確認しながら上手にミラーサイトを活用しましょう。

``` http://ftp.jaist.ac.jp/pub/raspberrypi/rpd_x86/images/ ```

## イメージファイルをSDカードに移す方法
普通にコピーはできないので、専用のソフトウェアを利用するか、UNIX系OSでddコマンドを利用します。
ddコマンドは初心者の場合、かなり危険なので、壊しても大丈夫な環境で利用するか、下記に記載するWindowsOSでEtcherを利用するのが良いでしょう。

[公式サイトのRaspbianのダウンロード先にある説明](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)の中に、Windows/MAC/Linuxに対応した説明へのリンクがあります。

* [Windows](https://www.raspberrypi.org/documentation/installation/installing-images/windows.md)はEtcherの利用がおすすめ (Mac/Linux版もありますが未検証)
* [MAC](https://www.raspberrypi.org/documentation/installation/installing-images/mac.md)と[Linux](https://www.raspberrypi.org/documentation/installation/installing-images/linux.md)はddコマンドを実行する際に、間違って他のディスクを破壊しないように**of=**引数の指定を間違えないように注意すること

# 電源ケーブルを接続するタイミング

ディスプレイを認識できないとRaspberry Piが映像出力なしで動こうとします。**他のケーブルを全て接続し、ディスプレイの電源を入れてから、Raspberry Pi3に電源ケーブルを接続する** ようにします。

少し古いディスプレイでどうしても映像が表示されない場合には、パソコンにSDカードを指して[config.txtファイルを編集する](https://www.raspberrypi.org/forums/viewtopic.php?t=145506)必要があるかもしれませんが、比較的新しい環境ではディスプレイの電源がちゃんと入っているか、入力がHDMIに設定されているか、まず確認することで解決すると思います。

# 最初に起動するアプリケーション

デスクトップが表示された後は、内蔵されているソフトウェアを使って遊んでみるのがお勧めです。

メニューから、様々なアイコンをクリックし、アプリケーションを使用してみることができます。
![20181216_raspi3_defaultmenu.png](https://qiita-image-store.s3.amazonaws.com/0/78296/8cfbbf34-96af-7592-61dc-39e53c83b6f4.png)

[Scratch2](https://www.raspberrypi.org/blog/scratch-2-raspberry-pi/)は、グラフィカルなプログラミング環境としてお勧めです。

またセンサーなど外部機器を接続して、少し本格的な開発を行ないたい場合には、[node-red](https://nodered.org/)を試してみるのが良いでしょう。

端末アプリは、**コマンドライン**、**CLI**、**シェル(shell)**などと呼ばれることもあります。
**コマンドを実行する**などという指示があった場合には、この端末アプリからコマンドを実行します。

# 日々のメンテナンス

Raspberry Piに付属していないソフトウェアは多くありますが、(すこし古いかもしれませんが)かなりの数がパッケージ(.debファイル)として提供されています。
そして、パッケージは常に更新されています。
最新の状況に保つことで利用している環境が壊れることは、**ほぼない**(※)ので、セキュリティ面を考えると日頃から次のようなコマンドを実行するのがお勧めです。
(※大切なファイルはバックアップを取っておきましょう)

```bash
$ sudo apt update
$ sudo apt dist-upgrade
```

# ネットワークに接続する前に、設定ファイルをWebページを見ながら書き換える

コピー&ペーストは積極的に利用してキーボードをタイプする回数はできるだけ減らしましょう。

しかしネットワークに接続する前では手段は限られます。
USBメモリのような機器を利用して、パソコンなどで準備したテキストファイルをコピーする方法が代替手段としてはあります。

標準環境では古典的なviがエディタとして利用できますが、viの基本的な使い方を知らないとシステムファイルの編集が面倒だと思います。

# viが使えないのに設定ファイルを編集する必要がある

Raspberry PiにはleafpadというGUIテキストエディタが付属しています。

viやnanoに不慣れであれば、```$ sudo leafpad```とすることで、どんなファイルでも作成、編集が可能になります。

なお、sudoコマンドは特権(root)ユーザーとしてコマンドを実行できるため便利ですが、必要な時だけ使い、乱用してはいけません。

# 日本語入力環境の利用

日本語を入力するための環境は標準では準備されていません。

GUI(X11)上で利用する言語変換は、大雑把にいうとキーボードからの入力を横取りするプログラム(A)と、その入力を受け取って日本語を含む各言語に変換するためのプログラム(B)を選択し、組み合わせることで行ないます。

## キーボードからの入力を横取りするプログラム(A)の候補 (A-z順)
* [fcitx](https://ja.wikipedia.org/wiki/Fcitx)
* [ibus](https://ja.wikipedia.org/wiki/IBus)
* [scim](https://ja.wikipedia.org/wiki/SCIM)
* [uim](https://ja.wikipedia.org/wiki/Uim)
* etc.

## 日本語に変換するためのプログラム(B)の候補 (A-z順）
* [anthy](https://ja.wikipedia.org/wiki/Anthy)
* [mozc](https://ja.wikipedia.org/wiki/Google_%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%85%A5%E5%8A%9B#Mozc)
* [skk](https://ja.wikipedia.org/wiki/SKK)
* etc.

## 日本語入力パッケージの導入方法

AとBの組み合せでパッケージが提供されているか確認する。

例) ```$ apt search fcitx anthy``` や ```$ apt search uim mozc``` など

存在するパッケージ名を指定してインストールする

例) ```$ sudo apt install fcitx-anthy```

ポイントは、既にuim(A)とanthy(B)を利用しているのであれば、改めてfcitx(A)を導入するよりも、uim(A)とmozc(B)などの組み合せが可能か確認し、利用する方が使い勝手は良いはずです。

※ 個人的にはuim-skkを好んで利用していますが、skkは利用方法を調べてからでないと漢字変換がまずできない初見殺しです。

## 日本語変換には日本語キーボードを利用するべきなのか?

個人的には英語キーボードが好みなので、好きなものを使えば良いと思います。
しかし、「日本語入力をするなら日本語キーボード」という記述をみかけます。
かな入力をするのであれば何もいいません。日本語キーボードにしましょう。

しかし、もしローマ字入力を利用するのであれば、おそらくそれは**全角/半角キー**がないから入力の切り替えが面倒、といっているだけに聞こえます。

fcitx/ibus/scim/uim/etc. といった(A)のソフトウェアには、直接/日本語入力を切り替えるために全角/半角キーのみが設定されているものがあるため、そう感じるかもしれません。

しかし、そもそも各言語入力を切り替えるためのソフトウェアですから、当然英語キーボードでも切り替えができるように設定できます。Shift+Spaceのようなkinput2由来の伝統的な切り替え方法も可能ですし、Ctrl+Spaceのようなモダンなショートカットも設定次第です。

個々のAnthy/Mozcといった言語変換プログラム(B)の方は、そもそも切り替えた後の仕事を担当するので、普通はこれらの設定パネルを調べても切り替え方法は変更できないので注意しましょう。

※ 日本語周りは話題がつきないので、このセクションは独立した項目にする予定です。

# スクリーンキャプチャの取り方

* **scrot**コマンドを利用する (-dでdelayオプションが利用可能)

# コマンドラインの様子をビデオに変換する

* [asciinenama](https://asciinema.org/) を利用する

# ピンヘッダから電源を取ったり、センサーを接続したい

* [公式GPIO解説](https://www.raspberrypi.org/documentation/usage/gpio/)
* [Raspberry Pi3/Schematic](https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md)

![gpio-numbers-pi2.png](https://qiita-image-store.s3.amazonaws.com/0/78296/ed5a28ab-1c03-349c-4d31-a8483691c294.png)
※図は[公式GPIO解説](https://www.raspberrypi.org/documentation/usage/gpio/)より転載 (ライセンスは[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/))

※先日高校生からトランジスタって何のために使うんですか?と物理の教科書を見せてもらいました。微弱な電流で、大電流を流せるからスピーカーとか鳴らせるよ教えられても「直接流せないの?」と思ったりして納得できなかったみたいです。
この場合、CPU内部の回路は狭く大電流は流せません。そのCPUと繋っているピンヘッダにも大くの電流を流すことはできないためトランジスタやMOSFETを使って外部機器を操作しましょう。

# 初心者が上達していくためには

ポイントはいくつかあると思います。

1. 操作に慣れる
2. 個々のアプリケーションの扱いに慣れる
3. そもそものコンピュータの動きを学ぶ

## 操作に慣れる、ために
最近はスマートフォンなどの操作に慣れてしまい、キーボードの操作に慣れない人達が増えているという意見もあります。以前から機械操作が苦手は一定数いますし、そういう人でもスマートフォンは日常的に使う現状をみて、キーボードの操作に不慣れな人が目立つだけなのかなと思っています。

とはいえ、コマンドをシェル(shell)から打ち込む機会は多いので、キーボードの扱いは慣れた方が良いと感じる機会は多いです。

Raspberry Pi3でも使えるタイピングゲームや学習教材がお勧めです。

* 【初心者】[Balloon Popper](https://www.quicktypingtest.com/game/balloon-popper)
* 【中級者以上】[Ztype(シューティング)](https://zty.pe/)
* 【全対象】[e-typing 英語タイピング](https://www.e-typing.ne.jp/english/)

基本的な操作はキーボード操作だけではないですが、キーボード操作が苦にならなくなると様々な場面で仕事が早くなります。

腱鞘炎などから身体を守るためにも、マウスを使う機会を極力減らす事を目指してみることで、基本的なショートカットやscreen/tmuxなどの端末エミュレーターを学ぼうというモチベーションになると思います。

## 個々のアプリケーションの扱いに慣れる、ために

Raspberry Piに標準搭載されているアプリケーションは、FullタイプのRaspbianイメージを選択した場合には様々なものがあります。

それぞれのアプリケーションの名前などで検索をして扱いを学ぶ必要がありますし、あるアプリで修得したスキルは他のアプリでは役に立たない場合もあるでしょう。

またアプリの操作自体は、アプリが新しくなった際に変更される場合もあります。

こういった場合は、**何か調べるという動作がどれくらい気楽に出来るか**が上達するかを分けるポイントだと思います。

調べる事を楽しめるぐらい、深入りせず、楽しく使えているか、という点に気をつけて使うのが良いと思います。

その反面、viのように古典的でありながら、長い間提供され続けているアプリケーションも存在します。使い方が難しいといわれる事もありますが、多くの環境で共通に採用されるソフトウェアの扱いは間違いなく初学者と中～上級者を隔てる壁の一つでもあるので挑戦してみてください。

## そもそものコンピュータの動きを学ぶ、ために

Raspberry Piのような教育向けコンピュータを作る側に立てるように、その中身がどのような仕組みになっているか学習したいと思うかもしれません。

Raspberry Piは壊しても数千円で購入できるため、消耗品としては高価ですが、コンピュータとしては安価に感じます。

そのため学習用の機材としては最適なのですが、動作を学ぶにはARM組み込み系固有の知識が必要な場合もあり、何を学ぶかにもよりますが、初学者には一般的なパソコン上で仮想化アプリ(VMware,VirtualBox,etc.)を利用して、LinuxなどのUNIX系OSについて学ぶべきではないかと感じる機会も多いです。

まずはRaspibanから卒業して、[公式サイトのダウンロード](https://www.raspberrypi.org/downloads)の下にある様々なOS/Distributionを試してみましょう。

## Raspberry Piに関連した情報を検索する時の考慮点

RaspbianはDebianと呼ばれるLinuxディストリビューションが土台になっていますが、ネットワーク関連の設定や、LXDEを採用しているデスクトップ環境などが独特になっています。

何か検索をすると通常のパソコンなどで動いているDebian/Linuxを対象とした説明や、1年以上前の古いRaspberry Piに対する説明が散見されます。アプリの操作などは大変参考になりますが、システムレベルの情報は、独特で、日々更新されてもいるRaspberry Piには相応しくない説明である場合があります。

情報を得る場合、システムの動作に関すること(ネットワーク、センサーの接続方法、etc.)は、まずRaspberry Piをキーワードに含めるなどし、固有の情報を探すようにしましょう。

# その他、適宜追加 (予定)