LogoMark.png

堀玲二/情報デザイン研究II の履歴(No.20)


MEMORIES COLLECTION

テンプレートを使った映画の思い出オリジナルカードを作成できるサイト

情報デザイン研究三年後期.png

概要

これは何?

映画鑑賞の思い出を記録し、コレクションできるオリジナルカード作成サイト

背景と目的

映画を観に行ったときにもらうチケットは、多くの場合映画鑑賞後に捨てられてしまう。思い出は次第に風化され、チケットが捨てられれば記憶を思い出すきっかけを失うことになる。本研究ではwebサイトを用いて映画鑑賞という思い出をテンプレートを使い思い出オリジナルカードを作成する。この方法で思い出を形に残し、「コレクション」として楽しめるようにすることで、記憶を呼び起こすきっかけを作り、感動をいつまでも忘れないようにする。


コンセプト


成果物の仕様


制作ツール

Adobe Illustrator
VScode
Procreate
figma

プロジェクトの期間

4月29日〜1月10日(通年)

まとめ

中間まとめ




調査

現状調査

人生で一番大切な仕事は「思い出づくり」
DIE WITH ZERO 人生が豊かになりすぎる究極のルール

映画を観た後、チケットの半券を捨てている人の割合は53.9%
映画の半券を捨てるか捨てないかのアンケート記事

映画のチケットを窓口で購入している人の割合は 63.5%
実践『ペルソナ』通信 (No.47)映画の半券の保存状況に関する調査結果

先行事例

ピンタレストのボード
思い出きっぷ

技法・技術情報

デザインの心理学



プロジェクト管理

スケジュール

情報デザイン研究ガントチャート

ToDo

チケットのデザイン案を計4案考える
デザイン案をもとにチケット作成
ジャンル別に使う色を考える
サイトマップを考える
ワイヤーフレームを考える
サイトで使用する機能のリスト化
サイト内原稿の作成
サイトで使用する機能簡易作成
チケットデザイン案ブラッシュアップ
コーディング





進捗記録




2025.12.01


ユーザーが好きな画像をアップロードし
その画像をキャンバス内に表示させる機能
javascriptコード例

const canvas = document.querySelector("#myCanvas");
const ctx = canvas.getContext("2d");
const imageUpload = document.querySelector('#imageUpload');
let userImage = null;

const img = new Image();

imageUpload.addEventListener('change', (e) => {

   const file = e.target.files[0];
   if (!file) return;
   const reader = new FileReader();
   reader.onload = () => {

       img.src = reader.result;

       img.onload = () => {
           drawCanvas(textInput6.value || '作品タイトル',textInput7.value || '自由記述(40字以内)'); // ← 画像ロード完了後に描画
       };
   };
   reader.readAsDataURL(file);
});
textInput6.addEventListener('input', () => {
   drawCanvas(textInput6.value || '作品タイトル',textInput7.value || '自由記述(40字        以内)');
});
textInput7.addEventListener('input', () => {
   drawCanvas(textInput6.value || '作品タイトル',textInput7.value || '自由記述(40字 以内)');
});

使い方

コード例

const reader = new FileReader();

reader.onload = () => {
 img.src = reader.result;
};

reader.readAsDataURL(file);

①const reader = new FileReader();

②reader.onload = () => {

img.src = reader.result;

};
reader.result は、**FileReader がファイルの読み取りを終えたときに格納する「読み取り結果」**を保持するプロパティです。
読み方(readAsDataURL / readAsText / readAsArrayBuffer)によって中身の型や形式が変わります。

③reader.readAsDataURL(file);

toDataURL()との違い


キャンバス内に画像表示をする際の画像中央での自動切り取り機能
コード例

const drawCanvas = () => {

   const canvasW = canvas.width;
   const canvasH = canvas.height;
   const imgW = img.width;
   const imgH = img.height;


   // canvasを覆うための拡大率(cover)
   const scale = Math.max(canvasW / imgW, canvasH / imgH);
   const drawW = imgW * scale;
   const drawH = imgH * scale;


   // 中央配置
   const dx = (canvasW - drawW) / 2;
   const dy = (canvasH - drawH) / 2;
   ctx.clearRect(0, 0, canvasW, canvasH);
   ctx.drawImage(img, dx, dy, drawW, drawH);
   ctx.fillStyle = `rgba(0, 0, 0, 0.4)`;
   ctx.fillRect(0, 0, canvas.width, canvas.height)}

解説

const scale = Math.max(canvasW / imgW, canvasH / imgH);

ここでやっていること




const drawW = imgW * scale;
const drawH = imgH * scale;

何をしているか




const dx = (canvasW - drawW) / 2;
const dy = (canvasH - drawH) / 2;

何をしているか

ctx.drawImage(img, dx, dy, drawW, drawH);

におけるdx、dyは画像を描き始める X座標とY座標
(canvasW - drawW)と(canvasH - drawH)ではみ出した分を割る2で均等にはみ出して画像を配置する。

実際に画像を切り取っているのではなくCanvas の「キャンバス外に描かれたものは表示されない」という特性を利用して、画像を左右・上下に均等にはみ出す位置に配置している。




2025.11.24



キャンバス内の文章自動改行機能
インプット知識




2025.11.17



コーディング作業を進めました。

toppage.jpg




2025.10.27



技術

function(p) {
return p.price <= 2000;
}

pには配列の各要素が代入される。

2025.10.20



コーディング作業

2025.10.13


発表フィードバック

2025.10.06



発表準備





2025.09.29


機能お試し作成

サイトで使用する機能のリスト化

Webサイトアニメーション理由

この記事では便宜的に、サイトを閲覧しているユーザーを「閲覧者」、サイトで情報を発信・運用している管理者を「発信者」とします。

 参考サイト

インプット技術

JavaScriptと合わせて使用するhtmlタグ

2025.09.22


機能お試し作成

2025.09.15


サイトで使用する機能のリスト化

いきなりサイトを作り始めるのではなく機能のみの作成から始める。
入力した文字を画像上に出力が時間がかかる見込みなので、それ以外
の機能から作成を開始する。

研究進行について