Saturday, May 24, 2014

JDK 8 on Raspberry Pi

先日Oracle Java Day Tokyo 2014に参加し、JavaをRaspberry Pi上で動かしているセッションを見て、自分のRaspberry PiにもJava 8を入れてみましたので、その手順について書きます。

JDK 8のダウンロード

まず、OracleのWebサイトに行き、Raspberry Pi向けのJDK 8をダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-arm-downloads-2187472.html (2014/5/23時点)

ダウンロードしたら解凍して環境を整えます。
$ sudo tar zxvf jdk-8-linux-arm-vfp-hflt.gz -C /opt
$ sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1
$ sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1
$ sudo update-alternatives --install /usr/bin/jjs jjs /opt/jdk1.8.0/bin/jjs 1
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config jjs
必要に応じて、jarコマンド等も設定するとよいかもしれません。

Javaコンパイル

以下のプログラムを入力して、コンパイルができることを確認してみます。

Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java");
    }
}

コンパイルはjavacコマンドを使います。
$ javac Hello.java

コンパイルが成功すると、Hello.classが作成されます。
自分の環境では10秒程度かかりましたが、Javaは“Write once, run anywhere”なので、PCでコンパイルしても構わないでしょう。

Java実行

コンパイルで作成されたHello.classを実行してみましょう。
$ java Hello
Hello, Java

JavaScript (Nashorn)

Java VM上で、JavaScriptを動かすことができます。
alert()はWebブラウザで動くJavaScript用のため使えませんが、print()で標準出力を出すことができます。
$ jjs
jjs> print("Hello, Nashorn")
Hello, Nashorn
jjs>

JavaScript上からJavaのライブラリが呼べるのがとても魅力的です。
jjs> print(java.lang.System.currentTimeMillis());
1400923899236
jjs>

jjsコマンドの引数にファイル名を指定すれば、ファイルに記述されたプログラムが実行できますし、Node.jsのように、実行可能なJavaScriptを書くことができます。

test.js
#!/usr/bin/env jjs
print("test");

ファイルに実行権限を付与して、実行してみます。
$ chmod +x test.js
$ ./hello.js
test

JDK 8の導入手順は、以下を参考にさせていただきました。
http://www.rpiblog.com/2014/03/installing-oracle-jdk-8-on-raspberry-pi.html

Tuesday, April 29, 2014

MiniDLNA on Raspberry Pi

自宅のファイルサーバに記録した動画を自宅内で、PC、スマートフォン、iPadなどのタブレット、テレビから観えるようにしたい。それを実現する一つに、DLNA (Digital Living Network Alliance)があります。
ここでは、Raspberry PiをDLNAサーバとして使用するために、『miniDLNA』を導入する手順を説明します。

miniDLNAのインストールは、以下のコマンドを実行するだけです。
$ sudo apt-get install minidlna

インストールが終わったら、設定ファイルを編集してください。
$ sudo nano /etc/minidlna.conf

編集する項目として、以下を挙げておきます。
  • media_dir=<メディアデータの格納ディレクトリ>
  • friendly_name=<DLNAクライアントから見える名前(例:Raspberry Pi)>
  • inotify=yes
  • notify_interval=895
inotify項目はデフォルトでコメントアウトされています。このコメントアウトを取り除けば、ディレクトリ内のファイル追加・削除がデータベースに反映されます。変更を検知する周期は、notify_interval項目で設定できます。
media_dirは、Raspberry PiのSDカードの容量は限りがあるので、ファイルサーバ上のディレクトリをマウントして、マウントしたディレクトリを指定するとよいでしょう。

設定ファイルを編集したら、サービスを起動します。
サービスの起動・停止は、以下のコマンドで行えます。
$ sudo service minidlna start
$ sudo service minidlna stop

PCやiPadなどのDLNAクライアントソフトから、動画が見れれば成功です。

PCやAndroid用のDLNAクライアントとして、XBMCというソフトがあるようです。
iPadで無料で使えるDLNAクライアントとして、Media Link Player Liteなどがあります。

Friday, April 4, 2014

Orion on Raspberry Pi

Raspberry PiにOrionをインストールしてみた。
Orionはnode.js上で動作するので、node.jsが入っていなければここを参考に入れておこう。

ちなみに、自分のRaspberry Piには以下のバージョンを入れている。
$ node -v
v0.10.24

インストールはとてもシンプルで、インストール先ディレクトリを用意してrpmコマンドを叩くだけである。
$ mkdir orion
$ cd orion
$ npm install orion --production

インストールが終わったら設定ファイルorion.confを編集しておこう。
$ nano node_modules/orion/orion.conf

自分は、workspaceを以下のディレクトリにすることにした。
workspace=/home/pi/workspace

設定が終わったらさっそくOrionを起動してみよう。
npm start orion

「Listening on port 8081...」と出たら、Webブラウザからアクセスしてみよう。
http://<Raspberry Piのホスト名またはIPアドレス>:8081/


Thursday, November 7, 2013

Coder for Raspberry Pi

2013年9月にGoogleから『Coder for Raspberry Pi』と呼ばれるWebアプリケーションの開発環境が発表されたので、今さらながら使ってみました。

セットアップ

公開されているイメージファイルをSDカードに書き込んでRaspberry Piを起動するだけです。PCからChromeなどのWebブラウザを使ってRaspberry Piにアクセスすれば、Webアプリケーションの開発環境が使用できるようになります。
Windows PCから接続する場合、Raspberry Piを検索できるように『Bonjour Print Services for Windows』を入れる方法を推奨しています。ただ、DHCPで割り当てられるIPアドレスがあらかじめ分かっているか、“/etc/network/interfaces”を編集して固定IPアドレスに設定すれば、Bonjour Print Servicesを入れる必要はありません。


Raspberry Pi単体での開発

Raspberry Pi自体がPCなので、ほかのPCを使わずに開発できれば便利です。Raspberry Piはもともと教育用途につくられたこともあるので、子ども向けのプログラミング教室を開催する場合などに重宝しそうです。
そこで、Raspberry PiにChromeのオープンソース版である『Chromium』をインストールして、開発環境に接続してみました。
$ sudo apt-get install chromium

Raspberry Pi上でChromiumを起動して、URLに『https://localhost:8081/』と指定してください。Raspberry Pi自身からもで開発環境にアクセスすることができます!


ただし、ちょっと動きがもっさりしていて、現時点で開発に使うのはちょっと厳しそうな感じです。今後、性能が改善されてゆけばいいですね!


Friday, July 19, 2013

Express - Web application framework for Node.js

以前、Raspberry Pi上にNode.jsをインストールする手順を紹介した。
Node.jsには、expressと呼ばれるWebアプリケーションフレームワークがあるらしいので、どんなものか一度使ってみたいと思い、その手順を書き残すことにした。

まず、今回のサンプル用Webアプリケーションを格納するディレクトリをつくってその中に移動しよう。
$ mkdir hello-world
$ cd hello-world

つづいて、今回つくるアプリケーション用にnpmの設定ファイル“package.json”を用意する。
$ nano package.json
内容は以下の通りとする。
{
  "name": "hello-world",
  "description": "hello world test app",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x"
  }
}
つぎに、以下のコマンドを実行して、必要なパッケージをインストールしよう。
$ npm install

これでexpress関連のモジュールが使えるようになったので、サンプルアプリケーションを書いてみよう。
$ nano app.js
内容はとりあえず、以下の通りで。
var express = require('express');
var app = express();

app.get('/hello.txt', function(req, res){
  res.send('Hello World');
});

app.listen(3000);
console.log('Listening on port 3000');
さて、実行してみよう。
$ node app.js
Listening on port 3000
ブラウザから、以下にアクセスしてみよう。
http://<Raspberry Piのホスト名またはIPアドレス>:3000/hello.txt

Thursday, July 18, 2013

Installing Node.js on Raspberry Pi

以前、apt-getコマンドを使用してRaspberry PiにNode.jsを入れる手順を書いた。しかしながら、2013年7月の時点で、この手順でインストールされるバージョンが古いため、最新バージョンを入れる手順を改めて書くことにする。
すでに古いNode.jsを入れてしまった方は申し訳ないが、アンインストールした上で、以下の手順を実行してほしい。

まず、インストール先ディレクトリを作成しておこう。
$ sudo mkdir -p /opt/node

Node.jsのサイトからRaspberry Pi用にビルドされたモジュールをダウンロードして、先ほど作成したインストール先ディレクトリにコピーする。ここで示したv0.11.4はあくまでも執筆時点の最新であるため、適宜、読み替えていただきたい。
$ wget http://nodejs.org/dist/v0.11.4/node-v0.11.4-linux-arm-pi.tar.gz 
$ tar zxvf node-v0.11.4-linux-arm-pi
$ sudo cp -r node-v0.11.4-linux-arm-pi/* /opt/node

このままではコマンドにパスが通っていないので、/etc/profileを編集してパスを通しておこう。
$ sudo nano /etc/profile
“export PATH”と書かれた行の手前に、以下の内容を追加しよう。
# Node.js
NODE_JS_HOME="/opt/node"
PATH="$PATH:$NODE_JS_HOME/bin"

パスが反映されたのは次回ログイン時なので、いったんログアウトすればよい。
ログインして、コマンドが実行できれば成功。バージョンも最新だ。
$ node -v
v0.11.4

今回、紹介した手順は、http://blog.rueedlinger.ch/2013/03/raspberry-pi-and-nodejs-basic-setup/を参考にさせていただいた。

Sunday, July 7, 2013

Remote Desktop Connection to Raspberry Pi

今日は、Windowsの『リモート デスクトップ接続』を使用して、Raspberry Pi (Raspbian OS)をGUI操作できるようにする方法について書くことにしよう。
Raspberry Piが家庭用テレビに接続されていて、家族がテレビ番組を見ているときにどうしてもGUI操作したい場合や、そもそもRaspberry Piがディスプレイにつながっていない場合に便利だろう。
Raspberry Pi側をリモートデスクトップ接続に対応させるには、xrdpというアプリケーションをインストールすればよい。
sudo apt-get install xrdp
インストールが終わったら、Raspberry Piに接続してみよう。[コンピューター]欄にホスト名またはIPアドレスを入れる。接続時に訊かれるユーザ名には、ふだん使う“pi”ユーザと、そのパスワードを指定すればよいだろう。



以下のようにRaspberry Piのデスクトップ画面が表示されれば成功だ。
たいていの作業はssh接続で済んでしまうってあまり画面を使うことはないけれど、たとえば、Scratchでプログラムを描きたい場合などに重宝するかもしれない。


リモート デスクトップ接続のオプションで画面サイズを調整したり、接続情報を保存しておいたりすると、次回からの起動に便利だろう。

注意事項がひとつ。
このままではキーのマッピングが英語キーボードとなっているので、記号などがうまく入力できないので、サーバ側で設定を行う必要がある。
先人の知恵を拝借して、以下に示すページの手順に従って、設定ファイルを/etc/xrdpディレクトリに格納することで、この問題は解決する。素晴らしい、ありがとう。

■xrdp 0.5.0 の日本語キーマップ

ひと昔前は、Linuxサーバなどにリモート接続する際はVNCというソフトを使うのが一般的で、Windows側にもVNCクライアントをインストールする必要があったりして面倒くさい感じがあったけれど、標準の『リモート デスクトップ接続』を使えるので手間がかからなくて便利である。