登壇した講座の内容が公開されましたのを記念して

SEプラス社のSEカレッジというサービスでいくつかの講座に登壇させていただいています。

今回、SEプラス社が講座の詳細を記事にして公開されたので、記念のため私もアップします。

タイトルは、「単体テストとテストケースの作り方」という講座です。
https://www.seplus.jp/dokushuzemi/secollege/secollege-97.html

そして、書いていただいた記事がこちら!
https://www.seplus.jp/dokushuzemi/blog/2018/08/howto_unit_test.html

他の講座も、順次公開されていかれるようです。

サーブレット・JSPでDBに登録されている画像を表示

JSP

        <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <!DOCTYPE html>
        <html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<table border="1" style="border-collapse: collapse">
			<tr>
				<td>ID</td>
				<td>名前</td>
				<td>画像</td>
			</tr>
			<c:forEach items="${ requestScope.itemList }" var="item">
			<tr>
				<td><c:out value="${ item.id }" /></td>
				<td><c:out value="${ item.name }" /></td>
				<td><img style="width: 100px; height: 100px" src="getImage?id=${ item.id }"></td>
			</tr>
			</c:forEach>
		</table>
	</body>
        </html>

DAO

	package jp.co.example.dao;
	
	import java.awt.image.BufferedImage;
	import java.io.BufferedInputStream;
	import java.io.IOException;
	import java.io.InputStream;
	import java.sql.Connection;
	import java.sql.PreparedStatement;
	import java.sql.ResultSet;
	import java.sql.SQLException;
	
	import javax.imageio.ImageIO;
	
	import jp.co.example.ConnectionManager;
	
	public class ItemDao {
	
		public BufferedImage selectImageById(int id) {
	
			try (Connection conn = ConnectionManager.getConnection()){
	
				// SQL文を作成する
				StringBuffer sbSQL = new StringBuffer();
				sbSQL.append("   select");
				sbSQL.append("          IMAGE");
				sbSQL.append("     from ITEM");
				sbSQL.append("    where ID = ?");
	
				// SQL文を実行する
				PreparedStatement ps = conn.prepareStatement(sbSQL.toString());
				ps.setInt(1, id);
				ResultSet rs = ps.executeQuery();
				
				// 結果セットから画像データを取得し、返却する
				if (rs.next()) {
					InputStream is = rs.getBinaryStream("IMAGE");
					BufferedInputStream bis = new BufferedInputStream(is);
					return ImageIO.read(bis);
				}
	
			} catch (IOException | SQLException e) {
				e.printStackTrace();
			}
			return null;
		}
	}

サーブレット

	package jp.co.example;
	
	import java.awt.image.BufferedImage;
	import java.io.IOException;
	import java.io.OutputStream;
	
	import javax.imageio.ImageIO;
	import javax.servlet.ServletException;
	import javax.servlet.annotation.WebServlet;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	
	import jp.co.example.dao.ItemDao;
	
	/**
	 * Servlet implementation class GetImageServlet
	 */
	@WebServlet("/getImage")
	public class GetImageServlet extends HttpServlet {
		private static final long serialVersionUID = 1L;
	
		/**
		 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
		 */
		protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			// 画像のIDを取得する
			String id = request.getParameter("id");
			
			// 取得したIDに紐づく画像データをDBから取得する
			ItemDao dao = new ItemDao();
			BufferedImage img = dao.selectImageById(Integer.parseInt(id));
			
			// 画像をクライアントに返却する
			response.setContentType("image/jpeg");
			OutputStream os = response.getOutputStream();
			ImageIO.write(img, "jpg", os);
			os.flush();
		}
	
	}

MySQL リモート接続

ユーザ作成

        create user ユーザ名@IPアドレス identification by 'パスワード'

IPアドレスはクライアント

権限付与

        grant all on *.* to ユーザ名@IPアドレス

IPアドレスはクライアント

接続確認

        mysql -h IPアドレス -P 3306 -u ユーザ名 -p

IPアドレスはサーバ、ユーザ名は「ユーザ作成」で作ったユーザ名

年賀状でオリジナルショートムービを送る方法(無料で)

みなさん、年賀状はもう作りましたか?


CMなどでは、動画を年賀状で送るサービスが流れていますね。
QRコードスマホで読み取ると、動画が再生する仕組みです)


動く年賀状サービスは色々あります。
http://clip.cc/ja/nenga.html
http://postcard.jp/ugokunenga/
http://ugoku-nenga.jp/sp/


でも、有料のものばかり・・・


そんなサービスを使わなくても無料でできちゃいますよ!
今回は、「年賀状のQRコードスマホで読み取ると動画が再生する」を実現します。
※年賀状を受け取った人のスマホにARアプリが入っていないとダメってサービスは、ちょっと厳しいですよね


さて、ではさっそく無料でオリジナルムービーを作って年賀状にしちゃいましょう。


◆用意するもの
 ・パソコン(Windows OSでやります。スマホだけでは厳しいと思います)
 ・プリンタ(なくても大丈夫です。作ったデザインを印刷サービスで頼めばOK ← ただしお金かかります)
 ・オリジナルムービー用の写真素材(10枚ほどあれば、1分弱の動画が作れます)
 ・音楽素材(お正月に合う無料の音楽素材は結構落ちています)


◆使うもの
 ・Picasa3(Google社製の写真管理ソフト(インストールが必要)。これでオリジナルムービを作ります。Windows8でも使えます)
 ・Convert.Files (ファイル形式変換サービス)
  - Free & Online File Converter - ConvertFiles.com
 ・DropBox (OneDriveなどでもOK)
  - Dropbox
Unitag (デザインQRコード作成サービス)
  - Design QR Code generator - Free - Unitag


◆作り方
 1.オリジナルショートムービーを作る
   1-1. ムービーで使う素材(写真など)を1つのフォルダにまとめておく(例えば、デスクトップに"年賀状"フォルダを作って、そこに素材を入れておく)
   1-2. Picasaを起動して、素材を集めたフォルダを認識させる (ほっといてもPicasaが取り込むはずですが、Picasaの"ファイル"メニューから"インポート"を選んでインポートでもOK)
   1-3. フォルダ/アルバムのヘッダーにある ムービー プレゼンテーションを作成ボタンをクリック
    
   1-4. 音楽素材を取り込んだり、移行スタイルを変更し、スライドの順番などを入れ替えて、再生ボタンで出来栄えを確認
    
   1-5. 出来上がったら、ムービーを作成ボタンを押す (wmvファイルが出来上がります)


 2.wmvファイルをmp4などに変換する (wmvファイルは、QRコードを読み取り時に動画を再生せずにファイルをダウンロードしてしまうため)
   2-1. wmvファイルは、Convert.Filesを使って、今回はmp4形式に変換します。(そんなに難しくないので解説はこれくらい。変換には少し時間(1分くらい?)がかかります。)


 3.出来上がったmp4ファイルを公開クラウドにアップする
   3-1. DropBoxEvernote、OneDriveなどの公開フォルダにアップします(私はDropBoxを使いました)
   3-2. ファイル名は、URLの一部になるので、半角英数字だけが良いと思います


 4.公開URLをQRコードに変換する (モノクロではなく、ちょっとオシャレなQRコードにします)
   4-1. Unitagを使って、動画の公開URLをデザインQRコードに変換します
   4-2. 出来上がったQRコードを年賀状のデザインにレイアウト


 5.後はプリンタで印刷すれば完成!


◆作ってみた感想
ショートムービーを作るのが1番時間がかかりました。
WeVideoっていうサービスを最初作っていたのですが、WeVideoは動画の右上に必ず"WeVideo"って書かれていて、最後にWeVideoの広告が流れるので、Picasaにしました。


それからwmvファイルをDropBoxにアップするだけでいけると思っていたのですが、ブラウザで起動できず、mp4変換が必要なことに気づくのにも少し時間が・・・


でも、これで有料サービスを使わなくても動画を送ることができるようになったので、めでたしめでたし♪

期末パーティ

先日、自社の期末パーティが横浜みなとみらいの映画館で行われました。
例年だと高級ホテルや有名な商業ビルで開催するのですが、今年は映画館!


社員にとっては、テンションが上がるイベントですが、私はそこでスピーチを・・・
映画館の巨大スクリーンを使ったスピーチとなると、当然プレゼン資料はそれなりに・・・(汗)


普段、さまざまな場所でスピーチしている私でも巨大スクリーンというのは初めてです。
資料作りは自ずと力が入りましたが、時間も限られていたのでまぁまぁな出来で・・・


って愚痴ばかり


さて期末パーティは無事終わった訳ですが、とても素晴らしいパーティでした。
落ち着いて振り返ると、映画館の巨大スクリーンを使ってのスピーチって、貴重な体験ですよね。


もっと味わっておけば良かったなぁと今さらながら後悔です。


パーティの模様などは、自社のFacebookページでご覧ください。
https://www.facebook.com/kronosjp


さぁ年末です。今から年賀状作ります!
来年も良い1年でありますように。

家庭教師をしていた頃の話(実践編)


導入編では愚痴っぽいお話になってしまいましたが、今回は私が家庭教師先(ご家庭)での経験を実践編として綴ります。


私はご家庭への初日は自己紹介も兼ねて、親(とりわけお母様)が家庭教師(私)に期待することを必ず聞くようにしていました。
まぁ受験生の場合は当然「受験合格」ですが、それでも最初は必ず聞きました。※お子さんも同席させます。


私が少し驚いたのは受験生ではない子の親の回答です。
既に教材を購入しているご家庭なので、私は当然のように「家庭教師には当然教材を進めてほしい」「勉強を教えてほしい」「成績を伸ばしてほしい」と言うものと思っていたのですが、
「学校では内気で発言ができないので、自信をもって発言ができるようにしてほしい」「とにかく部屋に閉じこもってゲームばかりしているので、どうにかしてほしい」
という考えもしなかった回答ばかりだったのです。


そのため、私はそれぞれのお子様に合わせて何ができるかを考えたものです。
学校の話を聞いたり、世の中で起きていることを説明したり、一昔前のおもちゃを作ったり、それで遊んだり、勉強も少ししましたが大半はそんなことばかりしてました。


そんな中、先に書いた「学校から帰ってくるなりすぐに部屋に閉じこもってゲームばかりしている中学2年生の子」については特に力を入れました。
そもそも勉強が大嫌いなようで、学年でもビリから2番目。勉強を目の前で教えていても居眠りする。
かと言って、活発な子かというとそうではなく、非常に暗く、滅多にしゃべらない非常に温厚な子でした。


今度居眠りしたら外を走りに行こうと言ったそばから、寝てしまったため親に外出許可を取って冬の暗く寒い中を一緒に走ったこともあります。
いろんな世間話をしたり、勉強の楽しさを知ってもらおうともしました。
毎週のように、対策を練ってからその子の家にお邪魔するという日が続きましたが、どれも期待するほどの効果はありませんでした。


そんなある日、こちらの思いばかりを伝えようとしてもダメだと気づき、その子がしたいことを聞いてみようと思い、将来何になりたいのかを根気強く聞いてみました。
すると、ようやく「ミュージシャンになりたい」という回答がありました。


これはキタ!と思いました。将来やりたいこともない、何も考えていないような子だと苦しんだとおもいますが、少なくともこの子は将来やりたいことがあると思ったときは、ほっとしたものです。
ただここからが少し難関でした。色々話を聞いてみると


学校の音楽(合唱や合奏)に興味がない。
カラオケにも行ったことがない。


「どうしてなりたいの?」って聞いてみると、当時全盛期だったモーニング娘。加護ちゃんが好きだからという理由でした。
「どうやったらミュージシャンになれるか知ってる?」って聞いたら、「知らない」と帰ってきました。


でも否定する訳にもいきません。折角の夢ですから、本当にミュージシャンになるなら、歌を歌う練習をしなければならないこと
ボイストレーニングしたり、さらには事務所に所属するためにはオーディションに参加したり、路上ライブなどもといったこと
を一般常識レベルで説明してあげました。
さらに、今の状態からミュージシャンになるには、相当の努力が必要だということ。勉強しなくたって有名なミュージシャンになれること
その子の場合は、勉強している場合ではないかもしれないことも話ました。


その説明の後でもまだミュージシャンになりたいと言うのですから、たいしたものです。
なので、親の前で自分の夢を説明できるか、ミュージシャンになるために勉強は捨てて歌の練習などに時間を割くことをお願いできるかと聞きました。


当然です。自分の夢が嘘でなければ、その説明やお願いを親にできるはずだからです。
むしろ、できなければそれは適えようとする夢ではなく、ただの憧れにすぎません。


そして、お母さんを呼び、彼はお母さんの前で、30分ほど沈黙の後にようやく自分の夢を泣きながら伝えたのです。もちろん夢だけではなく、夢を実現するために、ミュージシャンの勉強をさせてほしいことも彼自身の口から語りました。


よくやったと思いました。その後は、私からもお母さんに説明をしました。
お母さんは彼の夢など聞いたこともなかったようでした。
そして「話はわかったが、ミュージシャンになれなかった場合のリスクがある」という話を彼にしました。
私もそれを望んでいました。なので、今度は私から彼に勉強することが後々の可能性を広げることになるという話をしました。


そんなこんながあり、前置きが長くなりましたが、結果をお話すると
毎週土日になると、お父さんが彼の勉強を一緒になって見てくれるようになり、彼の家は家族間で話合う時間が増えたのでした。


私はもう要なしです。そのご家族の家庭教師を辞めることにしました。
でもきっと、その後もうまくいってくれたと思います。


失敗談もあります。
親が一風変わったお勉強熱心なご家庭もありましたが、非常に勉強ができる子(えーと正確に言うとテストが良くできるメガネをかけたガリ勉タイプの小学生)だったのですが、何も教える必要がなく、私としてはもっと外で遊ぶことを覚えた方がいいと思って、親に話をしましたがものすごくプライドが高く、勉強だけしていればいいの!みたいなことだったので「今家庭教師をつけても何も変わりません」と言って辞退させていただいたことがあります。
あの子には、本当に外で遊ぶ楽しさを教えてあげたかったなぁ


話を元に戻しましょう。
私は教育学部の出身でもありませんし、教職免許も取っていません。
ただ人に教えることは好きで、今でも教えることをお仕事でさせてもらっています。
今後、弊社ではIT業界の方への教育(パソコンの基礎からプログラム、セキュリティ、プロマネ、ヒューマン)を拡充していく予定なのですが
通り一遍のつまらない教育ではなく、受講者のためになる面白い教育を考え、実践できる方と一緒に講師をしていけたらと思います。