Pythonでは簡単に行列計算が出来るのに、Arduinoでは行列計算をさせるのに一苦労。そんなときはArduinoEigenライブラリの使用がおすすめです。今回は、ArduinoEigenのインストールから使い方まで解説します。
C++には行列計算ライブラリ「Eigen」というものがあります。このEigenをArduinoで直接扱えるようにしたのが「ArduinoEigen」です。ArduinoEigenをインストールすることによって、Arduinoでも行列が簡単に計算できるようになります。
ArduinoEigenのインストール方法はとっても簡単です。ここではArduino IDEとPlatformIOでのインストール方法を紹介します。
スケッチ > ライブラリをインクルード > ライブラリを管理 をクリックします。
Eigenを検索し、インストールボタンを押せばインストール完了です。
本ブログでは、Arduino開発環境はPlatformIOをお薦めしています。
PlatformIO環境でのArduinoEigenインストール方法も解説していきますね。
Librariesから「Eigen」と検索すると「ArduinoEigen」がヒットします。
Add to Projectボタンを押し、Projectを選択するとインストール完了です。
ArduinoEigenの基本的な使い方について解説していきます。詳細な使い方を知りたい方は、公式ホームページを見て下さいね。
まずはヘッダファイルのインクルードが必要です。ArduinoEigen.hをインクルードしましょう。
#include <ArduinoEigen.h>
変数を宣言するには下のように記述します。
using Eigen::MatrixXd;
MatrixXd m(2, 2);
MatrixXd m(2, 2)は、2×2のdouble型で変数mを宣言したことを意味しています。
正方行列で次数が決まっている場合は、次のように記述します。
using Eigen::Matrix2d;
Matrix2d m;
変数の型をdoubleではなくfloat、intにしたい場合は最後の文字を「d」から「f」、「i」に変更します。
MatrixXd // double型
MatrixXf // float型
MatrixXi // int型
初期値を代入するには、2×2行列の場合を例にすると1行1列目、1行2列目、2行1列目、2行2列目の順に「,」区切りで記述していきます。
m << 1, 2,
3, 4;
加算は「+」演算子を使います。
m = m1 + m2;
減算は「-」演算子を使います。
m = m1 - m2;
乗算は「*」演算子を使います。
m = m1 * m2;
転置行列はinverse()関数を使います。
n = m.inverse();
Arduinoで行列を扱うためのArduinoEigenライブラリについて解説しました。今回の解説は行列計算のごく一部です。その他行列計算の使い方は公式ホームページ参照して下さい。
最後までお読みいただきありがとうございました。
]]>制御の醍醐味は不安定な系を安定にさせること。今回は、M5StickCを使って倒立振子に挑戦します!
制御工学を学んでいるけど、数式が多くて難しい、何の役に立つのか分からないといった方の助けになればよいと思います。
倒立振子を立たせるのに、かなり試行錯誤しました。どんなところに注意しなければいけないかポイントも紹介していきます。
記事は、ハードウェア設計編、ソフトウエア設計編、実機適合編に分けて連載する予定で、今回はハードウェア設計編です。
準備した部品の一覧表です。
準備物 | 個数 |
---|---|
M5StickC Plus | 1個 |
FEETECH ギヤードモータ FM90 | 2個 |
タイヤ FS90R対応 | 2個 |
DRV8835使用ステッピング&DCモータドライバモジュール | 1個 |
電池ボックス 単3×2本 | 2個 |
ボディ(3Dプリンタで自作) | 1個 |
ジャンパピン メス | 必要分 |
GROVE 4ピンケーブル | 1本 |
コントローラはM5StickC Plusを使いました。M5StickCPlusは、小型軽量ながら倒立振子に必要なGセンサ、ジャイロセンサーが備わっているので、部品点数削減に繋がります。あとはモーター、タイヤと電源を準備するだけでOK。
私はM5StickCシリーズの中でもM5StickC Plusを使用しました。M5StickC Plus選定は在庫があったからだけです。より安価に作るのであればM5StickCでも問題ないです。
マブチモーターより小型なFM90を選定しました。FM90はサーボモーターと同一形状のため、サーボモーター用のタイヤを取り付けることができます。
定格電圧は4.8V。モーター特性は秋月電子のホームページを参照してください。
タイヤはFS90R用を使いました。FM90にも取付可能です。タイヤ径は60mm。
モータードライバは、2ch内蔵のモジュールであるDRV8835を使います。15mm×10mmと小型で、搭載性抜群です。
FM90は定格電圧4.8Vのため、充電式単3電池4本使います。重量バランスを考えて、電池2本ずつ前後に搭載することにしたので、2本用を2個用意しました。
配線図は下図のとおりです。
DRV8835への電源供給のために、単3電池の+端子をDRV8835のVM、VCC端子に繋ぎます。単3電池のー端子は、DRV8835のGNDに繋ぎます。
モーターFM90への接続は、それぞれAOUT1/AOUT2、BOUT1/BOUT2です。モーターは左右で反転して搭載しますので、一方のモーターをプラスマイナス逆転して接続しましょう。
モーターをPWM制御するために、G33端子をAIN1/BIN1、G32端子をAIN2/BIN2に接続しました。
ボディはFusion360で設計しました。
これを3Dプリンタで製作。一体成型です。3Dプリントの設定はサポート材有り。サポート材を取り除くのにかなり苦労しました。
モーターは下方から差し込む構造になっています。
電池ボックスを取り付けるためのネジ穴はボディに空けなかったので、両面テープで貼り付けます。配線は中央の穴を通しました。
タイヤをモーターに取り付け。
モータードライバDRV8835は電池パックに両面テープで貼り付けました。DRV8835のヘッダピンにそれぞれの配線を接続。
DRV8835は剥き出しになってしまったので、もう少し見栄えを良くしたかった。
M5StackC Plusをボディに差し込めば完成!
これにてハードウェア設計編は終わりです。次回はソフトウェア設計編です。
]]>Raspberry PiにプレステやSwitchのワイヤレスコントローラを接続して、操作してみたいと思いませんか?
本記事では、Linuxのbluetoothctlを使ってデバイスをBluetooth接続する方法について解説します。
「bluetoothctl」とは、Linux環境においてBluetoothデバイスの管理や操作を行うためのコマンドラインツールです。Bluetoothデバイスのスキャン、ペアリング、接続、切断などの操作を行うことができます。ターミナルを通じてBluetoothを制御できるため、シェルスクリプトや自動化に役立ちます。
通常のLinux環境では、bluetoothctlコマンドが使えるはずです。インストールされていない場合は、ターミナルで次のように打ち、bluetoothctlをインストールします。
$ sudo apt -y install bluetooth bluez
インストールされたら、bluetoothctlコンソールを起動します。
$ bluetoothctl
起動すると次にように表示されます。
[bluetoothctl]#
bluetoothctコンソールを終了するには
[bluetoothctl]# quit
と打ちます。
次のコマンドを実行することで、近くのBluetoothデバイスをスキャンすることができます。
[bluetoothctl]# scan on
デバイスがスキャンされると、MACアドレスとデバイス名が表示されます。
Discovery started
[NEW] Device XX:XX:XX:XX:XX:XX [デバイス名]
このMACアドレスは、ペアリング、接続に必要のため、コピーしておきましょう。
スキャンを終えるには、次のように打ちます。
[bluetoothctl]# scan off
スキャンで検出したデバイスとペアリングしましょう。
[bluetoothctl]# pair XX:XX:XX:XX:XX:XX
“XX:XX:XX:XX:XX:XX”はデバイスのMACアドレスです。
デバイス側で接続要求を受け入れた後、bluetoothctl側の確認依頼にyesを返答します。
[agent] Confirm passkey xxxxxxx (yes/no): yes
最終的に次のように表示されたらペアリング完了です。
[CHG] Device XX:XX:XX:XX:XX:XX Paired: yes
Pairing successful
まず、デバイスを信頼できるデバイスに設定します。次のように打ちましょう。
[bluetoothctl]# trust XX:XX:XX:XX:XX:XX
設定完了の表示がこちら。
[CHG] Device XX:XX:XX:XX:XX:XX Trusted: yes
Changing XX:XX:XX:XX:XX:XX trust succeeded
次に接続です。
[bluetoothctl]# connect XX:XX:XX:XX:XX:XX
接続に成功すると次のように表示されます。
Attempting to connect to XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Connection successful
[CHG] Device XX:XX:XX:XX:XX:XX ServicesResolved: yes
[デバイス名]#
デバイスと切断するには次のようにコマンドを打ちます。
[デバイス名]# disconnect XX:XX:XX:XX:XX:XX
切断完了されると次のように表示されます。
Attempting to disconnect from XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX ServicesResolved: no
Successful disconnected
[CHG] Device XX:XX:XX:XX:XX:XX Connected: no
[bluetooth]#
コマンド | 説明 |
---|---|
scan on | ペアリング・接続可能なデバイスを検索する |
scan off | ペアリング・接続可能なデバイスの検索を停止する |
devices | ペアリング・接続可能なデバイス一覧を表示する |
pair <MACアドレス> | <MACアドレス>のデバイスとペアリングする |
paired-devices | ペアリングされているデバイス一覧を表示する |
trust <MACアドレス> | <MACアドレス>のデバイスを信頼済にする |
untrust <MACアドレス> | <MACアドレス>のデバイスを信頼されていない状態にする |
connect <MACアドレス> | <MACアドレス>のデバイスと接続する |
disconnect <MACアドレス> | <MACアドレス>のデバイスを切断する |
info <MACアドレス> | <MACアドレス>のデバイス情報を表示する |
remove <MACアドレス> | <MACアドレス>のデバイスと切断し、ペアリング情報を削除する |
本記事では、Linuxのbluetoothctlを使ってデバイスをBluetooth接続する方法について解説しました。
bluetoothctlを使えばBluetoothデバイスのスキャン、ペアリング、接続、切断などの操作を簡単に行うことができます。
今回の記事が皆さんのプログラミング学習に役立つなら幸いです。
最後まで読んでいただき、ありがとうございました。
]]>WordPressブログを運営している皆さんにとって、分かりやすく美しいコード表示は重要ですよね。
本記事では、WordPressのコードブロックをハイライト表示するための素晴らしいプラグイン「Highlighting Code Block」を紹介します。
このプラグインを使うことで、技術記事やプログラミング記事をより魅力的に、わかりやすく表現できるのでおすすめです!
WordPressで技術記事やプログラミング記事を書く人
プログラミングをする上でVisual Studio Codeなどハイライト表示できるエディタを使っていますよね。コードをハイライト表示することによって、コードの可読性が飛躍的に向上します。
Visual Studio Codeの例
しかし、プログラミング記事にするとき、コードを直接WordPressに張り付けただけではハイライトされず、読者にとっては非常に不親切です。
import cv2 as cv
# カスケード分類器読み込み
frontalface_cascade = cv.CascadeClassifier(“haarcascade_frontalface_default.xml”)
smile_cascade = cv.CascadeClassifier(“haarcascade_smile.xml”)
eye_cascade = cv.CascadeClassifier(“haarcascade_eye.xml”)
…
そこで当ブログでは、「Highlighting Code Block」というWordPressプラグインを使っています。
Highlighting Code Blockは、株式会社LOOSが開発しているカラーリングが施されたコードブロックを導入できるWordPressプラグインです。
2023年8月現在、バージョンは1.7.0です。
主要なプログラミング言語に対応しています。
WordPressダッシュボード > 設定 > [HCB]設定の「コードカラーリング」でライトモードとダークモードを変更することができます。
WordPressダッシュボード > 設定 > [HCB]設定の「行数の表示設定」でコードブロックに行数を表示するか設定することができます。
右上のコピーボタンを押すことで、コードのコピーが出来ます。
a = 1
b = 2
print(a+b)
WordPressダッシュボードのプラグインを追加から簡単にインストールできます。
本記事では、WordPressブログを運営している皆さんにとって、分かりやすく美しいコード表示するためのプラグイン「Highlighting Code Block」を紹介しました。
このプラグインを使うことで、技術記事やプログラミング記事をより魅力的に、わかりやすく表現できるのでおすすめです!
\ 当ブログで使用のテーマ /
]]>Pythonサンプルコードを見ていると「if __name__ == ‘__main__’」と記述されていることがよくありますよね?
意味が分からないと、その時点でコード解読離脱してしまいます。
本記事では、この構文が何を意味し、どんなときに使うのかを解説します。
Python学習を始めたばかりの人
if __name__ == ‘__main__’の意味は、もしPythonコードが直接実行されたときは以降のコードを処理し、モジュールとして呼び出されたときは処理しないです。
用途は、モジュールを呼び出したときに、勝手に処理が実行されることを防ぐことです。また、モジュールの単体テスト用としても使われます。コードを直接実行したときと、モジュールとして他のコードから呼び出されたときの処理を分けることでモジュールの単体テストを可能とします。
モジュールの単体テスト用ですから、Pythonコードが1ファイルの場合は、この構文は必要ありません。
次項では、Pythonコードが直接実行されたときのみ処理する仕組みを解説します。
__name__変数とは、モジュール名を返す特別な変数です。importで他のコードから呼び出された場合は、__name__はファイル名となります。一方、コードを直接実行した場合は、__name__はファイル名となります。
サンプルプログラムで確認していきましょう。
モジュール「module.py」とメインコード「main.py」を用意しました。
def func():
return __name__
if __name__ == '__main__':
print('__name__ = ' + func())
import module
print('__name__ = ' + module.func())
それぞれのファイルを実行してみますと下表のようになったのではないでしょうか?
実行ファイル | module.py | main.py |
---|---|---|
__name__ | __main__ | module |
main.pyからmodule.pyをimportしたときは、”if name == ‘main’:” 以降の処理が実行されないのがお分かりですね。
Pythonサンプルコードでよく見る「if __name__ == ‘__main__’」の意味と用途について解説しました。
意味
用途
今回の記事が皆さんのPython学習に役立つなら幸いです。
Python独学が大変な方は、書籍やスクールを活用するのも手です。
]]>以前の記事でOpenCVで顔検出するプログラムを解説しました。
今回は、顔検出の応用として、目と笑顔を検出する方法について解説します。
こちらが目、笑顔を検出するサンプルプログラムです。
import cv2 as cv
# カスケード分類器読み込み
frontalface_cascade = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
eye_cascade = cv.CascadeClassifier("haarcascade_eye.xml")
smile_cascade = cv.CascadeClassifier("haarcascade_smile.xml")
# 画像の読み込み
img = cv.imread("sample.jpg")
# 顔検出
face = frontalface_cascade.detectMultiScale(img)
# 顔部を赤枠で囲む
for x, y, w, h in face:
cv.rectangle(img,(x,y), (x+w, y+h), (0,0,255), 1)
# 顔部の上3/4を切り取り
upper_face_img = img[y:int(y+3*h/4), x:x+w]
# 目検出
eye = eye_cascade.detectMultiScale(upper_face_img)
# 目部を青枠で囲む
for x1, y1, w1, h1 in eye:
cv.rectangle(img, (x+x1,y+y1), (x+x1+w1, y+y1+h1), (255,0,0), 1)
# 顔部の下半分を切り取り
under_face_img = img[int(y+h/2):(y+h), x:x+w]
# 笑顔検出
smile = smile_cascade.detectMultiScale(under_face_img)
# 笑顔を緑枠で囲む
for x2, y2, w2, h2 in smile:
cv.rectangle(img,(x+x2, int(y+h/2)+y2), (x+x2+w2, int(y+h/2)+y2+h2), (0,255,0), 1)
cv.imshow("img", img)
cv.waitKey(0)
cv.destroyAllWindows()
実行結果がこちら
3人とも目が検出できました。右2人は笑っているので、口元が笑顔と判定されています。
次章ではサンプルプログラムを解説していきます。
サンプルプログラムの流れは以下のとおりとなっています。
STEP1~3は、別記事で解説していますので、本記事では割愛しました。
ここでは、STEP4: 目の検出、STEP5: 笑顔の検出について解説していきます。
目を検出するには「haarcascade_eye.xml」を使用します。
# カスケード分類器読み込み
eye_cascade = cv.CascadeClassifier("haarcascade_eye.xml")
# 顔部の上3/4を切り取り
upper_face_img = img[y:int(y+3*h/4), x:x+w]
# 目検出
eye = eye_cascade.detectMultiScale(upper_face_img)
# 目部を青枠で囲む
for x1, y1, w1, h1 in eye:
cv.rectangle(img, (x+x1,y+y1), (x+x1+w1, y+y1+h1), (255,0,0), 1)mg)
顔部の上3/4を切り取り、この中から目を検出して青枠で囲むということをしています。
もし、顔部を切り取らなかったらどうなるのでしょうか?
下図は顔部を切り取らなかった場合の実行結果です。
左の女性のおでこと口が目と誤判定されてしまいました。目は顔の上部に位置していますので、誤判定しないためにも検出範囲を顔の上部のみに絞る方が良いことが分かります。
笑顔を検出するのは「haarcascade_smile.xml」です。
# カスケード分類器読み込み
smile_cascade = cv.CascadeClassifier("haarcascade_smile.xml")
# 顔部の下半分を切り取り
under_face_img = img[int(y+h/2):(y+h), x:x+w]
# 笑顔検出
smile = smile_cascade.detectMultiScale(under_face_img)
# 笑顔を緑枠で囲む
for x2, y2, w2, h2 in smile:
cv.rectangle(img,(x+x2, int(y+h/2)+y2), (x+x2+w2, int(y+h/2)+y2+h2), (0,255,0), 1)
目の検出同様、顔部の下半分を切り取り、この中から笑顔を検出して緑枠で囲みます。
こちらも顔部を切り取らなかった場合を確認してみましょう。
様々なところで笑顔が検出されてしまいました。検出範囲を絞ることが重要です!
こちらの画像では右側女性の右目が検出出来ませんでした。
こちらの写真は3人とも笑顔ではないですが、口元が笑顔と検出されています。
笑顔検出というよりは、口検出に近いですね。
顔検出の応用として、OpenCVの「カスケード分類器」を使用した目・笑顔検出プログラムについて解説しました。
手順のおさらい
今回の記事が皆さんのPython学習に役立つなら幸いです。
Python独学が大変な方は、書籍やスクールを活用するのも手です。
WordPressのテーマ選びに悩んでいませんか?無料が良いものか、有料が良いものか…。
本記事では、私が最近導入したWordPressの「SWELL」テーマについてご紹介したいと思います。
これまで無料テーマ「Cocoon」を使用していましたが、有料テーマ「SWELL」に移行したことによって、記事の作成効率が驚くほど高まった上、ブログのデザイン性を飛躍的に向上させることができました。
WordPressテーマ選びに悩んでいる方は、是非「SWELL」を選んでみてください。
「SWELL」は了さんが開発している有料WordPressテーマです。”使い心地を追求したブロックエディター“を特徴としています。動画のようにマウス操作で簡単に装飾を加えていくことができ、ブログ作成効率を大幅に向上させることができます。
SWELLの詳しい特徴は公式ホームページを参照して下さい。
\ SWELLの詳細はこちら /
私は3年ほど無料WordPressテーマ「Cocoon」を使用していましたが、「SWELL」に移行したことで記事作成効率の向上とスタイリッシュなブログデザインを手に入れることが出来ました!
SWELLの良いところは、様々なブロックスタイルが簡単に作成できることです。サイドバーに作成したいブロックスタイルがデフォルトで並んでおり、マウスでクリックするだけ。
マウス1クリックで
簡単に作れますよ!
SWELLは、機能を比較する表などの作成が超簡単!パターンの[SWELL]テーブル内に様々なテンプレートがあります。
マウスクリック1つでこんな表や
商品A | 商品B | 商品C | |
---|---|---|---|
機能A | 少し古い | 普通 | 最新版 |
機能B | 非対応 | 制限付き | 使用可 |
性能A | [単位] | 200500[単位] | [単位] | 1000
性能B | 500[単位] | [単位] | 1000[単位] | 800
デザイン | 普通 | 良い | 微妙 |
価格 | 5,000円 | 10,000円 | 15,000円 |
購入する | 購入する | 購入する |
こんな表が簡単に作れます!
メリット | デメリット |
---|---|
早い 安い うまい | 遠い 閉店が早い ださい |
SWELLは、スタイリッシュな記事一覧リストを簡単に作成することできます。
カード型
リスト型
リスト型(交互左右)
サムネイル型
「Cocoon」はテーマ使用に費用はかかりません。一方、「SWELL」は税込み17,600円の費用がかかります。けっして安くはありません。私は約3年、購入しようかどうか悩んでいました。
他にも買いたいものはいっぱいありましたが、意を決してSWELLを購入しました。
「SWELL」はシェア率が高いので、デフォルト設定で使用していると、他ブログとデザインが似がちになってしまうことです。
SWELLはカスタマイズ性が高いので、これからオリジナリティあるデザインにカスタマイズしていこうと思っています。
「SWELL」は公式ホームページから購入することができます。
WordPressのテーマ選びに悩んでいる方に向けて、私が最近導入したWordPressの「SWELL」テーマについて紹介しました。
これまで無料テーマ「Cocoon」を使用していましたが、有料テーマ「SWELL」に移行したことによって、記事の作成効率が驚くほど高まった上、ブログのデザイン性を飛躍的に向上させることができ、大変満足しています。
ぜひこの素晴らしいテーマを試してみて、自身のブログをより魅力的なものにしてみてください!
]]>この記事では、さくらのレンタルサーバーにWordPressをインストールし、ブログを運用する方法について解説します。
\ この記事はこんな人におすすめ! /
さくらのレンタルサーバーでこれからブログを始めたい人
WordPressは、オープンソースのウェブコンテンツ管理システム(CMS)です。テーマという仕組みを通じて、機能やデザインを拡張・カスタマイズでき、ブログやホームページを簡単に作成・管理することができます。
さくらのレンタルサーバ最大の魅力は、コストパフォーマンスです。425円/月というリーズナブルな価格からWordPressを開始することができます。
従来、速度面が不安でしたが、2022年2月よりHDDからSSDに刷新したことによって、速度が従来比5倍に向上しました。
さくらのレンタルサーバーを選ぶべき理由は、こちらの記事で解説していますので参照して下さい。
さくらのレンタルサーバでWordPressを運用すると決めたら、まずは契約です。個人ブログなら、おすすめはスタンダードプランです。
\ さくらのレンタルサーバ詳細はこちら /
インターネット上にブログを公開するには、ドメインを取得する必要があります。ドメインとは、インターネット上の住所のことです。Googleでしたら「google.com」になります。
ドメイン取得は、独自ドメインを取得する方法、サービスが提供しているドメインを取得する方法があります。独自ドメインは、ユーザーの所有物となるため、下記表のメリットがあります。デメリットとしては取得・維持費用がかかることです。
独自ドメイン
メリット | デメリット |
---|---|
名前を好きなように選べる 信用が高く、Google検索で有利になる レンタルサーバー移行しても同じ名前で使い続けられる | 取得・維持費用がかかる |
一方、サービスが提供しているドメインは、追加費用は必要ありません。ただし、サービス提供元の制約を受けたり、Googleに優遇されにくいなどのデメリットがあります。
家に例えると、独自ドメインは持ち家、サービスが提供しているドメインは賃貸のイメージです。
独自ドメインはさくらサーバーで取得できますし、お名前.comなどでも取得することができます。
コントロールパネル > ドメイン/SSL から「ドメイン新規追加」を選択。
独自ドメインの新規申し込みをします。
お名前.comやMuuMuu Domainが有名です。
独自ドメインを取得したら、さくらのコントロールパネルでこのドメインを追加します。コントロールパネル > ドメイン/SSL から「ドメイン新規追加」を選択し、他社で取得したドメインを追加します。
さくらサーバーの場合、契約すると初期ドメイン(.sakura.ne.jp)が与えられます。初期ドメイン以外を取得したい場合は、コントロールパネル > ドメイン/SSL から「ドメイン新規追加」を選択し、さくらインターネットのサブドメインを取得しましょう。
ドメイン名の種類は自由に選べません。
WordPressをインストールする前にデータベースを作成しておく必要があります。コントロールパネルから「データベース」を選択しましょう。
続いて「新規追加」を選択します。
データベース名を入力して「作成する」を押すと、MySQLデータベースが作成されます。
いよいよWordPressのインストールです。さくらではWordPressインストールは簡単です。
コントロールパネルから「WordPressインストール」を選択。
WordPressのインストール画面に移動します。まず、インストールURL項目で、取得したドメインを選択します。次に利用データベース項目で作成したデータベースを選択しましょう。このときデータベース接続パスワードが必要です。テーブルの接頭語項目は自動的に入力されるので、特に変更する必要はありません。
サイトのタイトルは決まっていれば入力して下さい。後からも変更可能です。続いてWordPressユーザー、パスワード、メールアドレスを入力しましょう。
最後にライセンス、利用規約をよく読んで同意し、「作成する」ボタンをクリックすればWordPressがインストールされます。
コントロールパネルのWebサイト/データ > インストール済みパッケージにWordPressが追加されていたら、WordPressのインストール完了です。
管理画面URLをクリックすると、WordPressの管理画面に移動します。
先ほど設定したユーザー名、パスワードを入力することで管理画面に入ることができます。
SSL(Secure Socket Layer)を使用していないと通信の途中で情報が第三者に盗み見られてしまう可能性があります。そんなブログサイトを閲覧しようと思いませんよね。SSL使用は必須です。SSL使用する方法について説明していきます。
コントロールパネル ドメイン/SSLの「設定」ボタンを押します。
「SNI SSLを利用する」を選択しましょう。SSLを利用することで「https://・・・」で始まるアドレスのサイトに接続できるようになります。ただし、「http://・・・」で始まるアドレスのサイトも接続できてしまいます。そこで「HTTPSに転送する」を選択します。
これによって、「http://・・・」で始まるアドレスサイトに接続したら「https://・・・」で始まるアドレスに転送されるようになります。
この記事では、さくらのレンタルサーバーにWordPressをインストールし、ブログを運用する方法について解説しました。
\ WordPressセットアップのおさらい /
さくらのレンタルサーバーでこれからブログを始めていきましょう!
]]>この記事では、これからブログを始める初心者にとってお薦めなレンタルサーバーを解説します。
調査対象は、信頼性を重視してシェア率上位3社としました。Xサーバー、ロリポップ、さくらです。
結論としては、ブログをこれから始める初心者は、サーバー維持費が気になると思いますので、コストパフォーマンスが魅力的なさくらがお薦めです!
速度を重視するならXサーバー、容量重視ならロリポップを選択しても良いかと思います。
この記事はこんな人にお薦め!
ブログをこれから始める上で、レンタルサーバー選びに悩んでいる人
今回は、WordPressでブログを運用する前提とします。比較対象はシェア率上位3社のXサーバー、ロリポップ、さくらの中で、趣味ブログに適した安価なプランを比較してみました。
比較項目は、料金、ドメイン、速度、ディスク容量、転送量、MySQL個数、無料SSLの有無、サポート体制です。
機能 | Xサーバー スタンダード | ロリポップ | スタンダード | さくら|
ライト | ベーシック | |||
月額料金 | 1100円(12カ月) | 990円(36カ月)418円(12カ月) | 220円(36カ月)990円(12カ月) | 550円(36カ月)437円(12カ月) | 425円(36カ月)
初期費用 | 無料 | 無料 | 無料 | 無料 |
ドメイン取得 | (.com,.netなど) ※24カ月以上の契約 ※2つ目は.com,.netなどは 選択不可 | 2つ無料1,408円/年 ※お名前.comで.comを 取得した場合 | 別途取得必要(.com,.netなど) ※2つ目は.com,.netなどは 選択不可 | 2つ無料1,408円/年 ※お名前.comで.comを 取得した場合 | 別途取得必要
月額料金 | 実質1100円(12カ月) | 990円(36カ月)535円(12カ月) | 337円(36カ月)990円(12カ月) | 550円(36カ月)554円(12カ月) | 542円(36カ月)
ディスク容量 | 速度及び300GB | NVMe SSD200GB | SSDSSD 400GB | SSD 300GB |
転送量 | 無制限 | 無制限 | 無制限 | 無制限 |
個数 | MySQL無制限 | 1個 | 無制限 | 50個 |
の有無 | 無料SSL有 | 有 | 有 | 有 |
体制 | サポート チャット: 平日10:00-18:00 電話: 平日10:00-18:00 | チャット: 平日10:00-18:00 | チャット: 平日9:30-13:00, 14:00-17:30 電話: 平日10:00-18:00 | チャット: 平日10:00-18:00 電話: 平日10:00-18:00 チャット: 平日10:00-18:00 |
お薦め度 | ☆☆ | ☆ | ☆☆ | ☆☆☆ |
WEB ページ |
月額料金は、ロリポップのライトプランが220円/月(36カ月)と断トツに安いです。
しかし、初心者にとってはブログが長続きするか不安で、36カ月払いは勇気がいる決断だと思います。
12カ月払いにすると月額料金は、ロリポップライトプランが418円/月になるのに対し、さくらのスタンダードプランが437円/月とほぼ同額です。月額料金を重視するのであれば、ロリポップのライトプランかさくらのスタンダードプランを選択するべきでしょう。
安いと訳ありなんじゃないのと思う人がいるかもしれません。結論、訳ありです。安い分、何かを削らないと商売成り立つはずがありません。機能で差が出てきますので比較していきましょう。
ロリポップのライトプラン、さくらのスタンダードプランは月額料金が安い分、ドメインが無料でついてこないので注意が必要です!
もし、お名前.comでドメイン取得・維持した場合は1,408円/年、月額に換算すると117円/月かかってしまいます。この金額も考慮しないといけません。しかし、ドメイン取得・維持費を加算したとしても実質月額料金はロリポップのライトプランで535円/月(12カ月)、さくらのスタンダードプランで554円/月(12カ月)です。これでもXサーバーのスタンダードプラン、ロリポップのベーシックプランより500円/月ほど安いです。
Xサーバーのスタンダードプラン、ロリポップのベーシックプランは2個までドメイン無料と謳っていますが、こちらも注意が必要です。「.com」など人気のあるドメインは、2つ目選択不可です。聞いたことないドメイン名使用は、ブログサイトの信用問題に関わります。実質無料ドメインは1つと考えてよさそうです。
\クリックしてドメイン取得/
ブログページの表示速度はユーザーの離脱度に大きく影響があると言われていますので、レンタルサーバーの速度は重要です。
SSDを使用していることが大前提でしょう。4プランの中でもXサーバーはNVMe採用のSSDを使用していますので、速度重視の方はXサーバーのスタンダードプラン一択です。
比較したプランのディスク容量範囲は、200~400GBです。ディスク容量が大きいに越したことはありませんが、ブログ1記事あたりの容量は大したことなく、初心者は200GBあれば十分でしょう。動画もたくさん載せたいという人もいるかと思いますが、動画を載せる場合はYoutubeをリンク貼り付けすればよいだけです。
転送量はどのプランを選択しても無制限のため、気にすることはないでしょう。
MySQL個数は、ブログの運用数に影響出てきます。ロリポップのライトプランはMySQL個数が1個のため、複数ブログを運用したい人は選択してはいけません。さくらサーバーのスタンダードプランはMySQL個数が50個ですが、さすがに50個もブログを運用できる初心者はいないでしょう。
ブログサイトの信用を確保するためにもSSL対応は必須です。どのプランも無料のSSLサーバー証明書Let’s Encrypt(レッツエンクリプト)を使うことができます。セキュリティ面では有料だろうと無料だろうと変わりません。企業サイト、ECサイトを立ち上げないブログ初心者は、無料SSLで十分だと思います。
サポート体制は、どのプランもチャット、電話ともに平日の日中しか対応しておらず頼りないです。サラリーマンは平日仕事で、夜や休日に質問したいのに!ロリポップのライトプランは電話対応すらなく、このプランはないかなと思います。
\ さくらの詳細 /
ブログ初心者は、さくらのスタンダードプランをお薦めします。さくらの最大の魅力は、コストパフォーマンス。425円/月(36カ月)、454円/月(12カ月)というリーズナブルな価格設定です。さくらは速度が遅く、様々なサイトでネガティブなコメントが多かったです。2022年2月よりHDDからSSDに刷新したことによって、速度が従来比5倍に向上し、ネガは消えつつあります。
このサイトもさくらサーバーで運用していますよ。
これからブログを始める初心者は、安価なさくらサーバーで快適なブログ運営を始めましょう!
高速・安定・無料SSL付!月額425円からWordPressが使えるさくらのレンタルサーバ
\ Xサーバーの詳細 /
速度重視の方は、NVMe採用SSDを使用しているXサーバーのスタンダードプランを選択しましょう。
月額料金は、990円(36カ月)、1100円(12カ月)と高めですが、ブログの表示速度が上がりSEO対策に繋がるでしょう。
初期費用無料、月額990円から、高速・多機能・高安定レンタルサーバー『エックスサーバー』
\ ロリポップの詳細 /
ブログだけでなく、データサーバーとしても使いたい人は、ロリポップのスタンダードプランがお薦めです。Xサーバーやさくらより容量が100GB多いのが売りです。
記事をいっぱい書くからディスク容量が多い方がいいのではと思っている人がいるかもしれません。記事数が多いからといってディスク容量はあまり気にしなくてもよいでしょう。1記事=0.01GBとすると100GBあたり10,000記事となります。10,000記事は毎日記事を書き続けても約30年。その頃にはディスク容量もきっと増加しているでしょう。
本記事では、これからブログを始める初心者にとってお薦めなレンタルサーバーを解説しました。
調査対象は、信頼性を重視してシェア率上位のXサーバー、ロリポップ、さくらとしました。
ブログをこれから始める初心者は、サーバー維持費が気になると思いますので、コストパフォーマンスが魅力的なさくらがお薦めだと思います!このブログもさくらのレンタルサーバーを使用しています。
速度を重視するならXサーバー、容量重視ならロリポップを選択しても良いかと思います。
ブログをこれから始める方、この記事を参考にレンタルサーバー会社と契約しましょう!
\ さくらでWordPressを始めるならこちら /
\ ドメインを取得するならこちら /
]]>PythonからGoogle Calendarの予定を取得する方法を学んだので記事にしました。
まず、環境セットアップ方法について解説します。次に、Pythonを使って現在時刻から先の予定を取得する方法について解説します。
それでは始めましょう!
この記事はこんな人におすすめ!
PythonからGoogle Calendarを操作するには、Googleが公開しているGoogle Calendar APIを利用する必要があります。
そのため、Pythonスクリプトを作成する前に以下の事前準備が必要となります。
Google Calendar APIは、Google Cloud PlatformというGoogleが提供するクラウドコンピューティングサービスで有効化することができます。
これらを有効化するには新規プロジェクトを作成しなければいけません。
Google Cloud Platformのページを開き、左上のバーを選択して新しいプロジェクトを選択しましょう。
プロジェクト名を入力して作成ボタンを押すと、新規プロジェクトが作成できます。
続いてGoogle Calendar APIを有効化します。
「APIとサービス」→「ライブラリ」を選択します。
Google Calendar APIを検索し、有効にします。
PythonスクリプトからGoogle CalendarにアクセスするにはクライアントIDを取得する必要があります。
[APIとサービス]>[認証情報]>[認証情報を作成]>[OAuthクライアントID]をクリック。
アプリケーションの種類は「デスクトップアプリ」を選択。名前は適当に入力し、作成をクリックします。
JSONファイルをダウンロードしておきましょう。
PythonからGoogle CalendarにアクセスするとGoogleの同意画面が表示されます。その際の同意画面を設定します。
メニューの[OAuth同意画面]からUser Type「外部」を選択し、「作成ボタン」をクリックします。
アプリ名、ユーザーサポートメール、デベロッパーの連絡先情報を入力して、「保存して次へ」ボタンをクリック。
続いてアクセス権を設定します。
今度はPython側の準備です。Googleクライアントライブラリをインストールします。
ターミナルで以下のように打つとGoogleクライアントライブラリがインストールできます。
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
ここからはPythonスクリプトの解説です。
下記は現在時刻から先の予定を取得するPythonサンプルスクリプトです。
from __future__ import print_function
import datetime
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
def main():
creds = None
# token.pickleファイルにユーザーアクセストークンとリフレッシュトークンが保存され、
# 認証が初めてのときにtoken.pickleは自動的に作成される
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# 資格情報が有効でなければ、ユーザーログインさせる
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# 次回実行時には認証が省略される
with open('token.json', 'w') as token:
token.write(creds.to_json())
try:
service = build('calendar', 'v3', credentials=creds)
# Calendar情報の取得
now = datetime.datetime.now().isoformat() + 'Z'
print('現在時刻から先の予定を10個取得')
events_result = service.events().list(calendarId='******@group.calendar.google.com', timeMin=now,
maxResults=10, singleEvents=True,
orderBy='startTime').execute()
events = events_result.get('items', [])
if not events:
print('予定が1つもありませんでした')
return
# 取得したカレンダー情報を表示
for event in events:
start = event['start'].get('dateTime', event['start'].get('date'))
print(start, event['summary'], event['location'], event['description'])
except HttpError as error:
print('An error occurred: %s' % error)
if __name__ == '__main__':
main()
最初にGoogle認証を行ったのち、現在時刻から先の予定を10件まで取得します。
下記は予定を取得する部分です。
events_result = service.events().list(calendarId='******@group.calendar.google.com', timeMin=now,
maxResults=10, singleEvents=True,
orderBy='startTime').execute()
events = events_result.get('items', [])
calendarIdは何を設定すればいいの?
下記は予定を表示する部分です。
for event in events:
start = event['start'].get('dateTime', event['start'].get('date'))
print(start, event['summary'], event['location'], event['description'])
startは開始時刻、summaryは予定名、locationは場所、descriptionは説明です。
それではPythonスクリプトを実行していきましょう!
Google Calendarには下図の予定1~4を追加しています。本日は5/21なので、予定2~4が取得できるはずです。
Pythonスクリプトを実行するとWebブラウザが立ち上がり、アカウントの選択が求められます。
アクセス許可したアカウントを選択しましょう。
自作アプリのため、「このアプリはGoogleで確認されていません」と表示されます。警告を無視して「続行」ボタンを押しましょう。
次も「続行」ボタンを押します。
ターミナルを見て下さい。予定2~4の時間、場所、説明がターミナル上に表示されるはずです。
2023-05-23T12:00:00+09:00 予定2 新宿 ランチ
2023-05-26T20:00:00+09:00 予定3 六本木 ディナー
2023-05-31T23:00:00+09:00 予定4 浅草 ジム
PythonからGoogle Calendarの予定を取得する方法について解説しました。
この記事がPythonを学ぶ皆さんのためになれば幸いです。
独学が大変な方は、書籍やスクールを活用するのも手です。私も活用しているものを載せておきますので参考にして下さい。
最後までお読み頂きありがとうございました!
]]>