6月18日(木)より通常授業に戻りました。
当学院生もリズムがとれない中よく頑張っています。武田です。

今年わたしの担当はC言語からPythonに変わりました。
C言語も最初に学ぶプログラミング言語としてはいい言語だと思っています。理由は他のプログラミング言語の文法に大きく影響を与えているので、別の言語を勉強した際、割とすんなりとは入れるからです。ただしコンパイルが必要だったりコード量が新しい言語より長くなりがちなので、初心者は辛いかもしれません。

Pythonはその点では、初心者にやさしいかもしれません。
記述はC言語より少なくて済みますし、サードパーティ製のライブラリをインストールすると色々と面白いことが簡単に出来るイメージがあります。QRコードを作る、画像処理をする、人工知能を扱う…等。

C言語ではできなかったことに今年はPythonの授業で挑戦してみようかと思っています。

Pythonコード例(QRコードを作る)

# -*- coding: utf-8 -*-
import qrcode
file_name = "qr_code.png"
qr_string = "そのやり方は、色々ある"
img = qrcode.make(qr_string)
img.save(file_name)
print("QRコード画像を保存しました")

武田です。今日も肌寒いですね。
ひたちなか情報電子専門学院も来週(5/25)から時間短縮ではありますが、学生は登校開始となります。

話は変わりますが、サーバなどに利用されているLinuxのコマンドWindowsのコマンドプロンプトの命令は似ているものや同じ名称のものまであるので、時々混乱します。
私が間違えるものを表にしてみるとある点に気づきました。

Windowsコマンド Linuxコマンド 意味
cd cd ディレクトリ移動
dir ls ディレクトリ情報表示
del rm ファイルの削除
copy cp ファイルのコピー
rename mv ファイルやフォルダの名前変更/移動
type cat ファイル表示
help man コマンドの使い方表示

とくにファイルの削除、コピー、名前変更のコマンドはよく間違えます。
で、気づいた点は、Linuxコマンドの方が命令の文字数が少ないことです。2文字のシンプルなものが多いかな、というのが印象です。

これからはLinuxコマンドで迷ったら短い方と思い出します。

p5.jsでお絵描きのイメージ画像

こんにちは。武田です。
5月6日まで当学院は休校となっています。
現在、当学院の職員は交代制で出勤しています。

しかし来客はほとんどありませんね。配達の方が時々来る感じです。
就職関係での電話は今日2件ほどありました。企業も学生の求人にはかなり神経質になっているようです。

そうそう、午後に1名登校日を間違えた学生が来ました!
元気そうで良かったです。何はともあれ、健康が一番です。
今年はインフルエンザにかかる学生が当学院では0というのも特筆すべき事かもしれません。

 

マウスが乗ると動くようなボタン

CSSを使うと簡単にアニメーションを伴う処理が記述できます。
リンクによく利用されるマウスが乗った時にボタンが少し動くような処理を紹介します。

例としてdivタグをボタンに見立ててマウスが乗った時、影が少し濃くなってちょっとだけ上に動くようにしてみます。

HTML部分(クラス名としてbuttonを指定)

<div class="button">
	<p>ひたちなか情報電子専門学院</p>
</div>

CSS部分(クラスbuttonとbutton:hover要素にそれぞれ指定)

.button{
	font-size: 24pt;
	font-weight: 900;
	background-color: orange;
	color: white;
	text-align: center;
	box-shadow: 5px 5px 10px #ddd;	/* ボタンの影 */
	padding: 10px;
	transition: all 0.3s ease 0s;	/* 0.3秒かけて変化する*/
}

.button:hover{	/* マウスが乗ったとき */
	box-shadow: 5px 5px 15px #555;	/* 少し影を濃く */
	transform: translateY(-0.18em);	/* 上方向に少し移動 */
}

上記で大事な部分は9行目と13行目、14行目のみです。
あとは見た目の記述なので何でも構いません。

動かしたいタグにtransition要素を指定するのがポイントです。
上記サンプルでは0.3秒かけて.button:hoverで指定したCSS設定に移行するという意味になります。

リンクボタンなどに使えそうです。

新型肺炎の中国での状況を確認する

新型肺炎ウイルスのニュースを見ない日はありません。武田です。
日本での報道は毎日見聞きしていますが、大元の中国ではどのような情報が提供されいるかチェックしてみました。

中国には百度(バイドゥ)という検索サービスがあります。
新型肺炎情况」と検索するとトップにくるのが以下のサイトです。

新型冠状病毒肺炎 – 疫情实时大数据报告

2月14日の朝に見たときのイメージ。
新型肺炎の中国での状況を確認する

感染状況が59913人となっています。(たぶん今現在はもっと増えています)
地図をクリックするとその省ごとの更に細かいデータが示されていました。

下にスクロールすると、日ごとの増加状況が示されています。
新型肺炎の中国での状況を確認する

上記の画像で驚いたのですが、前日より15000人も感染者が増えています
理由は分かりませんが、2月11日と2月12日の差が激しいことがグラフから見て取れました。日本ではこうした状況がリアルタイムでは提供されていないのではないでしょうか。

情報は1箇所から見て判断するだけでは危険だと思います。
今日は参考までに中国では新型肺炎の状況がどう報道されているかを紹介しました。

昔からあるプログラミング言語でもその書き方は変化しています。
例えばJavaScriptという言語ではサイトが表示されたとき(要するに起動時)のイベント処理としてこんな風に書いていました。

window.onload = function(){
	console.log("起動したよ!");
	document.getElementById("message").innerHTML = "書き換えました";
};

window.onloadに関数の処理を代入するかたちの記述です。
最近はイベントリスナ登録というaddEventListenerを使ってこう書きます。

window.addEventListener("load", function(){
	console.log("起動したよ!");
	document.getElementById("message").innerHTML = "起動時のイベントで書き換えました";
});

日本語が変わっていくようにプログラミング言語も変化しています。
もちろん古い形式で書いても動きますが、わたしはなるべく新しい形式で書きます
なぜなら新しい形式はセキュリティ上強化されていたり、処理効率が高かったりとメリットの方が多いからです。(デメリットはたぶん古いコンピュータやソフトで動作しないということです)
日本語なら古い言い回しも趣があっていいですが、プログラミング言語の場合は、新しい形式を取り入れていくべきだと思います。コンピュータやインターネット技術がそもそも新しい技術の集大成だからです。

簡単!Pythonで円相場を取得

インフルエンザが流行っていますが、プログラミングの世界ではPythonが流行りですね。武田です。

当学院では学生の記入する日誌に円相場記入欄があります。
今日はPythonを使ってYahoo!のサイトから円相場を取得して表示するプログラムを作ってみます。

と、言っても以下の短いプログラムです。

# -*- coding: utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup			# BeautifulSoup4をインポート

# Yahooの円相場表示URL
url = "https://info.finance.yahoo.co.jp/fx/detail/?code=usdjpy"

# サイトからデータ取得
data = urllib.request.urlopen(url)

# HTMLをプログラムから扱えるように変換
soup = BeautifulSoup(data, 'html.parser')

# 特定のタグのデータを抽出(ddタグのidがUSDJPY_detail_bidの部分)
usdjpy = soup.find("dd", id="USDJPY_detail_bid")

# テキスト部分のみ表示
print("1ドル = {0}円".format(usdjpy.text) )

実行結果はこんな感じです。(Windowsのコマンドプロンプトで実行)

簡単!Pythonで円相場を取得

スクレイピングによく利用されるbeautifulsoup4を使っています。
ちなみにスクレイピングとは、Webサイトから必要な情報だけ抽出するソフトウエア技術のことです。

Pythonをインストールしてもbeautifulsoup4は標準でインストールされませんので、Pythonをインストール後、ターミナルから、

pip install beautifulsoup4

を実行してbeautifulsoup4をインストールしてください。

今回円相場情報を知るために利用したサイトは以下のサイトです。

米ドル/円 – FXレート・チャート – Yahoo!ファイナンス

このサイトは、こんな感じで表示されます。

簡単!Pythonで円相場を取得

赤丸の部分が取得したい円相場です。ここからどうやって必要な情報を抜き出すかと言うと、まずはCtrl + UキーでこのサイトのHTMLソースコードを表示させます。
ここからは自分で探し出すしかないのですが、わたしが見たところddタグのidがUSDJPY_detail_bidの部分が該当する円相場でした。このように取得したいデータが特定できるようならスクレイピングは簡単です。

簡単!Pythonで円相場を取得

プログラムでは以下の部分がデータを抽出している部分です。

# 特定のタグのデータを抽出(ddタグのidがUSDJPY_detail_bidの部分)
usdjpy = soup.find("dd", id="USDJPY_detail_bid")

ddタグ、とid名称USDJPY_detail_bidが指定されているのが分かるでしょうか。

こうやって自分で探し出すのは、隠された財宝をみつけるとまでは言いませんがけっこう面白いものです。
以上、PythonでYahoo!のサイトから円相場を取得して表示するプログラムでした。
Python面白いですよ!

UnityのAddForce関数でボールを遠くに飛ばす

Unityは、物理計算のプログラムを1から作らなくても便利な関数が最初から利用できます。
わたしの好きなUnityの関数は、AddForce関数です。
AddForce関数は、引数に方向を指定するとUnity上のオブジェクトに力を加えることができます。

こんな感じ。

方向は、Vectorというクラスを使って表現します。
Vectorの引数はそれぞれx方向、y方向、z方向の力を表します。

先ほどの動画だと高さがy方向で、奥行きがx方向の設定にしています。
例えば次のようにするとx軸とy軸、前方45度に力を加えたことになります。(20.0fは強さなので適当です)

Vector3 force = new Vector3(20.0f, 20.0f, 0.0f);

今回ボールオブジェクトには、次のようなC#スクリプトをアタッチ(プログラムをオブジェクトに設定すること)しました。

void Start () {
	Rigidbody rb = GetComponent<Rigidbody>();
	Vector3 force = new Vector3(20.0f, 20.0f, 0.0f);
	rb.AddForce(force, ForceMode.Impulse);
}

Startメソッドに指定しているため、ボールに対して1回ガツーンと前方に力を加えたイメージです。
だからゴルフボールのように飛んでいきました。

この3行足らずのプログラムだけでこのような動作が出来るのは、凄いなあと思ってしまいます。
まあ、だからと言って面白いゲームが作れるかは別問題ですが…

今日は暑いです。武田です。

パソコンにはいろいろなアプリがインストールされていますが、アプリ毎に操作がまちまちだと不便です。
当然、よく使う機能は操作が統一されています。

有名なのは、コピー&貼り付けの「Ctrlキー  +  C」や「Ctrlキー + V」などです。

昔からある機能にF1キーを押すとヘルプを表示する、というものがあります。
プログラミングに使う統合開発環境のVisual Studioでも私自身よく使うのですが、ソースコード内で使い方を知りたいメソッドやクラスを選択してF1キーを押すというものです。

覚えておくと、かなり重宝しますのでプログラミングに困ったらぜひ利用してみてください。

実際の例

例えば、Formatというメソッドの使い方を知りたいとします。
Formatという部分をまず選択して、F1キーを押します。

便利なF1ヘルプ

ブラウザが起動して.NETマニュアルのStringクラスのFormatメソッドの使い方が表示されました。
便利なF1ヘルプ

便利な機能なので、ぜひ使ってみてください。