Python Twitterのメモ
Python-Twitterの細かい説明が無くソースコードを読んだりTwitter APIの規格を読む必要があります。
ちょっとメモのため残しておきます。
Modules Documentation — python-twitter 3.1 documentation
Status
Tilelineを取得したときなど、ツイートのひとつひとつはStatusと呼ばれる単位で管理されています。これに含まれる情報の一覧です。
AsDict | このオブジェクトの辞書形式表現 |
---|---|
AsJsonString | このオブジェクトのJSON文字列形式 |
NewFromJsonDict | |
contributors | このアカウントをcontributorsとして運営するユーザの一覧 |
coordinates | ユーザやアプリによって報告された緯度経度など |
created_at | ツイートされた時間。世界標準時(UTC)で表記 |
created_at_in_seconds | ツイートされた時間を秒数で表記 |
favorite_count | likeされたおおよその回数 |
favorited | このユーザによってlikeされたかどうか(true/false) |
geo | 使わない。corrdinatesを代わりに使用する |
hashtags | |
id | このツイートにつけられた固有のID |
id_str | idの文字列表現 |
in_reply_to_screen_name | このツイートがリプライの場合、元ツイートを書いた人のスクリーン名 |
in_reply_to_status_id | このツイートがリプライの場合、元ツイートのID |
in_reply_to_user_id | このツイートがリプライの場合、元ツイートを書いた人のユーザID |
lang | 機械的に検知されたこのツイートの言語(BCP47形式) |
location | |
media | |
param_defaults | |
place | このツイートが関連づけられた場所 |
possibly_sensitive | このツイートが(sensitive)と判断されたかどうか(true/false) |
retweet_count | リツイートされた回数 |
retweeted | このユーザによってリツイートされたかどうか |
retweeted_status | |
scopes | プロモーションツイートで使われる模様 |
source | |
text | このツイートのテキスト(UTF-8形式) |
truncated | ツイートは140文字で短縮されたかどうか |
urls | |
user | このツイートをポストしたユーザについての情報 |
user_mentions | このツイートでメンションされているユーザのIDとScreenName |
withheld_copyright | DCMAの申し立てで保留されているかどうか(true/false) |
withheld_in_countries | 保留されている国を表す2文字のコードのリスト |
withheld_scope | 保留の範囲(userまたはstatus) |
Twitter公式の説明を参考にしました。
dev.twitter.com
User
ついでにuserの内容についても書いておきます。
created_at | ユーザアカウントの作成日時 |
---|---|
description | ユーザの自己紹介文 |
favourites_count | likeの数 |
followers_count | フォロワー数 |
friends_count | フォロー数 |
id | アカウントのID番号 |
lang | 言語 |
listed_count | このユーザがリストされている数 |
location | 場所 |
name | スクリーンに表示される名前 |
profile_background_color | |
profile_background_image_url | |
profile_image_url | ユーザのアイコン |
profile_link_color | |
profile_sidebar_fill_color | |
profile_text_color | プロファイルのテキスト |
screen_name | ログインID |
statuses_count | ツイート数 |
time_zone | タイムゾーン |
utc_offset | 世界標準時からの時差(日本は32400秒(+9時間)) |
Raspberry pi 3 + Python = Twitter Botの起動(とりあえず投稿するところまで)
Raspberry piの良いところは常時起動しても電気代があまりかからないところです。Raspi 3になって消費電力はやや増えましたけれども、それでもスマホより少し少ないくらいなので、24時間稼働していても心が痛みません。
常時起動の良さを活かしてTwitterのBotにしてみようということで、今回は起動部分を作ってみます。今回の作業はとっかかりのところだけですが、このくらいなら1時間ほどあればできるのでお手軽です。
Python Twitterモジュールのインストール
Twitterはユーザが凄く多いですから、自分で作らなくても配布されているものがたくさん見つかります。GitHubを探したらたくさんForkされているモジュールがあったので、これをお借りすることにしました。顔写真は作者さんなのでしょうか…… 熊……
インストールはsudo pipを使えば簡単です。
pi@pi3:~/twitter $ sudo pip install python-twitter Collecting python-twitter Downloading python-twitter-3.1.tar.gz (80kB) 100% |????????????????????????????????| 81kB 1.2MB/s Collecting future (from python-twitter) Downloading future-0.15.2.tar.gz (1.6MB) 100% |????????????????????????????????| 1.6MB 154kB/s Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python2.7/dist-packages (from python-twitter) Collecting requests-oauthlib (from python-twitter) Downloading requests_oauthlib-0.6.2-py2.py3-none-any.whl Collecting oauthlib>=0.6.2 (from requests-oauthlib->python-twitter) Downloading oauthlib-1.1.2.tar.gz (111kB) 100% |????????????????????????????????| 112kB 1.2MB/s Building wheels for collected packages: python-twitter, future, oauthlib Running setup.py bdist_wheel for python-twitter ... done Stored in directory: /root/.cache/pip/wheels/22/1e/2e/506871fa7dc610616948e70812d5e2518cd89c13f757b98f6c Running setup.py bdist_wheel for future ... done Stored in directory: /root/.cache/pip/wheels/11/c5/d2/ad287de27d0f0d646f119dcffb921f4e63df128f28ab0a1bda Running setup.py bdist_wheel for oauthlib ... done Stored in directory: /root/.cache/pip/wheels/e6/be/43/e4a2ca8cb9c78fbd9b5b14b96cb7a5cc43f36bc11af5dfac5b Successfully built python-twitter future oauthlib Installing collected packages: future, oauthlib, requests-oauthlib, python-twitter Successfully installed future-0.15.2 oauthlib-1.1.2 python-twitter-3.1 requests-oauthlib-0.6.2 You are using pip version 8.1.1, however version 8.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. pi@pi3:~/twitter $ pip install --upgrade pip Collecting pip Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB) 100% |????????????????????????????????| 1.2MB 201kB/s Installing collected packages: pip Found existing installation: pip 8.1.1 Uninstalling pip-8.1.1: Exception: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 209, in main status = self.run(options, args) File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 317, in run prefix=options.prefix_path, File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 726, in install requirement.uninstall(auto_confirm=True) File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 746, in uninstall paths_to_remove.remove(auto_confirm) File "/usr/local/lib/python2.7/dist-packages/pip/req/req_uninstall.py", line 115, in remove renames(path, new_path) File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 267, in renames shutil.move(old, new) File "/usr/lib/python2.7/shutil.py", line 303, in move os.unlink(src) OSError: [Errno 13] 許可がありません: '/usr/bin/pip' You are using pip version 8.1.1, however version 8.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. pi@pi3:~/twitter $ sudo pip install --upgrade pip Collecting pip Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB) 100% |????????????????????????????????| 1.2MB 201kB/s Installing collected packages: pip Found existing installation: pip 8.1.1 Uninstalling pip-8.1.1: Successfully uninstalled pip-8.1.1 Successfully installed pip-8.1.2 pi@pi3:~/twitter $
Exampleを入手するためにソースコードもclone
pipでインストールすると、exampleは含まれていません。exampleの入手や、今後の開発の目的でソースも入手しておきます。
pi@pi3:~/twitter $ git clone https://github.com/bear/python-twitter/ Cloning into 'python-twitter'... remote: Counting objects: 2954, done. remote: Total 2954 (delta 0), reused 0 (delta 0), pack-reused 2954 Receiving objects: 100% (2954/2954), 7.24 MiB | 1.36 MiB/s, done. Resolving deltas: 100% (1873/1873), done. Checking connectivity... done. pi@pi3:~/twitter $
Twitterのアカウントに開発者登録する
さて、いまやろうとしていることは、既存のTwitter Botを利用者として使うということではなくて、自作の(とはいえソースのほとんどは借り物ですが)Botを動かそうということです。こういったときには、Twitter社に自分のプログラムを登録して、アクセス権をもらう必要があります。このため自分のTwitterアカウントを登録します。
私はこれまでTwitterアカウントに携帯電話の番号を登録していなかったのですが、開発者登録するときには必須となっていました。私のアカウントのうち、ほとんど使われていなかったWindVoice_enのほうにプログラムを登録しました。
開発者登録の方法は、上でソースをもらったbearさんのページに記載があるのでそれを参考にすればOKです。自分で作ろうとしているアプリケーションの名称、簡単な説明、アプリを登録しているURL(作成中の場合はとりあえず何でも埋めておけばいい(spaceholder)ようです)を記載すれば良いことになっています。
登録をすると、コンシューマーキー、コンシューマーシークレット、アクセストークン、アクセストークンシークレット、という4種類の鍵文字列がもらえます。これらは大事な情報なので他の人に知られてはいけません。パスワードに相当するものですね。以下の説明ではxで情報をつぶしてあります。
テストツイート
cloneしたソースコードのexample/tweet.pyがつぶやきを投稿するためのサンプルプログラムです。投稿したい文字列と一緒にアクセスキー4個を入力する必要があるのですが、長くて面倒なので、環境変数に登録してしまうことにしました。それができる機能がすでに織り込まれています。
pi@pi3:~/twitter/python-twitter/examples $ tail ~/.bashrc fi eval $(thefuck --alias) # Env for Raspi3Bot export TWEETUSERNAME=xxxxxxxxxxxxxxxxxxxxxxxxx export TWEETPASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx export TWEETACCESSKEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx export TWEETACCESSSECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx pi@pi3:~/twitter/python-twitter/examples $ pi@pi3:~/twitter/python-twitter/examples $ . ~/.bashrc
ホームディレクトリの.bascrcの末尾のところにこんな感じで4つの鍵を書いておきます(.bashrcはworld readableなので、アクセス権的に不安ですけど、このラズパイを使うのは私だけということで……)。これを記載したら、.bashrcを再読込させて、いよいよ投稿を試してみます。
pi@pi3:~/twitter/python-twitter/examples $ ./tweet.py "もう一度コメントに挑戦……" WindVoice_en just posted: もう一度コメントに挑戦…… pi@pi3:~/twitter/python-twitter/examples $
念のため自分のタイムラインを確認すると確かに投稿されていました。
まとめ
とりあえず投稿するところまでいけましたが、目的はコマンドラインからつぶやくことではなくて、これで常時起動のBotを作ることでした。場当たり的ですがここからがアイディアの出し所ですね。過去の投稿と合わせればセンサーからの読み取り値をつぶやくなどはすぐできると思いますが、しかし公に知らせて楽しい物でもないかも…… どうしたものか少し考えます。
Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
誰でもできるTwitter Botの作り方―人気キャラにつぶやかせる
- 作者: 鏑家経済研究所
- 出版社/メーカー: イーグルパブリシング
- 発売日: 2010/07/23
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 569回
- この商品を含むブログ (15件) を見る
Virtual Reality:とりあえずローエンドコース試しました
前回の日記で書いたような仮想現実環境は、PCから買い直しになるわけで、そう簡単に購入というわけにもいきません。コメントでMicrosoftのHoloLenzを紹介頂きましたが、限定的に販売されているようでどうも手に入れるのは無理そうです。
しかし手軽なのを探してみると、簡易なものも出回っていました。案ずるより産むが易しということで「とりあえず」手に入れてしまいましたよ。Tepoinn VR Shineconというゴーグルです。
類似した商品がいくつもAmazonに掲載されているのですが、これがランキング1位だったので、という安易な理由で注文しました。値段は3000円。初めて体験するにはこのくらいの値段の方が手を出しやすいですよね。
(テポインー)Tepoinn® 3D VRメガネ 超3D映像効果 3.5- 5.5インチのスマートフォンに適用
- 出版社/メーカー: Tepoinn
- メディア: エレクトロニクス
- この商品を含むブログを見る
開梱
内容物は本体と、ぺらっとした紙のマニュアルと、スタイラス2本。あとで書きますが、VR体験中は画面をタッチすることがほとんど不可能なので、このスタイラスはどういうシチュエーションで使うことを想定して同梱されているのか不明です。本体はこんな感じ。
本体上部のツメからフロントベゼルを外すことができます。外すとそこにiPhone等をセットするための場所があります。スマホを挟み込めるようにバネが仕込んであり、説明によれば3.5インチから6.0インチまでの画面サイズに対応しているそうです。私はiPhone6sを持っていますのでこれをセットすれば本体側は準備完了です。
なお、正面のVR SHINECONと書かれている部分は取り外すことができます。そうするとスマホのカメラレンズ部分が露出するので、部屋の様子を映せば拡張現実用途にも使えるようになっています。
上の写真は裏側です。私は眼鏡を使っているのですが、眼鏡をかけながらゴーグルをかぶるのは無理でした。また、鼻があたるところは結構大きめに隙間があいている(私の鼻が低いのか?)ので、外から光が漏れてきます。部屋を暗くするか、ここになにか詰め物でもすると良いと思います。顔に当たる部分のクッションは適度に柔らかく触り心地のいいものです。没入感を邪魔しない良い作りだと思いました。
両目で立体視する場合見やすいように調整する必要がある(そうでないとめまいがして気持ち悪いと思います)わけですが、このゴーグルでは2カ所調整ができるようになっています。ひとつは視差を調整するためのもので、眉間のあたりにダイヤルがあります。これを調整すると2個あるレンズが寄り目になったり離れたりします。もうひとつはスマホ画面との距離を調整するもので、こめかみのあたりにダイヤルがあります。調整できる範囲は1cmくらいですが、それでも結構違いを感じます。
テスト(なごみの耳かきVR)
この製品には専用のソフトは付いていません。世の中にあるVR関係のアプリを使ってね、ということのようです(そういう説明もありませんが)。App Storeで探してみたところ、真っ先に見つかったのがこれでした。
公式サイトにあるプロモーションムービーはこちらですね。というか基本的にこれだけしかない、単機能といってよいソフトのようです。
いえ、探したわけじゃ無くてホントにこれが最初に見つかったんです。ホントなんです…… っていいわけはさておきまして、インストールしてみました。どういうものかは動画を見ればわかると思いますので技術的な感想を。
できることできないこと
できること
驚くほどちゃんと立体視できます。障子の向こうでひらひら舞う落ち葉、近くにある茶器や床の間、女の子との距離感(見る角度によりポリゴン突き抜けることがありますが)が違和感なく見えます。音はスマホのスピーカーではなくイヤホンを推奨します。耳かきしてもらうというシチュエーションなのですが、右耳を下にするか左耳を下にするかで、ゴソゴソいう効果音や、声の聞こえてくる方向が変わります(よくできてますが、こういうところがしっかりしていないと没入感でませんよね)。
スマホのセンサが非常に精度のよいものなので、首を少し傾けたり振り向いたりしても即座に画面が付いてきます。ラグは感じません。あちこちよそ見をして楽しめます。体験そのものは短いです。5分くらいでしょうか? 無料のソフトですので不満はありません。よくできているなぁと素直に関心しました。
できないこと
気がついたことがいくつかあります。
- まず、移動は検知されません。検知されるのは方向と角度だけです。例えば女の子に近づこうとして身を乗り出しても、自分の位置は変わりません。そのあたりは、首を傾ける ⇒ 女の子の膝が近づいてくる、というようにプログラム的に作られているようでした。
- 次に、画面をタップできません。目の前にあるのですから当然と言えば当然ですが、スマホに直接触れないので、他のボタンを含めて操作する方法がありません。この問題を解決する方法が実装されていました。最後に空中に「終了しますか?」というようなUIが空中に浮かんでみえるのですが、「はい」「いいえ」のどちらかの選択肢を画面の真ん中に持ってきて少し維持すると、その選択肢が選ばれる、という仕組みになっていました。最初セットアップするときに「ゴーグルのふたを閉じてしまったらどう操作するんだ?」と疑問に思っていましたが、この解決方法はなかなかうまいと思いました。
そのほか感想
- Google cardboardというゴーグルが売られているようです。
Google Cardboard I/O 2015 ハコスコ社製
- 出版社/メーカー: ハコスコ
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
- YouTubeの360対応動画などもあり、スマホが一般に広く使われていることや手軽に試せる値段などを考えると、本格的なVR向けハードウェアよりもちらの方がずっと先に普及しそうです。しかし、映画1本をこのゴーグルでみるかというと、おそらくバッテリーが持たないため無理と思います。マニュアルには、充電しながら使わないこと、と注意が書かれていました(過熱の恐れがあるのだと思われます)。
- 操作が不便なのだけが難点ですが、イヤホンに付いているボリュームボタンとか「次の曲に進む」「戻る」ボタンを前提にしてアプリを作ってみる手もあるかもしれません。専用コントローラを前提にするのは、スマホを使う手軽さとはトレードオフになってしまうと思います。もしくは、ひょっとして声で操作するアプリの可能性はあるでしょうか。処理能力的に追いつくかどうかですが、簡単なキーワード操作くらいならなんとかならないかな。いずれにしても、スマホが大きく普及した要因であるタップやスワイプなどの手軽な操作を使えないのは、痛いところです。
まだ手元に届いたばかりですので、もう少し遊ぶ余地があります。対応アプリなど探してみようと思います。
(テポインー)Tepoinn® 3D VRメガネ 超3D映像効果 3.5- 5.5インチのスマートフォンに適用
- 出版社/メーカー: Tepoinn
- メディア: エレクトロニクス
- この商品を含むブログを見る
おまけ。Clash of ClansのYouTube動画。これもゴーグルでみると360度見渡せます。
Clash of Clans 360: Experience a Virtual Reality Raid
しらべもの:拡張現実って手に入るのですか(Oculus Rift)
最近、NHKの番組で仮想現実(VR)の特番をみました。テクノロジが進む方向であることは間違いないですが、相当頑張って本格的なハードウェアを導入しても、制約が多く表現がいまいちで、快適な仮想現実 / 拡張現実を実現するのは難しそうだというのがこれまでの印象でした。
私としては、バーチャルボーイのころから楽しみに待っている感じなのですが…… もう20年くらい経ってしまうのではないでしょうか。
Nintendo Virtual Boy Unboxing & Review (VB)
しかし、Oculus Riftとか、Playstation VRとか、最近出てきた新製品の話題は多いです。
そろそろ遊べるレベルになったのかもしれないし、どのくらいでどんなものが手に入るのか、調べました。
Oculus Rift
Raspberry piのときもそうでしたが、まずスペルが覚えにくい! 検索するとGoogle先生にスペル間違いを指摘されます。なんとか公式サイトにたどり着いてとりあえず価格をみると$599となっています。お一人様1台限りの表示もあり、納期は8月予定。人気で生産が追いつかないのだろうと推測するわけですが、日進月歩の分野で2ヶ月待たされるのは正直辛い…… スマホが出始めたころもそうでしたが、つぎつぎ新しいデバイスが紹介されたりしますよね。2ヶ月で世の中が変わっている可能性も否定できません。
どうでもいいことかもしれませんが、このWebサイト、IEでみると表示がされないことがありますね。
有線でPCと接続するのですが、予想通り要求がかなり高いです。USB 3.0ポートを3個要求するのが微妙に厳しいですね。買ってみないと状況がわかりませんが合計4ポート要求するというデバイスは初めてみました。そんなにいろいろ津名郡でしょうか。NVIDIA GTX 970はこの記事を書いている時点では35000円前後で買えるようです。
Video Card | NVIDIA GTX 970 / AMD R9 290 equivalent or greater |
---|---|
CPU | Intel i5-4590 equivalent or greater |
Memory | 8GB+ RAM |
Video Output | Compatible HDMI 1.3 video output |
USB Ports | 3x USB 3.0 ports plus 1x USB 2.0 port |
OS | Windows 7 SP1 64 bit or newer |
ところで、Oculus Riftは仮想現実向けのデバイスですので、拡張現実の機能に必要なカメラ(自分の部屋の様子が見られるなど)機能はありません。つまりゲームはできるんだけど、自分の部屋に何かを映し出して遊ぶような使い方はこれだけでは無理です。私が手に入れるならゲームで遊ぶだけでは無くて何か作れないと面白くないので、そういうことはできないのかなぁと調べていたら、すでに製品化している人たちがいました。すごい。
Ovrvision
これはOculus Riftのゴーグルに追加装着して、拡張現実に対応させるための双眼カメラです。説明によれば、Open CVやUnityを使ってプログラミングできるということです。OpenCVを使うことで自分の手の動きをトラッキングできると書いてあるので、両手のモーションで操作することができるわけですね。だいぶ未来的な感じになってきました。
さすがに簡単に作れますよ、とまではいかないのかもしれませんがこれは要注目です。なお、こちらのカメラは$415。Riftと合わせると10万円超え。PCも買い直すなら20万円では足りません。25万くらいは準備しなくては。というわけで、これはハイエンドコースですね。
ToDo:ローエンドコースを調べる
スマホを使ってお手軽にVRやARを実現するデバイスは、かなり安価に手に入るようです。$100くらいからあるみたい。引き続きこちらを調べてみたいと思います。スマホならカメラもついているからARの可能性もありますね。プログラムするとなるとPCにくらべて敷居が高く感じますが。
Playstation VRも紹介されていますね。ソニーが女子高生と過ごすゲーム(?)を展示して不謹慎だとか言われたものです。こちらも10月発売とオフィシャルにでているので、あとで調べてみたいと思います。しかしさすがに開発は無理かな…… PlayStation 4は持っているので、ゴーグル買うだけですむなら助かるのですが。
Ovrvision Pro : Stereo Camera for Oculus Rift DK2
- 出版社/メーカー: Wizapply
- メディア: エレクトロニクス
- この商品を含むブログを見る
備忘録:Visual Studio 2015 Community Edition + Bonanza 6.0
今回はRaspberry piとは無関係です。Windowsと将棋ソフトの話題ということで。Raspberry piで動かすにはCPUパワーもメモリも不足ですね。
Bonanza 6.0
Bonanzaは将棋の思考ルーチンです。少し前にこの界隈でパラダイムシフトを発生させたプログラムとして有名です。機械学習の考え方を取り入れており、それまでの、職人が勘と経験で磨き上げるように作成されていた思考ルーチンとは一線を画していました。段違いに強いと評判になり、その後作者ご本人がソースコードを含めて公開したため、後発のソフトウェアの開発に非常に大きな影響を及ぼしました。
Bonanza - The Computer Shogi Program
Visual Studio 2015でコンパイルする方法について備忘録的にまとめておきます。Visual Studio 2015で、とは書きましたが実はIDE環境は必要なくてnmakeというコマンドラインツールを使うだけです。IDE環境は、ソースコードを読むときに使いましょう。
コンパイル
ソースコードのzipアーカイブをダウンロードして、好きなところに解凍します。
Windowsのスタートメニューから「開発者コマンドプロンプトfor VS2015」を実行します。コマンドプロンプトが開きますが、このコマンドプロンプトにはVisual StudioのコンパイラがPATH環境変数に追加されていて、nmakeコマンドが使えます。
Bonanzaのソースコードに含まれるreadme.txt(\src\client\readme.txt)を読むと、コンパイル方法が書いてあります。ソースフォルダでnmakeを実行します。これでバイナリBonanza.exeができあがります。わざわざ書くことか?と思ってしまうほど簡単ですが、いや、Visual Studioをインストールしてそっちからコンパイルしようとすると駄目なんです。隠し機能のようなnmakeを使うところがミソなんですよ。
C:\...\client> nmake -f Makefile.vs cl
実行
これまたreadme.txtに書いてありますが、実行するには他のファイルが必要です。winbinフォルダに入っているbook.binとfv.binをコピーしてきましょう。あと、このプログラムは単体で動かすものではないのでCSA将棋を用意する…… と書かれていますが、CSA将棋はわかりにくいのでおすすめできません。u2c.exeを用意して、CSAプロトコルをUSIプロトコルに変換するソフト(u2c.exe)を使って将棋所に接続して使う方がGUIがわかりやすいです。
ソースコードを読んでいるのですがまだ機械学習のコアのところまでたどり着いていません。ゴールデンウイークの課題にしようと思っているのですが、どこまで進めるかなぁ。
- 作者: 伊奈めぐみ
- 出版社/メーカー: 講談社
- 発売日: 2015/12/09
- メディア: コミック
- この商品を含むブログ (7件) を見る
Raspberry pi 3 + thefuck
fuck
fuckコマンドというのをご存じでしょうか。Linuxには有用なパッケージが多数公開されていますが、中には明らかにジョーク目的で作られたにもかかわらず意外にも有用だったりするものもあるのです。というわけでfuckコマンドを紹介します。
何これ?
fuckコマンドは、コマンドの打ち間違いを自動的に修正してくれるコマンドです。例えば、lsコマンドを実行しようとしてslと打鍵してしまうことがあります。「コマンドが見つかりません」エラーが出力されたらすかさず"fuck!"と叫びながらfuckコマンドを実行しましょう(注:叫ぶのは必須ではないです)(あと、余談ですがLinux界隈にはslコマンドというジョークコマンドも実在します)。
pi@pi3:~ $ sl -bash: sl: コマンドが見つかりません pi@pi3:~ $ fuck ls [enter/↑/↓/ctrl+c] Desktop Documents Downloads Music Pictures Public Templates Videos python_games shogi pi@pi3:~ $
すると、fuckコマンドは直前の入力ミスを類推して、「よしよし、おまえが実行したかったのはlsだろう?」ということで修正候補を示してくれます。あとはEnterするだけです。
また、よくあるイライラであるapt-get upgradeコマンド。piユーザでは実行できないのでsudoを頭につける必要がありますが、これを良く忘れます。そんなときも……
pi@pi3:~ $ apt-get upgrade E: ロックファイル /var/lib/dpkg/lock をオープンできません - open (13: 許可がありません) E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。root 権限で実行していますか? pi@pi3:~ $ fuck sudo apt-get upgrade [enter/↑/↓/ctrl+c]
fuckと入力すればあとは考えてくれます。賢いです。仕事では使えませんが(使わないことをおすすめしますが)、自宅の趣味の環境なら便利に使えます。インストール方法を紹介します。
thefuckのインストール
sudo pip install thefuck ... のまえに前提パッケージをインストール
開発元のサイトでは、pip install thefuckでインストールできるよ、とあるのですが、Raspberry pi 3ではそれだけだとインストールエラーになります。python-pip、python-dev、thefuckの順番でインストールしてゆきましょう。まず、python-pipはapt-getコマンドでインストールです。
pi@pi3:~ $ sudo apt-get install python-pip パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 python-pip はすでに最新版です。 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libasn1-8-heimdal libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libkrb5-26-heimdal libroken18-heimdal libwind0-heimdal これを削除するには 'apt-get autoremove' を利用してください。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。 pi@pi3:~ $ sudo apt-get install python-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libasn1-8-heimdal libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libkrb5-26-heimdal libroken18-heimdal libwind0-heimdal これを削除するには 'apt-get autoremove' を利用してください。 以下の追加パッケージがインストールされます: libpython-dev libpython2.7-dev python2.7-dev 以下のパッケージが新たにインストールされます: libpython-dev libpython2.7-dev python-dev python2.7-dev アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 2 個。 18.2 MB のアーカイブを取得する必要があります。 この操作後に追加で 25.7 MB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libpython2.7-dev armhf 2.7.9-2 [17.9 MB] 取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main python-dev armhf 2.7.9-1 [1,188 B] 取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main libpython-dev armhf 2.7.9-1 [19.6 kB] 取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main python2.7-dev armhf 2.7.9-2 [281 kB] 18.2 MB を 9秒 で取得しました (1,884 kB/s) 以前に未選択のパッケージ libpython2.7-dev:armhf を選択しています。 (データベースを読み込んでいます ... 現在 127602 個のファイルとディレクトリがインストールされています。) .../libpython2.7-dev_2.7.9-2_armhf.deb を展開する準備をしています ... libpython2.7-dev:armhf (2.7.9-2) を展開しています... 以前に未選択のパッケージ libpython-dev:armhf を選択しています。 .../libpython-dev_2.7.9-1_armhf.deb を展開する準備をしています ... libpython-dev:armhf (2.7.9-1) を展開しています... 以前に未選択のパッケージ python2.7-dev を選択しています。 .../python2.7-dev_2.7.9-2_armhf.deb を展開する準備をしています ... python2.7-dev (2.7.9-2) を展開しています... 以前に未選択のパッケージ python-dev を選択しています。 .../python-dev_2.7.9-1_armhf.deb を展開する準備をしています ... python-dev (2.7.9-1) を展開しています... man-db (2.7.0.2-5) のトリガを処理しています ... libpython2.7-dev:armhf (2.7.9-2) を設定しています ... libpython-dev:armhf (2.7.9-1) を設定しています ... python2.7-dev (2.7.9-2) を設定しています ... python-dev (2.7.9-1) を設定しています ... pi@pi3:~ $
そのあと、psutilとthefuckはpipコマンドでインストール。
pi@pi3:~ $ sudo pip install psutil Collecting psutil Using cached psutil-4.1.0.tar.gz Building wheels for collected packages: psutil Running setup.py bdist_wheel for psutil ... done Stored in directory: /root/.cache/pip/wheels/28/46/4d/aaf6794133b80d7203b0a1d934febf4f59d0c6516e46fbafcd Successfully built psutil Installing collected packages: psutil Successfully installed psutil-4.1.0 pi@pi3:~ $ sudo pip install thefuck Collecting thefuck Using cached thefuck-3.9-py2.py3-none-any.whl Requirement already satisfied (use --upgrade to upgrade): psutil in /usr/local/lib/python2.7/dist-packages (from thefuck) Requirement already satisfied (use --upgrade to upgrade): decorator in /usr/local/lib/python2.7/dist-packages (from thefuck) Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/dist-packages (from thefuck) Requirement already satisfied (use --upgrade to upgrade): pathlib in /usr/local/lib/python2.7/dist-packages (from thefuck) Requirement already satisfied (use --upgrade to upgrade): colorama in /usr/lib/python2.7/dist-packages (from thefuck) Installing collected packages: thefuck Successfully installed thefuck-3.9 pi@pi3:~ $
設定
.bashrcの末尾にキーワードを追加しておきます。これで準備OKですが、初回は.bashrcを手動で読み込みましょう。これで使えます。
pi@pi3:~ $ tail ~/.bashrc if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi eval $(thefuck --alias) pi@pi3:~ $ pi@pi3:~ $ . ~/.bashrc
では皆様、正しいfuckライフを。
正しいFUCKの使い方-学校では教えてくれない、取扱注意のFuck、Shit、Damn、Hellを使った99フレーズ (TWJ books)
- 作者: 英語表現研究会,MADSAKI,NAIJEL GRAPH
- 出版社/メーカー: トランスワールドジャパン
- 発売日: 2014/04/25
- メディア: 単行本
- この商品を含むブログ (2件) を見る
Raspberry pi 3 + ネットワークの設定(Wi-Fi風味)+ DNS設定 + 日本語フォント
さて、ようやくラズパイ3の初期設定が進んできましたので引き続きメモを。
ネットワークの設定
前回の最後に書いたのですが、ネットワークの設定には苦労しました。ラズパイ2の時と少しずつ変わっているのですね。カーネル4.1なんだけどどうしてなんだろう。
Wi-Fi
ラズパイ3では、無線LANのアンテナは本体に内蔵されています。具体的にどの部分がアンテナなのかよくわかりません…… ここは難しく考えず、ラズパイ2の設定ファイルをコピーして持ち込みました。以前のエントリにありますが、アンテナの種類は違ってもこのあたりは問題なさそうです。
自宅で使っているWi-Fiルータは2つのアンテナを内蔵しているタイプなのですが、SSIDの末尾がgとgwのように分かれています。どちらでもつながるのですが、既存のラズパイ2と別のアンテナにつないでしまうと、この後相互にSSH接続できないことになります。そういうものらしいです。
root@pi3:~# cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=GB network={ ssid="aterm-cae33a-g" psk="xxxxxxxxxxxxx" proto=RSN key_mgmt=WPA-PSK pairwise=TKIP auth_alg=OPEN } root@pi3:~#
デフォルトゲートウェイ
外の世界に接続するにはデフォルトゲートウェイの設定が必要です。コマンドラインから設定するなら、これでOKでした。
pi@raspberrypi:~ $ sudo route add default gw 192.168.10.1
しかし、これでは再起動すると設定が消えてしまいます。恒久的な設定にするには/etc/network/interfacesファイルに記載することになっています。ここでうまくいかず、かなり色々試したのですが、結論としてはstatic設定にすることで解決しました。manual設定だとgatewayオプションを書いても反映されず、なぜだ?と調べてもわからず…… 納得いきませんが、動きました。
root@pi3:~# more /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) # Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo iface lo inet loopback iface eth0 inet manual allow-hotplug wlan0 iface wlan0 inet static wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf address 192.168.10.100 netmask 255.255.255.0 gateway 192.168.10.1 dns-nameservers 192.168.10.1
さて、これで外の世界にもつながります。
日本語フォントをインストール
raspi-configで日本語キーボードを設定し、画面表示も日本語表記にしたのですが、そのせいでデスクトップのフォントが文字化けしてしまいました。デフォルトでは日本語の文字を含むフォントはインストールされていないようです。ラズパイ2では英語のままで使っていたのですが、この際なので日本語フォントをインストールします。
日本語フォントっぽいものを探す
パッケージのリストから探します。True Type Font(ttf)のJapaneseというキーワードで探すといくつか用意がありました。
pi@raspberrypi:~ $ sudo apt-cache search ttf | grep -i japanese fonts-hanazono - Japanese TrueType mincho font by KAGE system and FontForge fonts-mona - Japanese TrueType font for 2ch ASCII art ttf-kochi-gothic - Kochi Subst Gothic Japanese TrueType font without naga10 ttf-kochi-mincho - Kochi Subst Mincho Japanese TrueType font without naga10 ttf-sazanami-gothic - Sazanami Gothic Japanese TrueType font (legacy) ttf-sazanami-mincho - Sazanami Mincho Japanese TrueType font (legacy) ttf-kochi-gothic-naga10 - Kochi Subst Gothic Japanese TrueType font with naga10 (non-free) ttf-kochi-mincho-naga10 - Kochi Subst Mincho Japanese TrueType font with naga10 (non-free) pi@raspberrypi:~ $
もうパパッとそのまま入れてしまいましょう。
pi@raspberrypi:~ $ sudo apt-get install fonts-hanazono fonts-mona ttf-kochi-gothic ttf-kochi-mincho ttf-sazanami-gothic ttf-sazanami-mincho パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: fonts-hanazono fonts-mona ttf-kochi-gothic ttf-kochi-mincho ttf-sazanami-gothic ttf-sazanami-mincho アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 77 個。 34.5 MB のアーカイブを取得する必要があります。 この操作後に追加で 86.4 MB のディスク容量が消費されます。 取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main ttf-kochi-gothic all 20030809-15 [3,142 kB] 取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main ttf-kochi-mincho all 20030809-15 [3,737 kB] 取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main ttf-sazanami-gothic all 20040629-15 [2,888 kB] 取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main ttf-sazanami-mincho all 20040629-15 [3,756 kB] 取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main fonts-hanazono all 20141012-1 [19.3 MB] 取得:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main fonts-mona all 2.90-7 [1,712 kB] 34.5 MB を 1分 32秒 で取得しました (373 kB/s) 以前に未選択のパッケージ ttf-kochi-gothic を選択しています。 (データベースを読み込んでいます ... 現在 127116 個のファイルとディレクトリがインストールされています。) .../ttf-kochi-gothic_20030809-15_all.deb を展開する準備をしています ... ttf-kochi-gothic (20030809-15) を展開しています... 以前に未選択のパッケージ ttf-kochi-mincho を選択しています。 .../ttf-kochi-mincho_20030809-15_all.deb を展開する準備をしています ... ttf-kochi-mincho (20030809-15) を展開しています... 以前に未選択のパッケージ ttf-sazanami-gothic を選択しています。 .../ttf-sazanami-gothic_20040629-15_all.deb を展開する準備をしています ... ttf-sazanami-gothic (20040629-15) を展開しています... 以前に未選択のパッケージ ttf-sazanami-mincho を選択しています。 .../ttf-sazanami-mincho_20040629-15_all.deb を展開する準備をしています ... ttf-sazanami-mincho (20040629-15) を展開しています... 以前に未選択のパッケージ fonts-hanazono を選択しています。 .../fonts-hanazono_20141012-1_all.deb を展開する準備をしています ... fonts-hanazono (20141012-1) を展開しています... 以前に未選択のパッケージ fonts-mona を選択しています。 .../fonts-mona_2.90-7_all.deb を展開する準備をしています ... fonts-mona (2.90-7) を展開しています... fontconfig (2.11.0-6.3) のトリガを処理しています ... ttf-kochi-gothic (20030809-15) を設定しています ... ttf-kochi-mincho (20030809-15) を設定しています ... ttf-sazanami-gothic (20040629-15) を設定しています ... ttf-sazanami-mincho (20040629-15) を設定しています ... fonts-hanazono (20141012-1) を設定しています ... update-alternatives: /usr/share/fonts/truetype/fonts-japanese-mincho.ttf (fonts-japanese-mincho.ttf) を提供するために自動モードで /usr/share/fonts/truetype/hanazono/HanaMinA.ttf を使います fonts-mona (2.90-7) を設定しています ... update-alternatives: /usr/share/fonts/truetype/fonts-japanese-gothic.ttf (fonts-japanese-gothic.ttf) を提供するために自動モードで /usr/share/fonts/truetype/mona/mona.ttf を使います pi@raspberrypi:~ $
で、結果はこんなところですね。この画面はMacからです。xrdpパッケージをインストールすれば簡単にリモートデスクトップ接続できます。
Raspberry piは2台目なので、ホスト名を分けて使うことにします。簡単にpi2とpi3ですね。/etc/hostsに記載してお互いに接続できるようにして、基本設定はOKです。さて、次は本格的に使い道を考えようと思います。