理工系な話

組んだりバラしたり
旧『“PLASSON”自作二足歩行ロボット Personal Low-tech ASSembly Of Nisokuhokou 』
 

Pythonへのとっかかり

| コメント(0)

バイオリンのほうではいろいろと個人的に残念なことがあったのではありますが、気を取り直して。

まっとうなプログラミング経験はN88-BASIC以外にはないに等しい自分ですが、プログラミングの楽しさは知っています。

ということで、この夏休みに、最近興味の出てきたPythonをかじってみることにしました。

Pythonを選んだのは、人工知能の開発にも使われるものでありながら、いわゆる学習コストが低いとのことなので。

「Pythonの学習コストが低いという話」
http://qiita.com/karashi39/items/1a2514829f4249a4cefc
や、そこにあるリンク先のようなところを参考にしました。

帰省先に持ってきたテキストは、
・日経ソフトウェア2017年6月号付録
 「日経平均株価をスクレイピングしよう
   5日間で学ぶプログラミング Python編」
と、その続編の
・日経ソフトウェア2017年9月号付録
 「Python+便利ツールで実践!
   5日間で学ぶスクレイピングのキホン
です。

20170813KIMG0833.jpg

とっかかりとしては、こんなもんでいいかなと。
合計10日間を2日間で通過しました。


「5日間で学ぶプログラミング Python編」

1日目 初めてのPython
・Part1 Pythonはじめました
 →Pythonのインストール。なんとなく64ビット版じゃなく32bit版にしておく。テキスト余談の昔話として書いてある「紙テープ」は僕も使ったことない(見たことはある)けれど、1行1枚のマークシートでの入力は大学の授業で1回だけやったなー(FORTRAN)。
・Part2 計算してみよう
 →インタプリタ直接入力で。print関数、四則演算。0.1+0.1+0.1=0.30...中略...04になるよ等。あ、ここには書いてないけどデータ型の宣言はいらないのか。
・Part3 数値と文字列
 →「'」か「"」でくくる。str関数、文字コード。
・Part4 入力してみよう
 →input関数、変数の名前のルール(大文字と小文字は区別されるなど)、int関数。

 ★ついでに調べると、関数内で参照されるだけの変数は暗黙的にグローバル。関数の本体のどこかで値が変数に代入されたなら、それは明示的にグローバルであると宣言されない限り、ローカル。

2日目 制御文と関数
・Part1 if文と比較演算子
 →if文、インデントによる「ブロック」、比較演算子、if else文。
・Part2 論理演算子
 →and、or、not、True、False。
・Part3 while文
 →while文、break、continue。
・Part4 関数の定義
 →ATOM(エディタ)のインストール、Pythonモード。.pyファイルでの足し算の実行、format関数、return文。

※コーディングスタイル
 ・インデントは空白4つ。タブは使わない。
 ・ソースコードの幅は79文字を超えないように行を折り返す
 ・コードブロックの区切りに空行を使う。
 ・コメントは行に独立で書く
 ・演算子の前後とコンマの後には空白を入れる。括弧類のすぐ内側には空白を入れない。

 ★分岐とループと関数(サブルーチン)。昔ながらのフローチャートを思い出す。ここいらあたりは文法的な書き方が少し違うだけで基本は変わらない。インデントによるブロックは、インデントでソース見やすくするのが好きな自分には向いているかも。

3日目 Pythonのデータ型
・Part1 リスト
 →配列なんだが、appendメソッド、insertメソッド、removeメソッドで要素数の変更ができる。len関数、変数に代入されているのはリストオブジェクト自体ではなくリストオブジェクトの参照値(なんのこっちゃ)。
・Part2 リストの便利な機能
 →whileで回して、countメソッド、for文、スライス、inキーワード、sortメソッド、reverseメソッド。
・Part3 タプルと集合
 →要素の値を変更できない、要素無しまたは1つの時はカンマが必要、del文、可変長引数、集合(同じ値を持てない、順番がない)、set関数、集合演算。
・Part4 辞書
 →要素が、key:valueの組み合わせでできている、要素の追加にメソッドを使わなくていい、dict関数でも作れる、内包表現、、、、、、

 ★タプルとか辞書とか僕には新しい。配列使ってのいろいろって、とても楽になってるんだろうなぁ。
 仮面ライダータプル:ガイアメモリの値は変更できない。可変長引数によりガイアメモリがいくつあっても大丈夫・・・いえ、なんでもありません。

4日目 クラスとモジュール
・Part1 オブジェクト指向
 →オブジェクト:
   データ(昔で言えば変数)=属性
   処理(昔でいえば関数)=振る舞い
 オブジェクトはクラス(「型」)から生成される。
 クラスから生成されたオブジェクトはインスタンスという。
・Part2 クラス・継承
 →仮に、オブジェクトは一つでいいのなら、
  クラス名.変数名
  クラス名.メソッド名()
 になるが、
 インスタンスメソッドに引数selfを
 ・・・とか言ってるうちに、何?コンストラクタ(__init__メソッド)とか?
・Part3 例外
 →tryブロック、exceptブロック、elseブロック、finallyブロック。これはわかりやすい。
・Part4 モジュール
 →import文で取り込んで、モジュール名.関数名()で呼び出す。これもわかりやすい。

 ★オブジェクト指向は、日本語の本が出始めた頃にちょっとだけかじったけど、その概念自体がよくわからんのよなぁ。でも、手軽にプログラミング遊びをしたいだけなので、今のところは便利なモジュールの使い方がわかれば良いのだ(^^;

5日目 スクレイピング
・Part1 eメールの基礎と準備
 →クライアントとサーバー、プロトコル、SMTP、POP3、IMAP4、というものがあり、プロトコルを利用する。ここでは、Gmailを利用する。
・Part2 Pythonからメールを送信
 →必要なモジュールをimportして(パッケージから必要なものだけというのもあるのか)、書いてある通りにして成功。本文の改行はどうするんだろう(^^;
・Part3 Webサーバーと通信
 →Webページから画像ひとつをダウンロード成功。例はPythonサイトからPythonのロゴだったけど、勤め先サイトのロゴにしてみた(^^; 同じファイル名だとどんどん上書きされる(^^;
・Part4 外部ライブラリを使う
 →例は、Yahoo!ファイナンスの日経平均株価の情報を取り出す。外部モジュールbeautifulsoup4をpip3でインストール。アンインストールするときはどうするんだろう・・・調べてみると、installをuninstallと書けばいいらしい(^^; しかし、今日は値動きがないから、何度取りに行っても同じ数字(笑)

 ★続編に続く。

「5日間で学ぶスクレイピングのキホン」

1日目 Webの基礎
・Part1 Webサーバーを起動しよう
 →PythonにはWebサーバーのモジュールが標準装備、しかし、書いてある通りに入力するとエラーが出る。
「へたっぴpythonista」というブログの
  http.serverが起動しない・・・
  http://hetapy.hatenablog.com/entry/2013/12/23/131356
 と同じ症状で
  サーバー起動しました!
  http://hetapy.hatenablog.com/entry/2013/12/23/141337
 で解決。ありがとうございます。
・Part2 WebサーバーとHTMLの関係
・Part3 HTMLの基礎
・Part4 tableタグ

 ★HTMLはここに書かれてることくらいはわかるから省略。

2日目 cssとJavaScript
・Part1 cssとは
・Part2 cssのセレクタ
・Part3 JavaScriptとは
・Part4 関数とイベント

 ★cssはここに書かれてることくらいはわかるから省略。JavaScriptで関数、あー、一時期面白がってやったけどもう覚えてないや(^^; でも調べながらなら何とでもなるだろうから省略。

3日目 フォームと正規表現
・Part1 フォーム
・Part2 formの入力をPythonで受け取る
・Part3 正規表現で入力チェック

 ★フォーム、すっかり忘れてるけど、これも何とかなるから省略。そうか、サーバーでPythonが動くのならPythonで処理できるんだ(ブログ書いているレンタルサーバーはPython使えると書いてあったはず。ラッキーかも)。正規表現も、秀丸でテキスト置換するときに少し使ってるので、何とかなるから省略。

4日目 Seleniumで自動化
・Part1 Seleniumとは
・Part2 Selenium IDE
 →Firefoxに「Selenium IDE」をアドオン・・・と思ったら、This add-on is not compatible with your version of Firefox. でしたわ(笑)。
・Part3 PythonからSeleniumを使う
 →pipでSeleniumモジュールをインストール、geckodriverをダウンロードしてpathの通るところに置き、Pythonインタプリタからブラウザの起動、Googleページの表示、検索キーワードの入力、クリックイベントを発生させる、ところまで。

 ★ブラウザをリモートコントロールしてるみたいでおもしろーい(笑)

5日目 Pythonでスクレイピング
・Part1 正規表現でスクレイピング
・Part2 beautifulsoup4とXPathを使う
・Part3 Seleniumとの連携

 ★ページをダウンロードして、そこから必要な個所を切り出す方法のいろいろ。

最後に、スクレイピング自体は違法行為ではないけれど、サイト運営者に迷惑とならない範囲で、という注意があって、テキストはおしまい。

お疲れさまでした。


やっぱり、プログラミングは、習うより慣れろだなぁ。
やりたいことはあるので、やってみょう。
なにかできたら、やらかしたら、また書きます。

はがれた

| コメント(0)

はがれた。

KIMG0822.JPG

こういうのも「ものづくり」ってことで(^^;;;

週刊ロビ

| コメント(0)

友人のつぶやきで、週刊ロビのサイト( http://deagostini.jp/rb3/ )を見に行ったら、広告がロビだらけに。

これは、僕に作れということなのか・・・と迷ったのですけど。。。

 
 
 

いつかまた、自分が手掛けたロボットを処分する時がくるかと思うと、手が出せませぬ。

6/6は、およそ5ヵ月ぶりにロボットイベントに参加しました。

KHRアニバーサリー内で開催されたKONDO CUP KHRクラスです。
チームは「関東支部」。結果は、予選リーグ2勝1敗で決勝戦には進めず。

それでも、久しぶりにロボット好きな人たちの雰囲気に触れることができて、楽しかったです。

KHRアニバーサリーは今回が第6回です。第1回から連続出場しています。
会場に掲示されていたKONDO CUPの説明パネルに、今回も持ち込んだ機体(ANV-1)の写真が使われていて、とても嬉しかったです。

Khr_anv_img_1452
頼み込んで元写真を送っていただきました。ありがとうございました。

ANV-1は、第1回の抽選で当たったブラックフレームを使ったKHR-1ベースの機体ですが、これからもこれで出場し続けたいと思っています。

今年の目標:ロボ編

| コメント(2)

今年の目標をたてねば。

(こちらのブログに「あけましておめでとう」って書き忘れていることは内緒。)

去年の目標で、

> 今年の目標はただひとつ:今年こそ新型機を作るぞ。

と書いたにもかかわらず・・・。

今年は、福袋でKHR-3HVを買ってしまいました(^^;。次のKONDO CUPでのデビューを目標と書きましたが、さて。。。

ということで、今年の目標は、やはりただひとつ:新型機製作です。

ROBOSPOT福袋

| コメント(0)

仕事帰りにROBOSPOT寄って、豪快に(?)福袋買いました。

12万円福袋+2万円福袋=これでKHR-3HVフルセットです(^^;

20100104_01
ゆくてをふさがれたにゃ

つまり、2つ合わせた中身は

  • KHR-3HV本体
  • 開脚フレームセット(2552HV1個付き)
  • 拡張用サーボ5個セット
  • ジャイロセンサーKRG-4:2個
  • 加速度センサーRAS-2:1個

あと、Tシャツそのほか入ってました。

20100104_03
こんなのひととびにゃ

新型機を作ると言って○年、結局KHR-3HVかよ(^^;

まぁまぁ良いではないですか。

目標は、次のKONDO CUPでのデビューです。

おまけ

20100104_02
福袋の中からヒモこうげきにゃ

第18回KONDO CUP

| コメント(2)

第18回KONDO CUP KHRクラスに「関東支部」の一員として出場しました。

結果は・・・前回同様、チーム練習不足ですね[E:coldsweats01]

KHR-3HVが使われるようになってきました。モーション作り込んでなくても基本性能が高いので、KHR-1のANV-1では厳しくなってきました。

20091226_r1
しょうきちくん、ロボットとの遭遇

昨夜(12日)は、毎年恒例の「ロボット好き共の忘年会」に顔を出してきました。

KHRアニバーサリー自律バトル準優勝のほかは、KONDO CUPに出ていたくらいで、参加はちょっと気が引けたのですが、それでも久しぶりに多くの方と話ができて、とても楽しかったです。

皆さん、ありがとうございました。

2009国際ロボット展

| コメント(2)

■両持ちと片持ちとリンク

20091128_01

20091128_02

20091128_03

■手

20091128_04

20091128_05

20091128_06

20091128_07

■大きなボディ

20091128_08

20091128_09

■小型ロボダンス

20091128_10

20091128_11

20091128_12

20091128_13

20091128_14

20091128_15

■小型ロボ展示

20091128_16

20091128_17

20091128_18

20091128_19

20091128_20

20091128_21

20091128_22

■おまけ

20091128_23

突然ですが、5月に(^^;やろうとしていた「アーデュイーノ互換マイコン・ボードを作る」と「エレキジャックNo.12 」をもとに、Arduino互換のeJackino作りにとりかかろうと思います。

20091118_01

部品は、5月に揃えたものでは一部足りず、追加で注文。本の部品表に書いてあるものは揃いました。

20091118_02

基板は、「アーデュイーノ互換マイコン・ボードを作る」に付いているものです。

製作目的は、11/30にCQ出版社から発売予定の「マイコンと電子工作No.1だれでも使える電脳Arduinoの使いこなし」で遊ぶためです。

今度こそマイコンの基本的な使い方をマスターするぞ、たぶんすると思う、するんじゃないかな、まぁちょっと・・・。