システムの概要
2025年の群馬大学の学園祭 荒牧祭で、自身の一眼で来場者を撮った際に、その写真をすぐに来場者にプレゼントするためのシステムを作りました。
一眼で撮った写真をすぐに共有できるということは、イベントの記念撮影で重要な要素の一つだと考えます。
そこそこ良いカメラで撮った写真は、一般的に画質面でスマホより圧倒的に綺麗です。また、自撮りではない写真という意味でも、普段撮れない構図の写真となり、来場者としては貴重な一枚になるでしょう。
これまでのイベントスタッフでオフィシャルのカメラマンをすることがありましたが、せっかく良い写真が撮れても、来場者に「こんな写真が撮れました〜」と見せることしかできず、もどかしく感じたことが何度もありました。写真が欲しいと言われても、一度SDカードを抜き取ってPCへ転送して、現像した後にメールで送るなどの対応が必要になるため、それぞれの来場者に一律に対応することは困難でした。
そこで、今回の荒牧祭では、来場者の様子を記録写真として収めるとともに、撮った写真をプレゼントできるシステムを作ろうと考えました。
どんなシステムかは動画で見た方が早いと思います。おっきりこみ(学生広報大使)で自分のPOVのVlogをあげているのでこちらもご覧ください。
アイデアのきっかけになったもの
今回のシステムは参考にした既存の作品があります。InstagramのリールかYouTubeのShortsに流れてきた動画があり、おそらくQRコードで共有するアイデアはこれを見て生まれた可能性があります(覚えてない…)。その動画を探したところ、以下の動画が見つかりました。これがオリジナルかどうかは不明ですが、私が以前見たのはこのような動画だった記憶があります。
一見するとこのコスプレの本題は、カメラの格好のコスプレと、実際に撮った写真が背面モニターに映る再現性のインパクトだと思われます。しかし撮影後に後ろを向いたときに、モニターの右下にQRコードがあるのがわかります。
おそらくこのQRコードを読み取ると、写真のアップされたリンクに飛ぶことができ、撮った写真をすぐに手に入れることができるのだと思われます。
(実際執筆時にQRコードを読み込むと、まだアクセスすることができ、このときに予想していた通りのシステムになっていることが確認できました。)
https://www.reddit.com/r/interestingasfuck/comments/ynb5pt/a_photographer_dazzles_spectators_in_japan_with/
https://x.com/cameraaman/
システム構成
全体像

カメラ→スマホのJPG転送
カメラからスマホへの転送はPanasonicが用意してくれているLUMIX labを使いました。
撮ったJPGを自動で転送してくれる機能があり、バックグラウンドでも動作します。シャッターを切ってから1,2秒でスマホ内部のDCIM/LUMIXLabに現れます(早い!)。
後述するアップロード速度問題のために、カメラ側で適切に画像サイズを変更しておく必要があります。
カメラの設定で転送サイズはSサイズ(3.0MB程度)にしました。にしました。記録として高画質な画像も残したいので、RAW+JPGの同時記録の設定にしました。
スマホアプリ内部での処理
サブスマホ(Pixel6a)で動作させたかったため、ネイティブのAndroidアプリを作りました。
新しいもの好き志向で言語はKotlinを選びました。Androidアプリの開発は初めてなので、ほとんどChat GPT頼りです。
せっかくなので荒牧祭のロゴと年月を入ったフレームを事前に作成しました。これをアプリ内部ではめ込んでいます。
ちなみにフレームは縦と横の2種類あって、縦横比によって分岐させています。

スマホアプリのUI
このアプのUIを考えるにあたって、チェキに影響を受けました。
シャッターを押して、しばらく待って、写真がゆっくり出てくる。
どんな写真が撮れたかワクワクしながらみんなでカメラを覗き込んで待つ。
というこの体験がインスタントカメラの大きな魅力だと思います。
この体験をソフトウェア的に組み込みつつ、インスタントカメラの弱点である複数人への写真の共有をQRコードで補うというのがこのアプリの本質です。
写真が出てくるときの体験は次のようにデザインしました。
- 公式カメラマンを名乗って来場者の写真を撮る
- スマホの画面を見せてプリントボタンをタップしてもらう
- 写真がゆっくりスライドして出てくる
- 写真が出終わると、くるっとQR面に裏返る
- 各自のスマホでQRコードを読み取ってもらうように促す
- QRコードのサイトから今撮られた写真が閲覧・ダウンロードできる
UIはアイコンと図形をいくつか使ってプリンター風にしました。

データベースサーバー
DBサーバーの役割はNextCloudに任せました。
専用のサーバーを作るのもよいのですが、開発の期限が短く、既に自宅サーバーでNextCloudを構築していたためこちらを使用しました。
NextCloudにはアップロード、共有リンクの発行という機能が全部備わっていて、アプリからはAPIを叩くだけで利用できます。

表示サイトのフロント部分
QRコードを読み取ってもらった後の、表示部分は簡単な静的サイトにしました。こちらもChat GPTにささっと作ってもらいました。
NextCloudの共有リンクをソースとすることで、htmlから<img src= として参照することができます。(正確に言うと、NextCloudの共有リンクは、NextCloudのプレビュー画面になってしまいます。共有リンクの後ろに/downloadをつけることで、写真単体だけのソースにして参照しています。)
実際に使ってみた
来場者の反応
写真を渡したほとんど全ての来場者の方から、「すごーい」「ありがとうございます」とポジティブな言葉をもらいました。
情報学部の人や外部の方の中には、どうなってるの?と興味津々で聞いてくれる人もいました。
1日目に起きたトラブル
カメラでの撮影からQRコード共有まで、一連の動作を確認して本番に望みましたが、1点致命的なトラブルが発生しました。
それは、モバイル通信で上りが極端に遅かったことでした。サブのAndroidでアプリを動かしていたのですが、サブスマホに入れているPovo回線が会場内では激遅になり、タイムアウト→アップロードエラーとなってしまいました。
何度つなぎ直して計測しても回線速度が向上する見込みがなかったため、急遽docomo回線を1つ契約しました。海外からの旅行者向けの3GB/3日間ほどのプランで、千円ちょっとしました。想定外の出費ですが、この2日間システムの稼働には代えられません。
これでもまだ速度は遅いですが、通信環境が改善しシステムはほぼ使えるようになりました。
あらかじめ4G回線でも動作することを確認していたのですが、予想よりも遥かに遅い回線だったため起きたトラブルでした。
システムの改善点
8割方正常に動作しましたが、いくつか改善点はありました。
一つは常時接続にしていると、LUMIXのバッテリーがとても早く減ることです。これに関してはバッテリーを増やすしかありません。
また、バッテリー交換時や、ちゃんと電源を落としてから復帰する時にスマホとの接続に時間がかかったので、基本USB-C給電をする運用でもいいかもしれません。
また、表示側のサイトで、iPhoneユーザーがスムーズにダウンロードできない問題もありました。
当初から問題視していたのですが、表示サイトに「ダウンロード」ボタンを設置したとしても、iPhoneでは画像を保存する時に長押しするしかないのです。その注意書きもサイトに入れていたのですが、「ダウンロード」ボタンを設置したせいで皆んなそれを押してしまう…これだと、ファイルアプリの”/このiPhone内/ダウンロード”に保存されてしまうので迷子になる….
いっそのこと、ボタンを撤去して、長押しして保存に統一した方がスムーズだと思いました。
感想
当初は2日間で何人かに写真を渡すことができれば上出来かと思っていましたが、サークルの出店、家族連れ、コスプレの人、道ゆく人など、想像以上にたくさんの方に写真を渡せて、とても喜んでもらえました。
次回はもしかしたら大学の卒業式で導入するかもしません…大学の総務課広報係と相談してみます。
感想や改善案をぜひコメントなどしていただけると幸いです。






コメントを残す