まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

2015/02

先日の速攻レビューの時には知らなかったのですが、最新の BlackBerry OS では Android のネイティブアプリが(ある程度)動くような互換性があるようです。

ということは、BlackBerry ネイティブにないアプリを Android アプリで補完することもできる!?

その実用性を試そうとしたのですが、「では BlackBerry でどうやって Android アプリを入手するのか?」という別の問題が発生しました。Android でアプリを入手する一般的な方法は Google PLAY ストアアプリからですが、BlackBerry にはこのアプリがありません。。

が、その点で BlackBerry Passport には強い味方が最初からインストールされていました:
IMG_20150211_103554



アマゾン独自の Android 向け AppStore である Amazon Appstore アプリです。なんとこいつがプリインストールされていました。Google PLAY ストアほど充実しているわけではありませんが、これを使うことでアンドロイドアプリを探してインストールすることができるようです!
IMG_20150211_103600



早速試してみました。まずは待望のアングリーバード、こちらは正方形スクリーンでの描画も含めて問題なさそうでした:
IMG_20150211_103511


もう1つはジョルテ。こちらは起動には問題ないのですが、正方形の画面に未対応のようで、全体的に左に寄った画面構成になってました。ただ実用性に問題はなさそうです:
IMG_20150211_103537


この方法で SSH クライアント(vSSH) も VNC クライアント(Mocha VNC Lite) も入手できました。


残念ながら、やはり Amazon Appstore での品揃えはやはり限られていて、例えば LINE などはありません。別のもう少し高度というか、面倒な方法で apk ファイルを入手/転送する必要がありそうです。具体的には MyAppSharer あたりを使うことになりそう。ただそれでもアプリが正しく動く保証はありません。個別に使って調べないと。

とはいえ、この Android アプリとの互換性があるというのは、かなり強力な朗報です。BlackBerry 端末を使う以上はなんらかの形で活用することになりそう。



 

以前から「欲しい!」と思っていた BlackBerry 端末を手に入れました! d(o^ )

元々は一昨年にインドネシアを訪れた時に、「やけに BlackBerry 端末を使ってる人が多い気がする・・」と感じたことが興味を持ったキッカケでした。 日本では以前にはドコモからも発売されていましたが 2013 年に撤退。世界的にもシェアを落としています。インドネシアでもシェアを落としてはいますが、ずっと以前からシェア No.1 のようです。これは(日本で言えばソフトバンクが iPhone を優遇するプランを立ててシェアを伸ばしたようなイメージで)インドネシアの大手キャリアが BlackBerry 端末向けのお得な優遇プランと、BlackBerry 利用者同士で使えるメッセンジャーサービスの便利さを打ち出しました。それでまずは上流階級の間で広まり、一般層からは「憧れのアイテム」となり、いつしかキャズムを超えて一気に火が付いたようなシェア増加になったようでした。一時はインドネシアの(スマホ全体、ではなく)携帯電話全体の40%強が BlackBerry だったこともあったそうです。

最近は安い Android に押されつつある中でもまだ BlackBerry 利用者は多く、BlackBerry コミュニティの中でもかなり特異な広まりを見せているのがインドネシアだ、と聞いたことがありました。 僕が SNS を通じて知り合ったインドネシアの友人の多くが BlackBerry を使っており、なんとなくの興味をぼんやりと持ち続けていました。


そんな中で発売された超カッコいい機種が、今回購入を決意した BlackBerry Passport でした。北米でも久しぶりにヒットした BlackBerry 端末と聞いています。もちろん SIM フリー版で、日本の安い SIM カードでも LTE 通信が可能です(ちなみに国際郵便課税だけで 2900 円かかりました。これまでにも同じように海外からスマホ買ったことありますが、この額は過去最高・・・):




とりあえず入手して1日使ってみました。気付いたことをレポートします。

まずサイズ。名前の通り「パスポート」とほぼ同じサイズで、スマートフォンとしては大きめだと思います。現にこれをしばらく使った後で iPhone5 を操作すると、かなりコンパクトに感じました:
写真


クラシカルな BlackBerry の代名詞とも言える「キーボード一体型」でありながら、ほぼ正方形のタッチスクリーンも装備しています。ちなみにキーボードエリア全体にもタッチセンサーがあり、キーボード部分を軽く上下になぞると上下スクロールもできます(もちろんスクリーンを上下にドラッグしても同じことができます)。


ホーム画面はこんな感じ。視認性はそんなに悪くありません。タッチ感度はまあまあですが、iPhone と比較するとやや劣る、という感じ:
IMG_20150208_153633


いわゆる「ファブレット」のレベルで画面が大きいので、画像や動画はかなり綺麗に見れます(画像は YouTube 視聴中のもの):
IMG_20150208_181723



日本語の利用を心配している方もいますが、まったく問題ありません。セットアップの段階から日本語を選択することができ、その後は問題なく使えています:
 IMG_20150208_153655


ネットワーク機能はひと通り標準装備してます。いわゆるテザリングも「モバイルホットスポット」という名前で装備しています:
IMG_20150208_160221



まだ1日しか使ってないことに加え、これは自分にとって初 BlackBerry 端末なので勝手が分からず苦労している、という面も少なからずあるかもしれませんが、1点だけちょっと気になっていることを挙げておきます。

それは「アプリ」です。iPhone や Android と比較して充実していないことは覚悟していました。ただそれでも「想像していた以上に少ない」と感じています。Facebook や Twitter といった世界的に有名なアプリはマーケットにある(というか標準でもインストールされている)のですが、こういうアプリもインストールしたいなあ、というアプリが結構な確率で見つかりません。見つかっても有料アプリであることが多く、無料でそこそこの環境を用意するのが結構難しいという印象を持っています。例えば LINE はないと思います。SSH は最初有料版しか見つけることができませんでした(後に "IT Manager" という無料ツール内に SSH 機能が含まれていることを知って解決しました)。

一方でウェブブラウザは iPhone や Android 向けに最適化されたものが期待通りに動いてます。なので BlackBerry の世界ではアプリの充実がまだ厳しく、、当面はモバイルウェブページの活用が重要になるかもしれない、と感じています。



なお、オンラインユーザーマニュアルは日本語でも提供されています:
ユーザーガイド BlackBerry Passport Smartphone - 10.3


マウスコンピュータのスティック型PC "MS-NH1" を購入しました:
http://www.mouse-jp.co.jp/abest/m-stick_nh1/ 

超小型の本体に 32GB のストレージが内蔵されていて、Windows 8.1 がインストールされています。
外部インターフェースとして、無線LANを内蔵しており、それ以外には Bluetooth と標準 USB ポート1つ、そしてマイクロSDカードによるストレージ拡張が可能です。サウンドの入出力は持っていません。これらとは別に mini-B USB ポートが1つ用意されていますが、これは電源供給用であって、外部機器の接続には使えません。

大きな特徴として HDMI ポート、というか、挿す部分(苦笑)があります。ここをテレビなどの HDMI 入力ポートに差し込むと、そのテレビがこの Windows マシンのディスプレイに早変わりする、というものです。

最初のセットアップを終え、無事に使えるようになりました。テレビを見ながら、入力切り替えをすればテレビがそのままインターネットの使えるパソコンに早変わりする(そして YouTube やニコ動、Hulu といった動画をテレビ画面で見ることもできますし、普通にパソコンとしてメールやワープロ用途で使うこともできます)、というなかなか面白い商品です。 最近流行りのラズベリーパイなどと異なり、ちゃんと Windows 8.1 が動く、という点も単なる小型端末として完成度が高いと思っています。


で、このセットアップを通じて少しだけ気になったというか、今から買おうと思っている人向けの気が付きにくい注意点を2つほど書いておきます:

1 セットアップ時の制約がかなり大きい

この機種に限りませんが、初回起動時に Windows のセットアップを行います。そこではマシン名を指定したり、Outlook.com のアカウントを指定したり、無線LANの設定でパスワードを入力したり、・・・とキーボードでないとできないことがいくつかあります。

その一方で、「次へ」ボタンを押したり、いくつかの選択肢から選んだり、とマウスの方がオペレーション的に楽な項目も少なくありません(Windows 8.1 なのでタッチパネルを想定しているのかもしれませんが、今回は普通のテレビを使うのでタッチインターフェースは使えません)。つまりセットアップ時にマウスもキーボードも使いたいのです。

ところが、これらの外部機器接続用に使える標準 USB ポートは1つだけです。Bluetooth も用意されていますが、初期セットアップの時点では(未ペアリング状態なので)まだ使えないはずです。

つまり初期セットアップ時にキーボードもマウスも使いたいけど USB ポートは1つしかない、というジレンマが発生します。USB を分岐する USB ハブ的なものもありますが、これはこれで電源供給への影響もあり、かならず2つ使える保証はありません。

USB ハブで試してみた上で判断するのもいいですが、個人的には「トラックボール一体型 USB キーボード」の利用をおすすめします。僕自身はテレビの前にキーボードケーブルを出したくなかったので、無線タイプのトラックボール一体型キーボードを使っています:
ELECOM TK-FDP021

2 サウンド出力の問題

セットアップも終わり、YouTube を見ようとして「音が出ない」ことに気付きました。テレビの画面には映像が出力されているのに、その音は何も聞こえません。

それもそのはず。このスティック PC 自体にはスピーカーもマイクも、その接続ポートもないので、音の出しようがないのです。Windows 的には問題なく処理しているけど、音として出てくる機材が繋がってない、という感じ。

ではスティック PC では音は出せないのかというと、そんなことはありません。HDMI の接続先(つまりテレビ)が音声入力機能もサポートしている機器であれば、Windows の設定によってサウンドをテレビから出すこともできます。

「んー、でも、まあ最近のテレビならそのくらいの機能はサポートしてるんじゃないの?」と都合よく考え、自分はよく調べずに購入したのですが、調べてみるとうちのテレビはなんと HDMI 音声入力未対応!がーん・・・

というわけで、「テレビでウェブの動画も見たい!」ためにこれの購入を考えている人は、そのテレビが HDMI の音声入力機能を持っているかどうかを調べておくことを強くオススメします。










どこからでもアクセスできるクラウド上に自分のデスクトップ環境があると便利ですよね。

その OS が Windows であれば、(外部からアクセスできるようにするだけなので)環境構築自体はさほど難しくないと思います。ただ Windows の仮想環境は(Windows サーバーのライセンス代が無条件で付いてくるため)安くありません。業務上の選択肢としてはまだしも、個人の環境としてはちと非現実的です。 一方、CentOS で実現できると、多くのクラウドベンダーで無料期間が用意されていたり、安く使えたりするので個人開発者としては嬉しいわけです。一方で、主にサーバー用途向けに用意されているインスタンス上にデスクトップクライアント環境を用意するのはちょっと面倒ではあります。そもそもサーバー用途ならコマンドラインインターフェースで充分なのですが、デスクトップクライアントとなるとウィンドウシステム必須です。日本語環境が用意されているとも限りません。なので、これらからのインストールが必要になります。


というわけで、クラウド上の CentOS サーバーを、日本語デスクトップ環境に改造するまでの手続きを紹介します。具体的には IDCF クラウドの CentOS 6(64bit) を使い、以下のパッケージを追加インストールします(サーバー用途でも使いそうなパッケージはこのリストからは抜いています。必要であれば別途導入してください):
パッケージ名用途
X Window Systemウィンドウシステム
DesktopGNOME デスクトップ環境
Japanese Support日本語環境
Tiger VNC ServerVNC サーバー
LibreOfficeオフィススイート
Eclipse + JDK統合開発環境
Firefoxウェブブラウザ
Alacarteメニューカスタマイズ用ツール


まず最初に、今回作成するデスクトップ環境へは VNC を使って外部からウィンドウシステムにアクセスします。というわけで VNC 用にポートフォワード設定が必要になります。今回は 5901 番ポートで設定するので、各種クラウドのファイアウォールやポートフォワード設定で 5901 番ポートを通すように設定してください(図は IDCF クラウドでのファイアウォール設定画面ですが、使っている環境で同様の設定をしてください):
2015020603


次に日本語デスクトップ環境を構築するためのモジュールを導入します。SSH で root ログインし、以下の手順を実行します:
(リスト内の上3つのグループモジュールをまとめて導入)
# yum groupinstall "X Window System" "Desktop" "Japanese Support"

ここまでで X Window System と GNOME デスクトップ、そして日本語環境が導入されます。されますが、このままでは SSH でのみリモートアクセスできるだけで、X Window の画面を開く術がありません。せっかく X Window まで導入したので VNC を使ってウィンドウシステムを利用できるようにしましょう。このサーバーインスタンス内には VNC サーバーを導入して、5901 番ポートでアクセスできるようセットアップします:
(VNC サーバーを導入)
# yum install tigervnc-server

導入した VNC サーバーを設定します。今回は root 権限で VNC サーバーにアクセスする例を紹介しますが、一般ユーザーでアクセスする場合も同様にしてそのユーザーを指定して行ってください:
(VNC サーバーの設定変更)
# vi /etc/sysconfig/vncservers

(以下の2行のコメントを外して編集(この例では root で接続))
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp"

(VNC サーバーの接続パスワードを設定) # vncpasswd (パスワードを2回入力して設定)

設定後、改めて VNC サーバーを起動します:
(VNC サーバーの起動)
# /etc/init.d/vncserver start

起動に成功すると ~/.vnc/xstartup というファイルが作成されるので、このファイルを編集して GNOME セッションの画面をそのまま VNC で流せるように変更します:
(VNC サーバーの設定変更)
# vi ~/.vnc/xstartup

(#!/bin/sh の直下に以下の一行を追加)
export LANG="ja_JP.UTF-8"

  :
  :

(最後の2行をコメントして、その下に1行追加)
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
gnome-session &

最後に VNC サーバーの自動起動を ON にして、サーバーインスタンス自体を再起動します:
(VNC サーバーの自動起動)
# chkconfig vncserver on

(再起動)
# shutdown -r now

サーバーが再起動した頃を見計らって、今度は VNC クライアント(ここでは UltraVNC プロジェクトの UltraVNC Viewer)を使ってアクセスしてみます。UltraVNC Viewer をインストール&起動して、接続情報に CentOS マシンの IP アドレス:1 を入力します(最後はコロンと1):
2015020604


パスワードを聞かれたら、上記 vncpasswd コマンド実行時に指定したパスワードを入力します:
2015020605


これで X Window System 上の GNOME デスクトップ画面が表示されるはずです。ここからは GUI が使えるようになりました!:
2015020606


この時点で日本語表示はできますが、まだ日本語入力はできないと思います。そこで日本語入力のための設定を行います。メニューから システム - 設定 - 入力メソッド を選択します:
2015020607


「入力メソッド設定ツール」が起動します。「入力メソッドの機能を有効にする」にチェックが入っていて、かつ入力メソッドに「IBus を使用する」が選択されていることを確認した上で「入力メソッドの個人設定」をクリックします:
2015020608


「IBusの設定」ウィンドウが開きます。「インプットメソッド」タブ内に「日本語 - Anthy」が含まれていることを確認して「閉じる」をクリックします:
2015020609


1つ前の画面に戻り、「閉じる」をクリックして設定ツールを終了します:
2015020610


今設定した内容を反映させるため、再度システムを再起動します。メニューの アプリケーション - システムツール - 端末を選んでターミナル画面を開き、再起動コマンドを入力します:
2015020611

(再起動)
# shutdown -r now

再起動した頃を見計らって、再度 UltraVNC Viewer でアクセス&ログインします。そして同様に端末を出した後にキーボードの CTRL+SPACE を押すと、画面上部のキーボード部分が日本語入力マークに切り替わり、同時にローマ字による日本語入力が可能になります。アルファベット入力に戻すには再度 CTRL+SPACE を押します:
2015020612


ここまでで、ほぼ日本語デスクトップ環境が整いました。後は必要そうな GUI アプリケーションを yum でインストールします:
(GUIアプリ(ここでは FireFox と LibreOffice と JDK)を導入)
# yum install firefox libreoffice java-1.7.0-openjdk-devel

実はこの後、統合開発環境の Eclipse を導入します。Eclipse 自体も yum で(yum install eclipse で)導入できるのですが、yum だと最新版でないことに加え、メニューのカスタマイズ方法と合わせて紹介したいので、Eclipse だけは別途最新版をダウンロードして導入します。Eclipse は不要であっても、ウィンドウのメニューに表示されないコマンドを表示させたい場合は以下の手順を参考にしてください。

改めて、この時点で FireFox, LibreOffice, JDK がインストールされて、メニューからも実行できるようになっているはずです:
2015020613
2015020614
2015020615


では改めて Eclipse をインストールします。最新版を導入したいので先ほど導入した FireFox を起動し、http://www.eclipse.org/downloads/ から最新版の Eclipse をダウンロードします:
2015020616


ダウンロードが完了すると(僕の環境では)eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz というファイルができているはずです(異なるファイル名の場合は適宜読み替えてください)。これを適当なディレクトリ(以下の例では /opt/ 以下)に展開します:
(/tmp/ 以下にダウンロードモジュールがある場合のコマンド例)
# cd /opt
# tar xzvf /tmp/eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz

これで /opt/eclipse/ というフォルダが作られ、その下に Eclipse 環境一式が作られているはずです。Eclipse 本体は /opt/eclipse/eclipse というファイルパスで実行できるようになっています。

ただ、この時点ではファイルを展開しただけなので、ウィンドウのメニューから Eclipse を実行することができません。yum で Eclipse をインストールすると、「プログラミング」メニュー内に Eclipse が作られる(ただし最新版ではない)ので、できれば同様に「プログラミング」メニュー内に Eclipse を追加したいものです。


というわけで、最後にメニューのカスタマイズ方法を紹介します。メニューのカスタマイズには alacarte というツールを使うと便利なので、まずは alacarte を yum でインストールして実行します:
(メニューカスタマイズツールを導入して)
# yum install alacarte

# alacarte

alacarte が起動すると、現在のメニュー内容が表示されます:
2015020617


今回は /opt/eclipse/eclipse を「プログラミング」メニュー内に追加したいので、左のメニューでは「プログラミング」を選択し、「新しいアイテム」ボタンをクリックします:
2015020618


追加したいアプリケーションの情報を入力します。種類はアプリケーション、名前は Eclipse 、そしてコマンドに実行コマンドの絶対ファイルパスを指定して、最後に「OK」ボタンをクリックします:
2015020619


1つ前の画面に戻り、「プログラミング」メニュー内に "Eclipse" が追加されたことを確認して「閉じる」をクリックします。これでメニューのカスタマイズができたはずです:
2015020620


実際にウィンドウのメニューを確認すると「プログラミング」メニュー内に "Eclipse" が追加されていることを確認できます:
 2015020621


実際に "Eclipse" を選択すると、指定された実行ファイルが呼び出されて Eclipse が起動するはずです:
2015020622


ざっとこんな感じ。一般的にはサーバー用途で使うクラウドの CentOS 環境に日本語デスクトップ環境を構築してメニューのカスタマイズまで行う手順を紹介しました。GUI へは VNC を使ってアクセスするので、Android や iPad などのタブレットにキーボードさえ付けておけば、後は各種 VNC クライアントをインストールしていれば、それらのモバイル環境からこのデスクトップ環境を呼び出して使うことだってできちゃいます。最近は Linux のデスクトップアプリケーションも充実してきており(個人的にはゲームだけがまだまだ、だと思ってます)、手軽にタブレットさえ持ち運んでいればそこそこ使えると思っています。

なお Amazon EC2 の場合、MarketPlace から CentOS を選んで導入すれば同様の手順で同じような環境が構築できると思っています。ただ Amazon AMI から提供される Amazon Linux の場合、X Window を導入できるかどうかは未確認です。 また、ここで紹介した手順は CentOS に限らず RHEL(RedHat Enterprise Linux) でも使えます。私自身は Power Linux の RHEL で同様のデスクトップ環境を構築したこともあるので、ある程度の所まではできると思っています。


私個人はここで紹介したアプリに加えて、GIMP とか Sublime Text とか IBM Notes とかといった GUI 前提のクライアントアプリケーションも導入して使ったりしています。ここで紹介しなかったアプリケーションについても、ここで紹介した方法の応用で導入できるのでは、と思っています。






Amazon EC2IDCF のサーバーインスタンスを使っていますが、どうしても気になるのはデフォルト状態ではスワップ領域が確保されていないことです:
2015020601


↑メモリは1GBで残り65MBほど。
 もうすぐメモリが足りなくなりそう、でもスワップ領域はゼロ・・・


特に高速化のために memcached とかを使うアプリを動かそうとすると、どうしてもメモリが不足しがちになります。スワップ領域がない状態で、一瞬でもメモリが足りなくなってしまうとアウトです。回避するにはなんとかしてスワップ領域を確保する必要があります。


EC2 や IDCF クラウドでは静的にスワップ領域が確保されているわけではないため、EBS などの追加ディスクを使う方法もありますが、これだとスワップ領域のために料金がかかる上、EBS は I/O にも課金されるので、スワップファイルを作る先としてはコスト的に不利です。

というわけで、インスタンスの起動時にディスクの空き部分を使ってスワップファイルを作ってスワップ領域とする、という方法を紹介します。これなら(ディスクに空きがあれば、の前提が必要ですが)ディスクを追加せずにスワップ領域を確保することができます。

具体的には /etc/rc.local あたりに以下のような内容を追加します。この例ではスワップサイズをメモリ量から動的に変更するようにしていますが、あくまで一例です。固定値を書き込んでしまってもいいと思います(青字は僕のコメント):
  :
  :
SWAPFILENAME=/swap.img スワップファイル名
MEMSIZE=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'` 現在のメモリ量(KB)を取得

メモリ量からスワップ領域のサイズを決定
if [ $MEMSIZE -lt 1012293 ]; then
  SIZE=${MEMSIZE}k メモリ 1GB 以下の場合、スワップ領域はメモリサイズと同じ
elif [ $MEMSIZE -lt 2097152 ]; then
  SIZE=${((MEMSIZE * 2))}k メモリ 2GB 以下の場合、スワップ領域はメモリサイズの倍
elif [ $MEMSIZE -lt 8388608 ]; then
  SIZE=${MEMSIZE}k メモリ 8GB 以下の場合、スワップ領域はメモリサイズと同じ
elif [ $MEMSIZE -lt 67108864 ]; then
  SIZE=${((MEMSIZE / 2))}k メモリ 64GB 以下の場合、スワップ領域はメモリサイズの半分
else
  SIZE=4194304k メモリ 64GB 以上の場合、スワップ領域は8GB
fi

スワップファイルを作成してスワップオン
fallocate -l $SIZE $SWAPFILENAME && mkswap $SWAPFILENAME && swapon $SWAPFILENAME
  :
  :

/etc/rc.local は他の初期化スクリプトが実行された最後に実行される設定コマンドファイルです。なのでサービスやらの自動実行が行われた最後にこのコマンドが実行され、/swap.img というスワップファイルが作成されて、スワップ領域として動き始めます。このスワップファイルのサイズは物理メモリサイズに応じて動的に切り替わるようにしています。


これでサーバーインスタンスを再起動すると、今度は起動時に上記のスクリプトが実行され、スワップ領域が動的に作成されます。これで少し安心:
2015020602



(参考)
http://dev.classmethod.jp/cloud/ec2linux-swap-bestpractice/

 

このページのトップヘ