自作武器を作ろうず

<!-- リトルカブにハイコンプ組んだりペットボトルロケットでロケットランチャー作ったり、Arduinoで赤外線ラジコン作ったり、JavaScriptでしょーもないアプリ作ったり、「レビュー」の名のもとに意味もなく買ってしまったガジェットの自慢する暇な大学生のつれづれなるままなブログです。 -->


ETロボコンの開発を無理矢理Chromebookでやってみた(C++)

広告

【~前回までのあらすじ~】
  窓や林檎を尻目に Dell Chromebook 11 で開発を続け,CS大会当日も「リーダー,今日までChromebookで開発してきました」ってドヤったのに…懇親会では思いのほか誰にも触れてもらえず,今やこの無駄ノウハウも過去のものと忘れ去られようとしてた…

否,「ETロボコン Advent Calendar 2016」が有るではないかッ!!!
qiita.com



ChromebookETロボコンの開発を行うノウハウについて

はじめまして!

  デベロッパー部門 プライマリークラス 沖縄地区
  琉球大学 工学部 機械システム工学科チーム「ロボんちゅ」
のリーダーです。

  と,いう訳で,こんな誰得情報どうすんねんという声も聞こえますが ChromebookETロボコンの開発を行うノウハウについて書きたいと思います。

  なお,ココに書いてある情報を試してみてお手持ちの Chromebook が壊れる等損害が発生しても当方は一切の責任を負いません。ちゃんとデータは Googleドライブにバックアップした上で,自己責任で行ってください。


【目次】


開発環境の構築方法

  やってることを端的に説明しますと Chromebook(ChromeOS) の上に Ubuntuデュアルブートして,Ubuntu 上で開発というからくりです。
  お気づきかと思いますが,いろんな弊害が出てきます。これは後ほど。


では具体的な手順です。

1. ChromebookUbuntu が動くようにする
  まずはこちらの記事を参考に ChromebookUbuntu 14.04 を導入します。今回は Unity(desktop)を使いました。
chromesoku.com
  本当は GariumuOS とか Xubuntu Lubuntu 等の軽量デスクトップを使いたかったのですが,何故かインストール出来なかったりクラッシュしたり,挙句の果てには ChromeOS 自体まともに動かなくなったりという弊害が出まくったので Unity にしました(Fig.1)。

f:id:teppodone:20161210143632p:plain:w300
Fig.1 Ubuntu 14.04 Unity desktop が Chromebook 上で動くの図


2. UbuntuETロボコンC++の開発環境を導入
  次に,この Ubuntu の上に開発環境を構築します。こちらは,Win機 や Mac に開発環境を導入するのと同様,TOPPERSさんのページを参考にして Linux 用の開発環境を構築してください。gcc コンパイラ等はすでに Ubuntuに 入っているのでTOPPERSさんのページにしたがって構築すればOKです。

DevEnv – EV3 Platform
DevEnvLinux – EV3 Platform

見てください,こんな感じでちゃんとコンパイルできます(Fig.2)。


  同様に,astah*も入れます。こちらのastah*さん公式ページ「Linuxで astah*を使う」に従って導入すればインストール…出来ませんでした。
http://astah.change-vision.com/ja/feature/astah-on-linux.htmlastah.change-vision.com
  どうも「Java環境のダウンロードとインストール」が上記ページのリンク先のページの手法では上手く行かなかったので,下記のQiitaのページ「UbuntuOracle Java 8 (PPA)をインストールする(ubuntu) - Qiita」に従って Java のインストールを行いました。
qiita.com

  そして後は最初のastah*さん公式ページ「Linuxで astah*を使う」に従って「debパッケージを用いたastah* のインストール」からインストールの続きを行うことで成功しました。(Fig.2)

f:id:teppodone:20161210144121p:plain:w300f:id:teppodone:20161210144640p:plain:w300
Fig.2 ChromebookにインストールしたUbuntu上でコンパイルとastah*が出来るの図

しかしastah*は盛大にバグります。これは後ほど。


3. うまく動かすためのコツ
  「ブラウザだけしか動かさないなら貧弱なメモリやCPUでもいいよねっ!」「全部クラウドに保存してしまえばストレージなんて殆ど無くても大丈夫っ!!」という何とも偏った思想の Chromebook に,無理やり Ubunut の Unity を入れるのですから,そのままの運用では動作はもっさり。ストレージも圧迫しまくりです。あとファンクションキーも足りんし。

  これらを,改善していきます。


その1.いらないアプリを削除する
  Ubuntu 14.04 をインストールした時点でプリインストールアプリがたくさん入ってますが,ETロボコンの開発には絶対に使わないアプリはちゃっちゃと削除してストレージを開放しましょう。

  ただココで注意ですが,Bluetooth等のシステムの中核を担うアプリをうっかり消しちゃうと,「システム設定」そのものが消えてしまうことがあったりするので注意が必要です。


その2.無理やりファンクションキーを設置する
  さて,ChromebookUbuntu を入れた場合,キーボードの一番上の列のキー(音量とか照度とか全画面表示とかのキー)がファンクションキーとして割り当てられるのですが,Dell Chromebook 11 にはキーが10個しかありません。すなわち F1 ~ F10 までしか無いのです。

  これじゃ困るということで全画面表示を担う F11 キーを あんま使わない「かなキー」に持ってくるシェルを作りましょう。

#setF11.sh

bash -c "echo keycode  100 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11 F11 F11 XF86Switch_VT_11 > ~/.Xmodmap" 
xmodmap ~/.Xmodmap

  あとはコレを Ubuntu 起動時に実行させるようにしたり,ターミナルから直接 sh setF11.sh すれば,かなキーが F11 になってくれます。


  この様にキーの上にシールも貼っておくと使いやすいでしょう(Fig.3)。

Fig.3 無理矢理F11を実装するマンの図


その3.入れておくと捗るアプリ
・Geany(テキストエディタ)
  ソフトウエアセンターで「Geany」と検索したら出てきます。軽量テキストエディタを謳ってるだけあって快適に動いてくれますし,括弧の補完機能等も充実してます(Fig.4)。
f:id:teppodone:20161210150210p:plain:w300
Fig.4 Geanyはいいぞの図


その4.おまじない
  背面にコレ貼って「得体の知れないPC感」を出し,周りを威嚇しましょう。素材置いとくので好きに印刷して使ってください(fig.5)。


f:id:teppodone:20161209200833p:plain:w320
Fig.5 Machromebook の図


わざわざ Chromebook で開発を行うメリット/デメリット

  皆さんココが一番気になるトコでしょう。

メリット
Cygwinよりもコンパイルがビミョーに早い
  Win機のスペックにもよりけりですが, ナマのLinuxを動かしてgccコンパイルするのでハードウエアスペックが同じならばコンパイルに要する時間はCygwinよりも短いです。


人気者になれる なれませんでした。
   窓でもなく林檎でもないこの Chromebook様で開発したなんて言えば,懇親会ではたちまち人気者になれるに違いない…とおもってたのですが,誰にもそんなこと言われませんでした。かなC。


威嚇になる
  かもしれません。隣の奴がよく意味の分からないOSで開発してて,更に上記のステッカーなんて貼ってるのを見た日には「…何だこいつ,よく分からんけどやべぇ」って…なるかもしれません。


デメリット
重い
  この一言に尽きます。ただでさえ雀の涙しか無いRAMとCPUで Ubuntu を動かしてるんですから,ChromeOS を動かすようなサクサク感はまず無いです。


狭い
  「全部クラウド上に保存すればストレージなんか無くても良くね??」という最高にロックなコンセプトのもとに出来たのがこの Chromebook 。なけなしのストレージにUbuntuを入れてその上に JAVAJDK とか Geany だのアレコレ入れるのですからお察しです。(Fig.6)
f:id:teppodone:20161210150737p:plain
Fig.6 ストレージ使いすぎて怒られるの図


astah* がたまにバグる
  10分に1回ぐらいのペースでこんな感じになります。一回こうなってしまったら astah* を再起動させるまで治りません。(Fig.7)

f:id:teppodone:20161210151351p:plain:w300
Fig.7 astah*がバグるの図

  最終的に僕は Chromebook でのモデル図作成は諦め,家置きのWindows機に astah* 入れてパワポと共にモデル図を作成することにしました。astah*はこの半年間,とてもお世話になりました。モデリング初学者の僕でも,実際にモデル図を作りながら学ぶことの出来た素晴らしいツールだっただけに,いつかは是非とも Chromebook (ChromeOS上で)でも動くようになって欲しいです。


Bluetooth動かん
  これはもしかしたら Chromebook そのもののハードや Ubuntu のバージョンによりけりかもしれませんが,少なくとも僕の Dell Chromebook 11 においては Ubuntu 側から Bluetooth の認識が出来ませんでした。この Dell Chromebook 11 にはもともと Bluetooth が入っており, ChromeOS 上では当たり前に動いてくれるのですが…Ubuntu側 では Bluetooth の存在を認識してくれません。

  くそう仕方ねぇなと BluetoothのUSBドングル買ってきたのですがコレもダメ。あとからログを取って判明したことなのですが,BluetoothのUSBドングルに至っては「何かUSBに刺さってる」って反応すら検出されませんでした。あべし!!

  結局僕らは,チームメンバのWin機(富士通FMV)の Bluetooth でリモートスタートさせることに。なんか負けた気がします。


結局 Chromebook で開発するのってどうなん??

はっきり言って,何にも良いことありません。
とってもオススメできません。
身をもって体験しました。

  悪いことは言いません。手元に Windowsモバイルノートが有れば大人しく Linuxデュアルブート又は Cygwin 入れましょう。間違っても Chromebook みたいな端末で無理やり開発しようなんて思ってはいけません。


Q. じゃぁ,この記事はどんな人におすすめなのか

A. 持ち運び用ノートが Chromebook しかない人
僕がまさにこれです。

  まだ Chromebook が出た頃。すなわち「Win機よりも格安のノートPC!!」として売られてた頃(まだ格安 Win 機がメジャーじゃなかった頃)にその安さと軽さとオリジナリティそして変態感に魅せられて出先でのサブ機として Chromebook を買ったのです。

  そしてこの度,ETロボコンの開発環境を構築必要が出てきて…しかし持ち運びノートに Win機 は無いという状況だったので,こんな誰得ノウハウの記事が出来上がってしまったわけですね。

  いわゆる北風がバイキングを作ったぞ的なアレ。



  以上で,ChromebookETロボコンC++ の開発環境を構築して,実際に運用してみたレポートを終わりたいと思います。
  最後まで読んでいただきありがとうございました。


それでは皆さん!よいChromebookライフを!!
f:id:teppodone:20161210155354p:plain:w300
f:id:teppodone:20170329225025p:plain