テック大家さんのポートフォリオ
ブログ「テック大家さん」では、筆者が個人的に実行してきた「THE・個人プロジェクト」ともいうべき活動に関する記事を多く投稿してきました。
それらの個人プロジェクトを「ポートフォリオ」としてまとめたのがこのページです。
筆者テック大家さんはかつては大企業で30年近くソフト開発に携わってきました(詳しくは「テック大家さんとは」を参照)。若い頃はWindowsのプログラミングを経験していましたが、大企業でのソフト開発となると外注やオフショア開発といった「他人に作らせる」開発がどうしても多くなります。
一方で筆者個人は自分でプログラミングするのが大好きです。本ブログの記事の内容も必然的に、自信でDIY的に色々と趣味で開発してきた内容を取り上げることも多くなります。
下記では、そのように始めた個人プロジェクトにおいて、解決したかった課題、背景、採用している技術などを簡単に整理して解説しています。元記事へのリンクも載せていますので、詳しく知りたい場合は元記事も併せて御覧ください。
Web系の技術要素が多いですが、スマホアプリ開発から、IoTの組み込み開発、果てはクラウドまで、色々と手掛けております。
それでは、どうぞ!
スゴ吉方位 – Android用ストアアプリ
「スゴ吉方位」というAndroid用のストアアプリを開発、Google Play Storeで公開しています。
「スゴ運。」という書籍で解説されている、吉方位を求める方法が難しかったので、簡単に解決方位を見つけられるようにスマホアプリ化することを目指して開発したものです。
通常、Android開発ではJavaを用いますが、Android / iOSの両対応を目指してWeb系の技術を使ってスマホアプリを開発しました。React + MUIというライブラリというWebアプリ開発のスキームで開発したものを、CapacitorというフレームワークでラップしてAndroidのネイティブアプリのように動作します。

Google Play Storeの以下のボタンからインストールしてみてください。
Yahooショッピングの購入履歴をCSVにダウンロードするツール
建築やDIYに取り組む奥様が、Yahooショッピングでよく資材を購入していたのですが、Web画面だと一覧性が悪い。ExcelやGoogleスプレッドシートなどに手軽に取り込める手段がないかと考えて、ツールを開発しました。
WebブラウザでYahooショッピングの購入履歴ページを開いたときに、CSVファイルを生成するボタンを表示するChromeの拡張機能を実装しました。JavaScript + HTMLでできています。

ソースコードは、以下のGithubで公開しています。
shizuka-na-kazushi/yahoo-shop-odhistory-chrome-extension
SwitchBot CLI (コマンドラインツール)
本ブログでは数々のSwitchBot関連記事を投稿してきました。多くのものは、SwitchBot が正式に公開しているWeb APIの使い方に関するものです。
SwitchBot Web APIは様々な機器に対応しててそれぞれ便利なのですが、いちいち機器毎にプログラミングするのは効率が悪い。いっそのこと、統合的にどの機器もLinuxやMac 、WindowsといったデスクトップOSの上で動作するコマンドラインツールが作れないものか。そのように考えて実現したのがCLIコマンドツールです。
NodeJS向けにTypeScriptで実装しました。NodeJSが動作するプラットフォームであれば、Windowsであれ、Linuxであれ、動作します。

ソースコードは、以下のGithubで公開しています。
shizuka-na-kazushi/switchbot-cli
オーディオ音量ダイヤルのリモコン
自宅の書斎にあるオーディオシステムは、一昔前の代物。リモコン操作が一般的な現代において、このオーディオシステムは音量操作がダイヤル式。
「リモコンで操作したい」
だったら作ればいいじゃん、ということでDIYのスマホでダイヤル式音量を操作するリモコンを開発しました。
開発したのはM5 ATOM S3という小さなIoTデバイスで動作するソフトウエア。この中にJavaScript + HTMLのWebアプリを埋め込みました。物理的にダイヤルを回すのはサーボモータです。ESP32というチップが入った小さなIoTデバイスがサーボモータを制御して音量ダイヤルを回すという作戦です。
開発言語はC++、JavaScriptなどです。


ソースコードは、以下のGithubで公開しています。
shizuka-na-kazushi/switchbot-theatre-commander
Hugoで作った物件紹介デモサイト
自分の所有賃貸物件の入居者向けに情報サイトを作ろうと考えました。その際にどんな仕組みでサイトを作るのが良いかを検討。一つの候補として、静的サイト・ジェネレータのHugoというツールに目に止まります。
どんな事ができるのか試しにやってみたと言う感じです。Hugoによるサイト構築はMarkdownで記事の内容を記載して、「ビルド」(構築)作業をしてサーバーにアップロードする、という流れです。

お試しでHugoでちょっとおしゃれな感じのコンテンツを作ってみたのが以下のページです。
こちらもソースコードは、以下のGithubで公開しています。
shizuka-na-kazushi/hugo-sample-site-with-creative-portfolio
セキュリティカメラ画像一覧システム「ララカム」
所有している賃貸物件に安物の中華セキュリティカメラを導入しています。
カメラの数が多くなってくると、公式のスマートアプリで一覧してみるのが意外と不便。複数個所のカメラ画像を時系列でぱっと見られるようにしたい。こう考えて開発したのが「ララカム」というシステムです。
自分が所有しているレンタルサーバー上で動作するWebアプリです。
Laravel(PHPのフレームワーク)のバックエンドに、React(JavaScriptのフレームワーク)によるフロントエンドが連携する、というアーキテクチャーです。
ソースコードは、今のところ非公開です。
スマートトラッカーFitbitのSwitchBotアプリ
上でも登場したSwitchBotの Web APIに関する開発プロジェクトです。スマートトラッカーFitbit(Versa 4)を購入。せっかくなら、腕時計からSwitchBot経由で扇風機をリモコン操作できないか、ということでプロトタイプ的に実装しました。
開発は、JavaScriptで、Fitbitの開発環境で行いました。こんな小さなデバイスでもJavaScriptでアプリが動作するとは驚きです。

ソースコードは、以下のGithubで公開しています。
shizuka-na-kazushi/fitbit-switchbot
QRコードジェネレータ
大家さんが自分の物件の紹介を自分のサイトに載せるのは当然。そしてサイトを作ったらQRコードを作りたいよね。といういささか強引なロジックでQRコードジェネレータの開発プロジェクトを始めてしまいました。
ちょっとおしゃれで、センターに本ブログテック大家さんのロゴが入るという、迷惑(?!)な仕様のQRコードを生成できます。
開発にはJavaScriptを使っています。

中華セキュリティカメラ・リバースエンジニアリング
安い中華セキュリティカメラは、安心して使えるのだろうか。なにか、外部から操作できるような「穴」は空いていないのか。
そんな疑念を払拭するため…
と言うほどではないのですが、単に技術的興味をもってリバース・エンジニアリングしてみました。ネットで公開されている情報や自信の解析結果を元に、カメラを操作するためのちょっとしたライブラリを開発してみました。
セキュリティカメラの名前や、IPアドレスなどを取り出すことができる実験的なツールです。TypeScriptで開発しています。
ソースコードは、以下のGithubにて公開しています。
shizuka-na-kazushi/cam-cgi-lib
コインランドリーのキャッシュレス化(プロト)
奥さんは自信の所有物件に、入居者用にコインランドリーを設置しました。ですが、キャッシュレスが進む現代において100円玉が必要なコインランドリーってのもイケてない。だったら、クラウドを使ってキャッシュレスシステムできないものか。
このように始めた個人プロジェクトです。残念ながら様々な事情により本格運用には至っておりませんが、技術検討子という位置づけとしてここに上げておきます。
開発に使ってたのは、FirebaseとStripeという2つのクラウドシステムです。これらが連携して動作するWebアプリ(フロントエンド)をReactで開発しました。
ソースコードは、以下のGithubで公開しています。
shizuka-na-kazushi/coin-pay-sys
SwitchBotによる民泊自動化
本ブログに問い合わせがありまして、民泊を運営している方が自動化のシステムを所望されていました。
暑い夏などに、民泊のチェックインの予約に合わせてエアコンを自動的に稼働させておきたい、という要望でありました。
民泊の予定がGoogleカレンダーと連携されていたのでカレンダーの予約を見ながらSwitchBot Web APIを動かして完全自動で運用できるシステムを作りました。動作するのはGoogle Apps Scriptというクラウド上です。
JavaScriptで開発しました。

ソースコードも公開していますが、Github Gistで公開しています。