Pythonの実行方法と基本構文
こんにちは.
以前の記事でMacにPythonの開発環境を構築しました.
今回はそれを少し使ってみようと思います.
1. プログラムの実行
まずはプログラムの実行方法を見てみます[1].お好きなテキストエディタで以下のように入力し,ファイル名を「test01.py」として適当なフォルダに保存してください.
print "Hello World"
ターミナルで今ファイルを保存したフォルダに移動してください.私の場合は/Users/ユーザ名/Develop/PythonPracticeに保存したので,以下のようになります.
cd /Users/ユーザ名/Develop/PythonPractice
※ユーザ名の箇所は,ご自分のユーザ名に合わせてください.
移動できたら下記のコマンドを実行します.
python test01.py
以下のように表示されたら成功です.
次に,別の方法でPythonを実行してみます.
以下のコマンドを実行します.
するとPythonコマンド入力待ち受け状態になるので,そこに以下のように入力します.
print "Hello world test"
以下のように表示されたら成功です.
Hello world test
このように,Pythonではいちいちソースファイルを作らなくとも対話形式で簡単な動作テストくらいであればターミナル上だけで実施が可能です.
対話モードから抜けるときは,exit()と打ち込んでEnterを押すか,control+Dを入力します[2].
2. 基本構文を理解する
次にもう少し複雑なプログラムを書いて,基本構文を理解しましょう.
以下のURLからファイルをDLし,「test02.py」という名前で先ほどと同じフォルダに保存してみましょう.
https://bitbucket.org/Daisukekmr/pythonpractice/downloads/test02.py
保存できたらそのフォルダに移動し,またさっきと同じように実行してみます.
cd Users/ユーザ名/Develop/PythonPractice
python test02.py
以下のように表示されたら成功です.
モジュールのロード
Hello world
関数:testを呼び出しました
それではtest02.pyをテキストエディタで開いて,部分ごとに内容を見て行きます.
# -*- coding: utf-8 -*- print u"モジュールのロード" def test(): print u"関数:testを呼び出しました" if __name__ == "__main__": print "Hello world" # print "はろーわーるど" test()
1行目はエンコードの宣言を行っています.今回は半角アルファベットのみでなく日本語(2バイト文字)が含まれているので,この宣言を行わないとエラーに成ってしまいます.
# -*- coding: utf-8 -*-
次に3行目(2行目は空行なので)ですが,printのあとにuが入っています.これは1行目で宣言したエンコードを使うという意味です.
print u"モジュールのロード"
5行目は関数を定義しています.関数とは,よく使う機能をモジュールとして作っておき,あとから呼び出すという使い方をします.C言語などでは関数は{}でくくるのですが,Pythonでは{}は使わず,中身を1段右にずらすことで表現します.このため,6行目は1段ずれて表記されています.
def test(): print u"関数:testを呼び出しました"
8行目はちょっとむずかしいので追々理解していけば良いと思いますが,他のモジュールから呼び出された時に実行されないという意味です.ここは飛ばしてしまいましょう.
if __name__ == "__main__":
10行目は先程も出てきたprintですね.11行目のprintですが,実行結果では表示されませんでした.これは#によってコメントアウトされていたためです.
print "Hello world" # print "はろーわーるど"
12行目は先ほど定義した関数を呼び出しています.test()という関数の中身は「関数:testを呼び出しました」と表示するというものでしたので,実行結果ではそのように表示されています.
test()
これがPythonの基本構文です.ここまでわかってしまえばあとはある程度進めると思いますので,次回は勉強に役立つサイトの紹介です.
参考文献
[1]Python-izm (http://www.python-izm.com/contents/introduction/execution.shtml)
[2]PyCon JP 2012 Pythonプログラミングハンズオン(初級者向け)「動かしてみよう」(http://pyconjp2012-python-for-beginners.readthedocs.org/en/latest/start_python.html)
Raspberry Piをサーバ化する その3(データベースを構築)
こんにちは.
前回までにサーバを立てることに成功しました.ここまでにインストールしたのはLinux(Rasbian),Apache,PHPです.今回はMySQLというものをインストールします.よくWEBサーバを立てる際にこれらの頭文字を取って,LAMPなんて言い方をします.サーバを立てる上で基本的なシステムがこの4つというわけです.
ラズパイにログインしたら下記のコマンドを実行し,mySQLをインストールします[1].
sudo apt-get update
sudo apt-get install mysql-server
するとmySQLユーザ用のパスワードが求められますので,好きなパスワードを入力します(下図).このラズパイを恒常的に外部に公開する予定は私はありませんので,普段ログインしているpiと同じパスワードでも問題無いと思います[2].
次にmySQLを取り扱うために,phpMyAdminをインストールします.
sudo apt-get install phpmyadmin
途中でサーバをどのアプリケーションで立てるか選択する画面が出るので,Apache2を選択し,Enterを押します.
以下の様な画面でdpconfig-commonでデータベースの設定を行うか聞かれるので,おすすめされるがままにYESを選択します.
その後2回ほどパスワードを入力する画面が出てきますので,1回目はさきほど指定したmySQLのパスワードを入力します(下図).次はphpMyAdminのパスワードを指定するのですが,こだわりがなければ先ほどと同じパスワードを入力すれば問題無いと思います(下図).
ただしくインストールされて,自動起動の設定に入っているか確認しましょう.
ls /etc/rc2.d/
下記の画面のようにapache2とmySQLが入っていればOKです[3].
次にphpMyAdminの動作を確認してみます.下記のアドレスにアクセスして,次のような画面が出れば成功です.
ユーザ名に"root"と入力し,パスワードは先ほどphpMyAdmin用に指定したものを入力して実行を押せばログインできます.
試しに使ってみましょう.
最初の画面からデータベースを選択すると下記の画面が表示されます.
ここで画面中央の「新規データベースを作成する」の下にあるフォームに「TEST」と入力し,右の作成を押します.
すると「TEST」というデータベースが作成され,下図のように少し下のデータベース一覧の中に「TEST」と表示されます[4].
この一覧からテストをクリックすると,以下の様な画面に移ります.これはテーブルの管理画面です.データベースは複数のテーブル(表)により構成されています.
画面中央の,名前と書かれた少し右にあるフォームにTABLE1と入力し,カラム数を2と入力し,画面右の実行を押します.これは列数が2列の表を作成するという意味です.行数はデータが増える度に自動的に追加されていくので,指定は不要です.
実行を押すと以下の画面が表示されます.これは作成するテーブルの列について設定する画面です.
実際の画面ではこのキャプチャより項目数が多いのですが,入りきらなかったのでそれぞれの項目の意味を下記に羅列します.
Column: カラム(列)の名前です
種別: プログラムで言う型のことです.整数ならINTです
長さ: 最大のデータの長さです
デフォルト値: 何もデータが入れられる前のデフォルトの値です
照合順序: 文字列順に並び替える時などに使う,文字の順番に関するルールを指定します
属性: 文字列型のデータの時のより詳細なデータの属性のようです(よくわからない)
NULL: データが何もない"NULL"を許可するかどうかです
インデックス: データが膨大になった時に検索を高速化するためのインデックスについての設定です
AUTO_INCREMENT: 整数型のカラムの時,データが入った順に1ずつ大きな値を格納する機能です
コメント: カラムに関するコメントです
MINEタイプ: WEBの世界での拡張子のようなものです[5]
ブラウザ変換機能: ブラウザでデータを閲覧するときの便利機能っぽいです(不明)[6]
変換オプション: ブラウザ変換機能のオプションです
以下はカラムごとではなくテーブルごとの項目
テーブルのコメント: テーブルに関するコメントです
ストレージエンジン: データの取扱を行うシステムです.
照合順序: おそらくカラム別ではなくテーブル全体の照合順序をしていするところです
パーティションの定義: データの分割に関するところみたいです
以下の画面のように入力して,画面下方の「保存する」を押しましょう.
すると以下の画面のようにテーブル一覧に今作成したテーブルが表示されます.
ここで作製したテーブル名の少し右にある「挿入」をクリックします.すると以下の様な画面が出てきます.
キャプチャを参考にフォームに値を入力して,入力した欄の左下にある「実行」を押します.これでデータが追加されたはずです.画面上部のメニューから挿入を選んで,同じようにデータを色々と追加してみましょう.
何度か試したら,今度は画面上部のメニューから表示を選んでみましょう.下図のように先ほど追加したデータが表示されていれば成功です.
これで準備とデータベースの取り扱いの練習は完了です.
これを使ってセンサの値を格納したり,そのデータを使ってリアルタイムにグラフ化してくれるようなWEBサイトを作ったりすることが当面の目標です.
参考文献
[1]XodusTech「Raspberry Pi PHP GPIO Guide」(http://www.xodustech.com/guides/raspberry-pi-php-gpio)
[2]Frog Code Works「【Raspberry Pi】一行でLAMPを構築する」(http://frogcodeworks.com/raspberrypi-lamp-setting/)
[3]r271-635「Raspberry PiをWebサーバに(Apache2, MySQL, PHP, Perlのインストール)」(http://netlog.jpn.org/r271-635/2013/01/raspberry_pi_webserver.html)
[4]PHPBook「mySQLへの接続」(http://www.phpbook.jp/tutorial/mysql/)
[5]とほほのWWW入門「拡張子とMIMEタイプ」(http://www.tohoho-web.com/wwwxx015.htm)
[6]phpMyAdmin日本語版「変換機能」(http://phpmyadmin-japanese.readthedocs.org/ja/latest/transformations.html)
開発環境紹介(回路設計,Raspberry Pi,Python)
こんにちは.
このブログを読んでくださっている方はご存知かと思いますが,かなり色々な分野に手を出し始めて,試行錯誤をした結果,開発環境が定まってきたので共有しようと思います.
ハードとソフトとクラウドサービスの3項目に分けてお話します.
ハード
開発は主にMacBookAir(MBA)を使用しています.MacBookProと比較してスペックは劣りますが,全く不自由は感じていません.
マイコンはRaspberry Pi Model B+を使用しています.
Raspberry Piは無線LANドングルをUSBに挿して,MBAからSSH接続でいじっています.
ソフト
最初のうちはラズパイのテキストエディタnanoを使用していましたが,さすがに長いテキストを書くときは使いづらいのでMacで書いて転送するようになりました.私が使用しているテキストエディタはAtomです.少し重いとも聞きましたが,個人的には使いやすいです.他におすすめがあったら教えて下さい.
Raspberry Piの操作にはターミナルからのSSH接続で行っています.ファイルの転送はCyberDuckを使用しています.
回路設計や,ブログの記事用のブレッドボード図の作製にはFritzingを使用しています.これはとても面白いソフトウェアなので,もう少し使い方を学んだら紹介記事を書こうと思います.
Pythonはpyenvを使用してバージョン管理を行っています.コードは上述のAtomを使用しています.
ソースコードのバージョン管理にSourceTreeを使用しています.ソースに何か改変を加えた時にコミットという処理を行うとそれが記録されていくというものです.単純にソースを上書きしてしまうと重大なミスを犯して過去のバージョンに戻りたいときに苦労しますが,このサービスを使用しておくと簡単に戻れるので便利です.変更の度にどこを変更したかなどのコメントを残せるのも便利です.後で説明するBitbucketやGithubとも連携可能なので,将来的に複数人で開発するときのバージョン管理などにも使用できるはずです.
クラウドで使用しているのは自分用のメモにこのブログを使用しています.基本的に私が作成したものはすべてオープンにしようと思っていますので,自分用のメモ=公開用の記事です.
また,ソースコードは1個ずつ全て公開していると情報過多になってしまうので,バージョン管理も含めてBitbucketを使用しています.SourceTreeを使用してローカルのフォルダとクラウド上の置き場所(レポジトリという)を同期させられるので,ローカルで編集してコミットする度にレポジトリにも反映させるというやり方をとっています.SourceTreeとBitbucketの使い方はいつか記事にしたいと想います.
以上が私の開発環境です.別にこれと同じにする必要はなくて,それぞれが使いやすい方法を自分で探していくのが良いと思いますが,最初はどこから手を付けてよいかわからないものなので,色んな人のパターンを真似て試していくのが良いと思います.
参考文献
特になし