Posts on プログラミング

遊びながらプログラミングに必要な考え方が身につくロボット玩具、Cubettoが我が家に来ました。

遊ぶだけ遊んで、すっかり遅くなってしまったロボット玩具Cubettoレポート。 KickstarterにCubettoプロジェクトが公開された2016年3月に、思わずポチってしまいました。 その後、たった半年程度で、工場で量産開始した旨の連絡があり、自分の支援金が役に立てたのかと思うと、感慨深かったです。 木製ロボット玩具、Cubettoが工場生産開始! どこで売ってる? いつのまにかプリモトイズ日本販売総代理店までできてました。勢いあるな…。 日本語対応した本家HPで普通に購入できます。 もちろん日本円で、29,600円(税込31,968円)となっています。 春夏号ベビモで紹介されたCubetto さて、そんな希少価値感があったCubettoですが、今では普通に購入できるようです。 さすがにヨドバシで買うような手軽さではないようですが。 というのも、春夏号ベビモで紹介されているのです。 Baby-mo(ベビモ) 2017年 04 月春夏号 [雑誌][Kindle版]posted with ヨメレバBaby-mo編集部 主婦の友社 2017-03-15 Amazon[書籍版] そのページがこちら。 正直3歳から学べるというのは無理がある気もしますが…4歳のウチの子でもちょっと遊び方の理解が怪しいので。 …教え方が悪いという可能性も高いですが。 Cubettoと戯れる我が家の4歳児 同梱されているCubetto専用マップを走らせるのもいいんですが、自分で好きな地図を作るのも良いです。 専用のブロックを操作盤にはめ込んで、ロボットの動きをプログラミングしていきます。 こちらの動画は、同梱されていたCubetto専用マップで実際に動かしてみた様子。 Cubettoの活用法 2020年から、…

太陽光チャージコントローラ TS-MPPT-60 のステータス取得用Pythonパッケージを作ってみた。

自作した自家発電機の状態を監視するシステムの根幹部分をどうやって作ったか、の記録。 コントローラがブラウザに返すhtml/jsをリバースして作ったんですが、一応メーカのエンジニアに問い合わせてOK頂いたので、安心して公開することにします。 まずはチャージコントローラ選別 「発電状況を外部から取得できるコントローラ」って、意外と少ないんです。少なくとも個人で手が出る価格帯の範囲では。 外部から取得できないなら、センサー類を自前で揃えて自作するしかないのだけど、家電が使える容量のシステムだと流す電流量が多いので、それに耐えるセンサーとなると… コストが嵩むことになります。そもそも入手できないかも…。 そこでこのTristar社製チャージコントローラTS-MPPT-60です。 日本円で10万円程度にも関わらず、標準でEthernetポートを備えている上、HTTP経由でバッテリ電圧、太陽光パネル電圧、充電流量、放電流量、ヒートシンク温度に至るまで様々な情報を得ることができる、お得感満載な製品です。 太陽電池充放電コントローラー TS-MPPT-60posted with カエレバ 電菱 Amazonで調べる楽天市場で調べる この情報を収集する手段を用意し、収集したデータをXivelyといったクラウド上のデータベースに記録してグラフ化したい、というわけです。 Tristar社製 TS-MPPT-60 API仕様 TS-MPPT-60から得る情報や、その取得方法の仕様はTriStar-MPPT Modbus specification documentを見れば分かるよと、Tristar社のエンジニアの方が教えてくれたんですが… 結構な文量な上、まさに「仕様書」って感じで読みづらい。 ならば、ブラウザ経由でチャージコントローラにアクセスした際に参照するJavascriptソースを解析した方が、目的達成には近道。 のはず。 発電状況取得方法の検証 ということで、…

木製ロボット玩具、Cubettoが工場生産開始!

2016年3月にbackerになった 木製ロボット玩具Cubetto が、ついに工場生産開始されたようです。いやー、めでたい。 Our production line is officially rolling. Bits and atoms are all coming together on the factory floor. This is it! We also have news on patent trolling, competitions, maps, awards, translations and team. First things first... our final shipping schedule: Maiden voyage With all the variables involved, coming up…

発電状況を可視化してインターネット経由で参照したい、特異な人のためのノウハウ。

自家発電し始めたら、近未来的なかっこいい絵面で発電状況を管理したいと思ってたんですよね。 で、作ったのがこれ、発電状況管理用ダッシュボードです。 上段が太陽光パネルからの電流量(ArrayCurrent)と充電流量(ChargeCurrent)を示しています。下段は太陽光パネルの電圧(ArrayVoltage)、蓄電池の電圧(BatteryBoltage)、蓄電池の目標電圧(TargetVoltage)です。 さらに下の方に行くと、単独のグラフで見たいパラメータを並べてます。チャージコントローラのヒートシンク温度とかですね。 こういったデータを簡単にグラフで可視化してくれるオンラインサービスがいくつかあります。 実際に使ってみたのは以下の3つで、最終的には最も使いやすく、可視化後の見た目が良いkeenioに落ち着きました。 keenio m2x xively 参考までに、xivelyだと以下のような無機質なグラフになります。 xivelyは、挙げた3つのサービのなかで最も簡単に可視化できる利点を持ってますが、逆に何も変更できないのが欠点です。上の無機質なグラフ一択なんです…。 更に致命的な欠点もあって、時々過去データを紛失します。その上、10分間隔なんて長いインターバル置いてデータを送っていても、時々エラーで受け付けてくれません。 といった感じで、他に良いサービスはないものか… と探していたら、m2xというサービスを見つけました。 m2xだと以下のようなグラフになります。 サーバは安定しているようなんですが、この見た目がなんとも…。 xivelyより後発のm2xでも満足できず、さらに後発のkeenioに辿り着きました。 keenioは、xivelyやm2xとは違って、オンラインのデータベースを提供するようなサービスです。グラフで可視化してブラウザから参照できるような仕組みは、基本的に提供してくれません。 が、…

データサイエンス、機械学習の入口に立ってみる。

現職の会社がおかしくなり始めてから、大企業にありがちな上流工程に特化していくことに危機感を感じたこともあり、リツアンSTCさんとコンタクトを取り始めたんですが、まだ入社したわけでもないのにBizjapanさん主催の勉強会に誘っていただきました。 開催日2/13(土)の前日夜でしたが…Σ(・□・;) ただ、その概要を見ると、これは受講しないと勿体なすぎると感じたので、嫁さんに無理を言って行きました。勉強会後の打ち上げが本番という定説がありますが、今回はさすがに参加せず…。 コモディティ化しがちな製品群よりも、データの加工、分析、可視化技術はそうそう簡単に廃れないのかなと。一部、現職の製品でも活用していた気がするけど。 以下、DoorKeeperに掲載されている概要です。 概要 今回公開するレクチャーは、Bizjapanの理系大学院生により、文系の学生が大半を占めるBizjapanメンバーにデータサイエンスを導入するために作成し使用しているものです。内容的には、データサイエンス概略、機械学習概略、データ解析を行うためのツール比較(Excel、R、Python) 、Excelのヘルプの使い方、Excelによるデータの視覚化、線形回帰・曲線回帰とその最適な回帰式の選択方法、ソルバーでの最適化問題の解法、統計ソフトRの基本操作とRStudio、使用するデータについての解説、Rでのデータ操作、help関数の使い方とhelp画面の見方、CRANの見方、パッケージのインストール・実行方法、グラフィクスパッケージ、各種機械学習関数の使い方とformulaについて、機械学習のパッケージを用いた機械学習例、データの読み込みと書き出し、を予定しています。 統計学をちゃんと学んでいない身としては、色々とガクブルな用語が出てきます…。 でも、Rの基本操作以降はPythonやRubyをある程度以上触ったことがあれば、…

GitHubにpush済みのpythonコードのテストカバレッジを計測してみる。

DIY太陽光発電システム監視用のPythonドライバをCIしてみた記事の続編で、今回はpythonコードのカバレッジ(テストのカバー率)を計測します。 コマンドラインでカバレッジを計測する まずはテストを実行 以下のようなtest runnerコードを毎回書くのは面倒なので、noseパッケージをpip installし、nosetestsコマンドを使います。 import unittest if __name__ == "__main__": all_tests = unittest.TestLoader().discover("./", "test_*.py") unittest.TextTestRunner(verbosity=1).run(all_tests) nosetestsは、noseパッケージをpip installすると使えるようになるコマンドです。 nosetestsのテストケースの見つけ方を見ると分かりますが、とりあえずunittest.TestCaseのサブクラスをかき集めて実行してくれるようです。 tsmppt60_driver $ nosetests -v test_init (test_base_controller.TestChargeControllerStatus) ... ok test_compute_scaler_current (test_base_management.TestMb)…

anyenv環境でpyenvインストール後にハマったのでメモ

発電状況監視システムのような、何か簡単なWebシステムを作りたくなった時、Ruby on railsがあると楽に組めるだろうか?rubyも勉強してみようか? なんて考え始めると、複数バージョンのインタプリタを管理できるrbenvを入れておきたくなる。 同様に、pythonにもpyenvというものがある。 最近流行りのnodejsにもndenvというものがある。 名前が似ているだけでなく、使い方もほぼ同じ。 ということは、これらを一括管理する方法があるのでは? と思ってググったらありました。anyenvです。 インストール手順は上のリンク先を見れば分かりますが、一応解説。 anyenvコード取得 homeディレクトリ下にanyenvコードをcloneします。 $ git clone https://github.com/riywo/anyenv ~/.anyenv anyenv環境設定 homeディレクトリ下の.bash_profileにanyenv環境設定して、shellを再起動する。 bash以外のshellを使う方は適宜読み替えてください。 $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(anyenv init -)"' >>…

GitHubにpush済みのpythonコードをCIしてみる。

DIY太陽光発電システムの発電状況をグラフ化してチェックできるようにしていますが、背後では、Pythonというプログラミング言語で記述したソフトウェアが動いています。 PyPIに公開しているので、ぜひ使ってやってください。こんな感じ↓で見つかります。 $ pip search tsmppt60-driver tsmppt60-driver - Python module to get status of your solar charge controller TS-MPPT-60. …事前にTS-MPPT-60を入手する必要はありますが…。 PyPIで公開するに当たって、さすがにテストは真面目に書かないとまずかろうと思い、unittestやdoctest、nose、MiniMockを使ってみました。 個別の詳細はまた今度に回して、今回はCI(Continuous Integration)、継続的インテグレーションネタです。 有名なCIツールにJenkinsがありますが、今回作ったtsmppt60-driverはgithubにOSSとしてpushしてあるので、流行りのTravisCIを使わせて頂きました。 TravisCIを使うに当たって、全体の流れは以下のような感じでになります。 TravisCIアカウント登録(GitHubアカウントとの連携可能) TravisCIのWeb設定画面上で、CI対象のGitHubリポジトリを選択 TravisCIのヘルプに従って設定した.travis.ymlファイルをGitHubリポジトリに追加 githubアカウントを持っていれば、ブラウザ上で簡単なGUI操作のみで、githubへのpushをhookして自動ビルド&テストしてくれる上、のようなバッジをREADMEに表示することもできます。 その設定は、以下のようにとても簡単です。 まずはTravisCIに飛び、Sign…