google colaboratoryを学校のレポートで使ってみた話

もともとjupyter notebookでレポートを書くのを試してみたりしていたのだが、エディタソフト用がローカルネットワーク内でしか使えないことに不満を覚えていたときに出会ったのがgoogle colaboratory。 googleのサーバで動いているのでログインするだけで学校のpcからでもスマホからでも常に最新版を見ることができる。 データサイエンティストの層から人気があったのだが、数式、グラフの挿入もきれいだし、markdownを書き込むこともできるのでいろいろなことに使用することができそうだと思った。 重いレポートにいきなり使用して実用に耐えなかったらば徹夜確定しかねないので時間がったときに軽いレポートで実際に使えるか一通り試してみたのが本記事。結果としてはmarkdownでは限界があったのでhtmlを書き込むという裏技っぽいテクニックが必要だったのでそれについて。
めんどくさいので今後colabって略すことがあると思う

実際にやってみたものを公開用に簡略化したもののリンクが以下
レポートのコピー - Google ドライブ
googleにログインすると上部にアプリケーションで開くと表示されるはず

今までに書いたノートまとめ
GitHub - sakakendo0321/notebook

google colaboratoryを使用する理由

word特有の型崩れがない

今まで使っていたword卒業したい理由として、画像を挿入したり、改行コードを入れたりしたときに意図しない場所に入ってしまい収拾がつかないことがあるのがある。またgoogle driveにアップロードしてgoogle documentで閲覧するとwordで編集した状態から崩れていることがある。 その点colabではすべてがコードして管理されており、ブラックボックスになっていないので突然意味不明な沼にはまる心配がないのは大きいと思っている

googleが運用してる

もともとのjupyter notebookでは自分でサーバを建てないといけなかったがcolabではインターネット環境があればどこでも編集できるようになった。またgoogleが運用したことによって、ほかのサービスとの連結が強固になった。例えば共有リンクを渡すことでほかのpcから同時に閲覧、編集することができる。またgoogle drive,githubでの管理もワンクリックでできるのでスマホからの閲覧、編集履歴の閲覧もできる。

tex,python,markdown,htmlで書ける

多数の言語をサポートしているので、綺麗な図表、数式の挿入が簡単になっている。 今までwordでグラフを挿入する場合はexcelを勉強しなければいけなかったが、普段使っている言語を使用することで学習コストを削減できる。また初心者にもわかりやすい言語といわれており、インストールの必要もないのでpython学習用の環境にしてもよいと思う。またtexは書きこむとすぐに更新されるのでかっこの数を間違えた時のリカバリも早く済む。コマンドのtexではpdfに変換して、ビューアを起動してと手間が多いはず。何より環境構築がめんどくさかった。
先頭に!を付けるとbashコマンドの実行ができるので一応cの実行もできる。(ちょっと無理があると思うけど) f:id:sakakendo0321:20180506180804p:plain
pipとかpythonのライブラリインストールのために使うらしい。

!echo '#include"main.c"'>main.c;cat main.c;gcc main.c -o a.out;./a.out
こんな感じのコマンドを投げると、ちゃんと怒ってくれる。  

実際に使ってみてわかったこと、苦労したこと

文字列を右寄せしたいときなどにmarkdownのシフト演算子では微調整ができなかった。また右寄せとアンダーバーを同時にすることができなかった。

markdownでは内部的にhtmlに変換しているので(はず、実際に文献を読んだわけではないが、markdown内でbrやhを入れてもちゃんと仕事してくれているのできっとそういうことなのだと思う) 右寄せは <div class="center"> アンダーバーは<u>を使うことで解決した。これによりmarkdownの入れ子問題を解決した。 f:id:sakakendo0321:20180506174026p:plain f:id:sakakendo0321:20180506173510p:plain

印刷する際にheader,footerのリンク、ページ数、日付等が意図しないところに出る。

pdfに印刷するときに詳細設定のoptionからheader,footerのチェックを外すと表示が消える。

改ページの位置が意図していない

brをtext cellに大量に入れることで改行の位置を無理やり変えた。

matplotlibのラベルの設定とかで苦労した

特に裏技とかではなく、ただの知識不足。 以下のサイトが参考になった。 python-remrin.hatenadiary.jp 表示する軸の値 : plt.xticks([-2*np.pi,-1*np.pi,0,np.pi,6.28],['-2π','-π','0','π','2π'])
表示する範囲 : plt.xlim([-2*np.pi,2*np.pi])
ラベルの文字列 : plt.xlabel("t[s]")
出力する図のサイズ : plt.figure( figsize=(15,6)) とかってのを使った。大体これできれいになると思う。

pandasの表の表示ができない

jupyter notebookの記事ではできると書いてあったがcolabではできなかった。これに関しては外部エディタを使って画像を挿入するか、markdownかtextで何とかするしかないように思われる。

参考文献

markdown,texでお世話になった記事

markdownの書き方

日本語版最速!? jupyter notebookをgoogleが神改造 colaboratoryについてまとめてみた。 - Aidemy Tech Blog

texの記法

LaTeXコマンド集

jupyter notebookとgoogle colaboratoryの関係について

日本語版最速!? jupyter notebookをgoogleが神改造 colaboratoryについてまとめてみた。 - Aidemy Tech Blog

2017/06/14 大垂水峠・相模湖

学校が休みだったので大垂水峠を往復してきた。休憩がなかったからか、相模湖方面に向かうほうがはるかに大変だった印象。 帰りは一定のリズムで登ったので息も切れることなく登れた。 1.5Lの炭酸水をもってそのうち1Lを飲み切った。相模湖駅にて給水して合計2L飲んだ。 行きも帰りも狭間のセブンイレブンで休憩した。ただで休憩するのは申し訳なかったので帰りは100円のアイスコーヒーMを飲んだ。 持久力が欲しいから遅筋繊維に筋トレを絞っていきたいんだが、目安の測り方がわからない。

8:45 自宅(発)

    85min

10:10 狭間(着)

10:20 狭間(発)

    55min

11:15 相模湖駅(着)

12:30 相模湖駅(発)

    60 min

13:30 狭間(着)

14:00 狭間(発)

    100 min

15:40 自宅(着)

https://latlonglab.yahoo.co.jp/route/watch?id=23468d0c0b6012159fe37b1a2d7afb30

yahooのこのサイトが標高も出してくれるからいいかな

組み込みマイスターのためのlinux チュートリアル

まだ書き終わっていない。テスト期間終わったらぼちぼち続きかく。

 開発環境構築

OS

今のところRaspibian

Python

python3

uinput

uinput moduleが必要

以下のpythonのライブラリからマウス,キーボードの位置を操作できる

https://github.com/tuomasjjrasanen/python-uinput

suinput.hをincludeしてuinput_fdにwriteしているらしい libevdev: Main Page

https://01.org/linuxgraphics/gfx-docs/drm/input/uinput.html

leap motion SDK

linux用 Desktop Setup — Leap Motion

vim

vim plugin

Shell

おすすめはfish shell

https://fishshell.com/

その他

c言語開発環境

gcc make

‘’‘ git clone https://github.com/tuomasjjrasanen/python-uinput

uinput

modprobe uinput

package

vim,gcc,python3,git,make

‘’'

組み込みマイスター 2017年度

やること

leap motionでマウスの座標を変えて,パソコンを操作したり,leap motionでジェスチャーが検出されたときRaspberryPiもしくはArduinoから赤外線の信号を送信して,家電を制御するのもよさげ,ラジコンを制御するのもいいかも.VR上の操作をしてもよさげだけどVRのアプリを作るときはUnityを使わなければいけないらしく,それはlinuxではできなさそう.

結局のところはあまり決まっていない

開発環境

linux

Desktop Setup — Leap Motion

Raspberry Pi 3BでLeap Motionを使う|Penta creation

windows

マウス操作に関するもの

linux

linuxではuinputというkernel moduleを使うことでmouseをプログラムから移動させることができる. 見たことはないがCでもできるはず
python-uinput

windows

windows apiから移動させることができる ほかの言語からいけるかはわからない
win32API SetCursorPos

アプリケーションのUIについて

指の座標が見れたり,マウスの座標,通信状況等を見れてデバッグしやすい環境がほしいのでそのためのGUIのアプリケーションを作りたい.

  • tkinter 開発環境は作れた.よさげ

  • kivy UIはかっこいいらしいがRaspberry Piだとアプリが全画面でしか実行できず迷惑で使い物にならないのでボツ

voice UI

なんか指でいろいろ操作できるなら,声でも操作できると,操作性もいいし,それっぽさも増しそうなので使ってみたい 下のいずれもpythonだと思われる.未実験

Speech Recognizer julius

SpeechRecognizer

audio input/output library

使用言語

leapmotion対応言語
leap motion language

kinect対応言語
kinect language

開発環境

OS

今のところ少なくともkinectはUbuntuになりそう

言語

Gui,Voice,mouseなどにおいてライブラリが多く,開発が楽そうなのでPythonを使う予定

ハードウェア

実行環境をそれぞれに,いちいち作るのはめんどくさいので統一できるRaspberry Piがよさげだと思う.

Raspberry Pi2

実験の結果,処理能力が足りないためボツ

Raspberry pi3

未実験

予算

link price
yahoo 8000
amazon 10000