jupyter notebookでなんちゃってGUI
どうもはとバスです.最近は大学の研究室にいることが多いです.
今回は研究室でやったことについてです.
現在やっているのは自動車の自動走行です.
大学のレーザーカッターや3Dプリンターを使って,ある程度は車体ができたので,これからは実際に走行させ,データを収集するというところまで来ています.
そこでやろうとしたのがjupyter notebookを使用したコントロールです.
jupyter notebookに入っているのはpythonです.
pythonでよく使われるGUIツールの開発は,Tkinterというツールです.
これを使えばすぐにGUIツールを作ることができ.ボタンやスライダもすぐに作成できます.
さっそくこれを使ってコントローラを作ろうとしましたが.壁がありました.
jupyter notebookというのはssh接続でraspberry piと接続しています.
sshでは,原則ではGUIを飛ばしてくることはできず,エラーが出てしまいます.
そのために,他のライブラリを使用する必要がありました.
そこで出てくるのが, ipywidgets というライブラリです.
ipywidgetsって何よ
という話があります.そもそもこれは何かという話なのですが.jupyter notebookでインタラクティブなGUIを作成できます.
作成できるものとしては,ボタンやスライダや入力フォームなどを作成できます.
これが動くのはjupyter notebook上なので,Tkinterのように,GUIの画面を飛ばしてくる必要がなくなります.
これを使用することで,Raspberry piを同一LAN上で制御し,なおかつそれっぽいGUIを使用することができます.
ipywedgetsのドキュメントはこちら,ここを見れば一通り使うことはできると思います,
僕がまとめたipywedgetsのgithubはこちら,ここで一から解説するとなると修羅の道になると思うので,参考までにこちらをご覧ください.
ちなみに,これを使って,僕はラジコンのコントローラーを作成しました.
こちらがその動画です.
再び進捗です pic.twitter.com/qN4CsHXIPo
— 飛ばすはとバス (@flying_hato_bus) 2017年5月29日
PythonでCounting Sortした
たまには真面目に記事を書きます.
今大学でやっているアルゴリズムの授業で書いたものです.
実行速度で差をつけろ!というときは,CやC++などで書くのがメジャーで,Pythonはスクリプト言語で,逐次実行というところからすると,やはり遅くなってしまいます.
僕も大体の部分ではCを使って書いていたのですが,今回始めてPythonでじっくり書きました.
この大学のアルゴリズムの講義では会津大学のAOJというサイトを使用し,そこに用意されている問題をACさせることが,授業の課題という感じです.
今回の問題はこちら.
問題を要約すると,入力された数字を計数ソートにより昇順に並べ換えるという問題です.
これをするためには Counting sort という手法で数字を並べ換える必要があります.
やり方としては以下の通り
- キー(配列Aのデータ)を数え上げるための配列Cとソートのための作業用配列Bを用意する
- 配列Cを利用して,配列Aのデータの出現頻度を数える
- 配列Cが保持したキーの累積度数分布を求める
- (配列Cの)累積度数分布に従って配列Aから配列Bにデータをコピーする
- 必要な場合,配列Bから元の配列Aにデータをコピーする
累積度数分布って何ですか?
累積度数分布とは,その値がいくつあるか?という分布です. 例として,以下のような数列が与えられたとき.
1 5 2 3 1 1 3 3
この場合,要素数は8,分布が均等であれば,1~8がそれぞれ1つずつ存在することになります.
実際は重複がいくつかあり,この場合の累積度数分布は
こうなる,あとはこのリストを分布に沿ってコピーすればいいという感じです.
実際のコードはこんな感じ,sort内のmはカウントをする配列の数になる.count = [0]*(m)
の表記は,これだけで要素を0で初期化が出来ます.
ここまで言って何なんですが,このコードの中では累積度数分布を使用していません.
count[a] += 1
の部分で出現回数の計算をし,
for c in range(count[a]): array[i] = a i += 1
で値の出現回数だけ繰り返して元のリストに値をコピーしています.
サンプルにするとこんな感じ,print部分でごちゃごちゃしているのは出力に制限があり,それに当てはめた結果がこのようになりました.
ただただ出力したい場合は print(li)
で出力が可能です.
def counting_sort(array, maxval): m = maxval+100 count = [0] * (m) for a in array: count[a] += 1 i = 0 for a in range(m): for c in range(count[a]): array[i] = a i += 1 return array if __name__ == '__main__': N = int(input()) l = list(map(int, input().split())) a = 0 li = counting_sort(l, N) for a in range(N-1): print(li[a], end=" ") print(li[N-1])
実行例
入力1
6 1 1 4 5 1 4
出力1
1 1 1 4 4 5
入力2
10 2 2 2 1 1 5 5 9 1 1
出力2
1 1 1 1 2 2 2 5 5 9
入力3
100 0 33 43 62 29 0 8 52 56 56 19 11 51 43 5 8 93 30 66 69 32 17 47 72 68 80 23 49 92 64 69 51 27 90 24 35 20 44 10 62 84 63 1 10 36 76 31 29 97 75 91 90 44 34 25 29 30 27 26 43 34 4 60 49 20 56 32 72 13 90 9 19 5 95 49 27 19 97 24 96 49 56 84 93 45 7 6 9 54 52 65 83 38 1 90 30 37 95 56 63
出力3
0 0 1 1 4 5 5 6 7 8 8 9 9 10 10 11 13 17 19 19 19 20 20 23 24 24 25 26 27 27 27 29 29 29 30 30 30 31 32 32 33 34 34 35 36 37 38 43 43 43 44 44 45 47 49 49 49 49 51 51 52 52 54 56 56 56 56 56 60 62 62 63 63 64 65 66 68 69 69 72 72 75 76 80 83 84 84 90 90 90 90 91 92 93 93 95 95 96 97 97
このように間違いはなく,実際にソートがされているということが分かる.
トランプとサイゼリアに行って来た.
どうもはとバスです.先日このような記事を書き,このようなツイートをしました.
これはよくある,ドナルドトランプをサイゼリアに誘うツイートなのですが.
一緒にドナルドトランプとサイゼリアに行くことにしました.
ドナルドトランプはどうするの?
そう思う方もいると思います.しかし僕はPhotoshopというツールを使うことができます. 実際は,部屋の片隅でネズミに緑色の液体をかけて体液をチューチュー吸っているカブトムシが画像を編集してくれるのですが.
こういった画像を
こんな感じに切り取ります.
あとはこれを印刷して.
風景と一緒に写真を撮ってあげれば…….
あっ!ドナルドトランプだ!!!!!それも俺と会うっていうことでめちゃくちゃ笑ってくれてる!!!
どこからともなく The Star-Spangled Banner が再生されます.
これで一緒にトランプと遊ぶことができます.
待ち合わせの時間が10時45分でした.どうやら北朝鮮情勢で朝早くから遊ぶと言うことが難しいらしいです.
ちなみに待ち合わせの場所なのですが,福島県民なら誰でも知っている.郡山駅前です.
時間は午前10時45分.サイゼリアに行くにはちょっと早いです.
トランプが電気屋に行きたいって言ったので,出てすぐの場所にあるヨドバシカメラに行きます.
トランプ「ちょwwwww俺エゴサしてみたらwwwwwwwwネットに悪口書かれまくりワロタwwwwwwww」
トランプとヨドバシカメラで小一時間イチャイチャしたところで,そろそろお腹が減って来ました.
ドナルドトランプに運転させるのはさすがにいけません.腐っても一国の大統領.私が運転します. ヨドバシカメラがとても面白かったのか,ご満悦のご様子です.車で5分ほどのサイゼリアに行きます.
トランプ「そういえば,お前以外にpaiza_runもいたよな,今日は来ていないようだが,どうしたんだ?」
この質問がきました.実はpaiza_runも誘っていたのですが.
なぜかtwitterの鳥とオフ会しているそうなので,僕とトランプの二人でのサイゼリアになりました. paiza_runを介して会話をしていたため,二人共通の友人であるpaiza_runがいないことによって会話が困難かと思われました.
しかしさすが大統領.話をうまく繋げてくれます.ああ.この人になら,抱かれても…….
てな訳でサイゼリアの駐車場です.
僕の車はめちゃくちゃ安い車で変にビヨビヨします.運転免許を取って一年ということもあるかもしれません.変な運転をしたせいで気分を悪くしたのか.
トランプが死んだような表情をしていました.
サイゼリア店内
サイゼリア店内では真ん中の方の席に案内されました.窓際や壁際だとどうしても死角ができてしまうので,当然と言ってもいいでしょう.しかしトランプ,まだ車に酔っている様子.これはいけない,僕はドリンクバーを注文します.
炭酸水を飲んだら少し気分が安らかになったそうです.炭酸水って偉大ですね.
Amazon | クリスタルガイザー 500ml×24本 [並行輸入品] | 食品・飲料・お酒 通販
とりあえずトランプが持ち直したので注文をします.
僕は王道を征くミラノ風ドリア.トランプはパンチェッタのピザを選択.トランプ,さすがアメリカ人である.
前の大統領が夜になると見つけづらいなどの話をしていると,料理が来ました.
パンチェッタのピザです.おいしそうですね.
しかしトランプ,ここで吠える!
「日本人はこんな小さなピザで満足出来んのか!!!!お前らは国も小さければピザも小さいのか!?!?」
「お前の国が冷戦してる国に領土取られてんだろ,察しろよ」など言えないので適当に受け流します.
やっぱりアメリカ人ですね,ピザになるとここまで話がガチになる.そんな感じで騒いでいると,トランプがひらめきます.
「この切り方だとでっかいピザの一部みたいになるだろ?」
この言葉を聞いた瞬間に,「こいつクレヨンしんちゃんなんじゃないのか?」っていう考えが頭をよぎりました.
ちなみに余った部分はくれるというので僕が食べました.うまうま
トランプは満足してピザを食べていると思っていると,また吠えます.
「このピザには味が足りない!!!なんだよこれ!!!」
そうすると机の上にあるビンを突然掴みました.
こっ!
これはぁ〜〜!!
なんということでしょう,トランプはあのSalt Baeの真似をしました.
まさか,twitterで有名なあの人の真似をするとは……
そんなこんなで完食しました.
するとここで
トランプ「なんかデザート食いたいわ」
アイスを注文しました
運ばれて来ました.トランプ,これにメロンソーダを合わせます.
優勝!
なんか言ってましたが多分あっちの国のネットスラングかなんかなんでしょう.
そんなこんなで楽しいサイゼリアの時間を過ごして行きました.
そのあとは……
ゲームセンターに行ったり.
僕の部屋に行って入るなり人をダメにするソファに陣取ったりしてました.
意外に楽しかったので,画像編集に長けたサイバークカブトムシを持っている方はやってみるととても面白いですよ.
あとがき
サイゼリアで家族連れの方々に白い目で見られました.これだけならよかったのですが,幼稚園生くらいの男の子に「お兄ちゃん,何してるの〜?」って聞かれたことです.神経が太くないときついです.
ちなみに今回使用した画像はこちらです.
2017年最もスマートなクソリプを送る方法
みなさん,クソリプ,送ってますか?
いきなり意味のわからない言葉を書いてしまって申し訳ありません.とりあえず聞きたかったのは,みなさんが日頃どれくらいtwitterでクソリプを送っているかということです.
僕は日頃から,度々クソリプをフォロワーの方に送ってはブロックされるような生活をしております.
ところでこのクソリプ,相手に迷惑をかける以外にもちょっと難点があります.
ブロックされるとその人に二度とリプライを送れないんです.
いつも楽しくクソリプを飛ばしていた人が,キレやすい若者だったのでしょう,アカウントをブロックされることがあります.
ブロックされると,その人のツイートが見られなくなるほか,いままでにしてきたように,自由にクソリプを飛ばすことができなくなります.
致命傷です.
いままでできていたクソリプができなくなります.もうその人には,ブロックを解除してもらうしかリプライを送る方法がないんです…….
……
これって,地獄じゃないですか?
僕はそう感じます.
しかし,最近このようなツイートを見ました.
paiza_runを使えばブロックされたユーザーにもリプが送れるんです
paiza_runってそもそも何?
こう考える方もいらっしゃると思います.paiza_runというのは言うなれば「Twitter上でコードを送って実行できるアカウント」です.
仕組みとしては簡単.
まずは paiza_runのアカウントに向けてツイートをします. このとき,@を付ける以外にも#paiza_runを付けても構いません. あとは後ろに言語を指定して,プログラムを140字を超えない範囲で書くだけです.
これでなんでクソリプを飛ばせるのか
プログラム内では,定義された文字はなにも考えずに実行します.たとえば “@"という文字と"hogehoge"という文字を別の変数に格納して,表示する際に@という文字とhogehogeという文字を一緒に表示させてあげれば,paiza_runのアカウントがhogehogeという人にリプを飛ばすことができるというわけです.
ちなみにこのpaiza_rumは@とhogehogeというのを別に考えているので,@hogehogeでその人にリプが飛ばせるということを検知する機能がないということと等しいです.つまりこれを利用すれば直接リプライを送ることができない相手にpaiza_runを使用してリプライが飛ばせるということです.
テンプレ
僕はpythonくらいしか試してないため,pythonでのテンプレになります.
#paiza_run python: # -*- coding: utf-8 -*- s = "@" t = "相手のID " u = "言いたい言葉" print s + t + u
これをtwitterに貼り付けてツイートすればとりあえずは大丈夫なようです.(twitterで実際に動くことを確認しています)
これを使えば
アメリカの大統領のことをサイゼリアに誘うことができたり
アメリカの大統領とねんごろな関係に発展させることもできます.
ちなみに日米関係が悪化すると僕のせいになりかねないので,これ以上は遠慮ください.
また,この方法のデメリットとしては,相手がブロックしてもずっとクソリプを送ることが可能になるので,あまりにもしつこいリプを飛ばしていると訴訟問題にも発展する可能性があるのでご注意ください.
また,この方法は本来の使用用途を逸脱しています.これを仲間内などで楽しむぶんには構いませんが,これを悪用し相手の迷惑になるような行為や犯罪の踏み台などとして使用することはおやめください.
もしそのような問題が発生してもこのブログでは一切の責任を負いません.
2017/05/16 追記 もっと簡単な方法があったので追加しておきます.
#paiza_run python: # -*- coding: utf-8 -*- print "@" + "相手のID " + "言いたい言葉"
単にこれだけでクソリプを送ることができます. スクリプト言語の場合,このように表記を簡略化することができる場合が多いため,これ以上に簡易化できる方法があるかもしれませんね
jupyterのservice化で詰んでた話
今大学の研究的なもので,Raspberry piを使った自動走行ラジコンカーを製作している.
Twitterを見ている方ならわかると思うが,頭の工作精度が悪いためにボディの作成に手間取った.
それ以上に手間取ったのがRaspberry piの設定だった.春休み中に某社でインターン的なことをしている際は一人に一つRaspberry piが支給され,それでプログラムを組むなどしていた.
その会社の独自(といっても外部に公開しているけど)のGitbookでセットアップ方法などはあったけど,最初の設定は普通にできてバリバリコードを書いたり,ハードを作ったりしてた.
持つものを持っている会社だったので,とてもホワイトな職場で,将来はこんな会社で働きたいなとも思った.ここで書いた話をもっとしようとすると話が脱線すると思うので 会社の話は後々することにしようと思います.
本題
Raspberry piのJupyterの設定で四苦八苦していた.
今回の本題はこんな感じ,なんか色々とわからなくて意気消沈していたら,結局は初歩的なミスだったって話をしようと思います.
やりたかったこと
Raspberry pi上でJupyterを動かして手元のノートPCで
ブラウザ上からコードを書いて動かせるようにしたかった
実際に起きたこと
Gitbookのコードが間違っていた.
タイポ怖い
コピペ,ダメ絶対
簡単に言うとこんな感じ,プログラムに強いフレンズの友人がいなかったらタイポがあるってわからなかった怖さ. 一番悪いのはここら辺に気づけない僕の頭だと思いますが,一応Raspberry piでのJupyter の Service化について書こうと思います.
Raspberry piのJupyter Service化
要件としてはpythonが入っていること,pipがインストールされていることを前提に話をします.
pipが入っていなければ以下のコマンドでダウンロードを完了させてください.
$ sudo wget https://bootstrap.pypa.io/get-pip.py $ sudo python ./get-pip.py
多分これでpipが入るはず.入らなかったらググって,どうぞって感じ, これはjupyterが入る前の話なんですが,最初から入ってくるpipのバージョンがおっそろしく古いことがあって.
jupyterがインストールできないことがしばしばあるようです.jupyterが入らないって時はここを疑った方がいいかもしれません.
pip自体のバージョン確認は python -m pip -V
で確認ができます.
pipが入っていることが確認できたらjupyterのインストールです.sudo pip install jupyter
でインストールが可能です.
ちなみに10分以上かかるのでトイレにでも行っておいた方がいいと思います.
matplotlibなどを使いたい時にはswapが必要になるので個別に設定.まずはswapを停止.
$ sudo /etc/init.d/dphys-swapfile stop
swap領域が少なすぎるのでswap領域を上げてあげる.僕の使ってるRaspberry piは最初は100でした.
sudo vi /etc/dphys-swapfile
このファイルの中から CONF_SWAPSIZE
の部分を探して,1024くらいに値を変更してあげるとちょうどよいくらい.
これであとはswapを起動するだけ,
sudo /etc/init.d/dphys-swapfile start
無事に起動したらあとはrebootするとひとまずはOK.
今度は固定のtokenを設定する.
jupyter notebook --generate-config vim ~/.jupyter/jupyter_notebook_config.py
コンフィグファイルが作成されるのでそれを変更する.
コンフィグファイルを開いたら c.NotebookApp.tokenのコメントアウトを消し、任意のTokenを指定する。(今回はhatoと指定)
<例>
## Token used for authenticating first-time connections to the server. # # When no password is enabled, the default is to generate a new, random token. # # Setting to an empty string disables authentication altogether, which is NOT # RECOMMENDED. c.NotebookApp.token = 'hato'
vimだと/で検索ができるので便利,Emacsを使う人はやっぱりサイコパス
と言うわけでここでとりあえずjupyterは起動するようになったはず.
jupyter-notebook --ip= --config=/home/pi/.jupyter/jupyter_notebook_config.py
これで起動する(ブラウザが立ち上がる)
ちなみに同一LAN上にいると,別のデバイスのウェブ上からアクセスできる.
http://192.168.xxx.xxx:8888/
これでいける(xxxはifconfigなどで調べたraspberry piのIPを入れる).
この後にパスワードを入力するように求められるがこの場合先ほど設定したものを入れれば動く. 僕の場合tokenの部分でhatoとしているのでhatoと入力すれば良い.
僕はここまではできた.しかしこの先のService化でつまづいた.
service化
やることとしてはSystemedにしてservice化を有効にする.
/etc/sysyemd/system
以下に、jupyter.serviceを作成する。
jupyter.serviceのファイルの中身はこのようになる.
[Unit] Description = Jupyter Notebook [Service] PIDFile=/var/run/jupyter.pid ExecStart=/usr/local/bin/jupyter-notebook --ip= --config=/home/pi/.jupyter/jupyter_notebook_config.py User=pi Group=pi Restart=always RestartSec=10 WorkingDirectory=/home/pi/Documents Type=simple [Install] WantendBy=multi-user.target
このあと,設定を確認するために systemctl list-unit-files --type=service | grep jupyter
と打つ.すると
jupyter.service invalid
などと帰ってくるはず.これが帰って来ればjupyterのservice化はひとまずOK.
sudo systemctl enable jupyter
を打ち,サービスを有効化する.
けれど僕はここでエラーが起きた.
エラー文
エラー文はよく覚えていなかったが,言っていることが「さっき作ったjupyter.serviceのところの[Install]の部分でエラーがあるわ,multi-user.targetって何やねん」って感じ.とりあえずmulti-user.targetについて調べて色々やって見たがいまいち動いてくれない.これで3日溶かした.辛かった.もっと他の場所を見るべきだったのにここしか見ていなかった.
解決
3日たってもうまく動いてくれず,解決は困難だった.それ以外にもRaspberry piで固定IPをしようとしてみるもことごとくダメ(インターネットに繋がらなくなる,解決はOSを焼き直す以外にない).いきなりワイヤレスインターフェイスが吹っ飛ぶなどのエラーにも遭う.ちょっと精神がやばかった.他の研究室でバリバリやっている人と対比して自分の今の境遇にとてつもない劣等感を覚えた.物憂げな表情で学食にいた時に,フルスタックエンジニアの同期に会ったので今の状態を話して見たらjupyterの問題が一気に解決した.
間違っていたところ.
間違っていたのはmulti-user.targetではなかった.その前のWantendBy
の部分のタイポだった.そもそもここの部分が間違っているなんて思いもしなかった.本当はWantedBy
で,nが不要なだけだった.これで実行してみたら,普通に全部通ってちょっと放心状態になった.
まとめ
コピペ,ダメ絶対
ちなみに間違っていた部分は会社の方にslack経由で指摘した.このような被害を出さないためにも今回の記事を書いた.
解散しました
どうもこんにちは、昨日メジャーデビューを発表させていただきました、「Chip sets」の飛ばすはとバスです。
本日は、とても残念なお知らせをしなくてはなりません。
TV局ならびにクソみたいな2ちゃんねるまとめなどが報じているように、私たち「Chip sets」は
解散
という決断をいたしました。
ニコニコ動画で出会い、ネットで繋がった私たち、解散という決断をしたのも
全ては「音楽性の違い、環境」というものです。
ギターを勤めていた唯一の女の子 むらさん
彼女は先日のオフ会で出会った男性に言われた一言で、部屋から出てこなくなり楽器を触ることができなくなってしまいました。
ベースの大学生 クラウド
彼は壱番魔晄炉爆破のところで時間に間に合わず、爆発に巻き込まれベースを弾けなくなってしまいました。
ドラムの大学生 たかし
彼は友人の勧めで行ったイスラム国で出会った「ナシード」という宗教歌にはまってしまい、「ナシードには楽器を使ってはいけないんだ、楽器はそもそも悪魔からの問いかけだ」という「お前バンドの意味わかってんのか」と言いたくなるような音楽感へとなってしまいました。
指笛の会社員 のあう
彼は最近、練り物のメーカーに転職したらしいのですが、ちくわ笛の魅力に取り憑かれ、最近はメンバーのたかしと仲があまりよくありませんでした。
かくいうボーカルの僕も、今年度から朝の番組に犬として出演することが決定し、声帯を切除することを余儀なくされてしまいました。
真夏の車に放置されるのは怖いですが、これも僕が行きていくにはそうするしかありません。腹から声を出してもいいですが、朝の番組、そんなこともできません。
メンバーはこの春から、それぞれの道を歩み始めます。ぼくらはまだ「実生」です。
いつか皆様の前に戻ってこれるように、精一杯努力してまいります。
応援ありがとうございました。
ついにメジャーデビューします
みなさんどうもこんにちは、歌い手としてニコニコ動画で活動しています「Chip sets」ボーカル担当「飛ばすはとバス」です。
僕にとって4月1日は、記念すべき日となることになりました。
ファンの皆様、関係者皆様方の声援とフォローによって、私たち「Chip sets」は
メジャーデビューが決定いたしました!!!
全国のCDショップや音楽配信サービスで4月1日から販売、配信されるようになり、皆様の耳に届けることができるようになります。
ジャケット情報
今回ジャケットは私、はとバスが作成させていただきました。タイトルは「実生」、実生という意味は「種子から発芽したばかりの植物」です。
ニコニコ動画ではある程度の知名度を持っていると自負していますが、私たちは社会的に見ればまだまだひよっこ、芽を出したばかりの植物です。
植物は芽が出てから、雨風にさらされ、逆境の中も懸命に生きていきます。僕たちも知名度が低い逆境の中、一生懸命に歌おうと思います。
芽が出たばかりの僕たちを表すのに一番的確な単語は「実生」、いつか綺麗な花を咲かせることができるように精進して行こうと思います。
私たち4人の中で話し合った結果です。
曲目
1. Sprout 〜芽生えとともに〜 2. ボクラノ戦記 3. Latest 4. $$$$ 5. Ctrl+D (キョウセイシュウリョウ) 6. トケツ 7. 端数を数えて 8. charchar
サイト上にアップされている人気曲をピックアップしました。4人で初めて作った歌「$$$$」は思い出の曲、これはぜひとも入れたかった曲です。Sproutは僕たちの「芽生え」を冠した曲、新曲を皆様に聞かせたく、一番先頭に持ってきました。
僕たちのアンチ、「ノイズ」に対して言いたいことは、僕たちの「ノイズ」になってくれて、ありがとう。君たちのコメントが僕たちをここまで成長させてくれたという感謝の気持ちでいっぱいです。「○○な歌い方が嫌」、「この歌詞は意味がわからない」このようなコメントに耳を傾けて「Chip sets」がここまで来ることができました。
本当にありがとう!!!
最後に
これからの僕たちは何が起こるかわかりません。私たちの夢はこの世界に一石を投じること、これを目標にまずは一つのコンサート、全国ツアー、果ては武道館です。僕たちの将来を見守っていてください。
購入はこちら
- 出版社/メーカー: タカラトミー
- 発売日: 2008/07/20
- メディア: おもちゃ&ホビー
- 購入: 3人 クリック: 25回
- この商品を含むブログ (4件) を見る
- 出版社/メーカー: タカラトミー
- 発売日: 2016/05/21
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
- 出版社/メーカー: タカラトミー
- 発売日: 2008/07/20
- メディア: おもちゃ&ホビー
- 購入: 3人 クリック: 25回
- この商品を含むブログ (4件) を見る