Javaの「インポート(import)」による引き寄せ魔法をProcessingで視覚化してみた【WSN : L-006】

インポート(import)の世界】というタイトルの説明図。遠くのパッケージにある『com.google.search.Particle』を『import com.google.search.Particle;』という呪文で引き寄せることで、自身のプログラム『net.watataku.art』内では長い住所を書かずに『Particle』という名前だけで呼び出せるようになることを表したイラスト。
  • URLをコピーしました!
今回の記事の目的

Javaの概念「インポート」の本質である、遠くのプログラムを手元に引き寄せて省略名で呼ぶ仕組みをProcessingのキャンバス上に視覚化する。

ワタタク

どうも、上達の研究家のワタタクです。

前回の記事(【超カンタン】Javaの「インポート(import)」ってなに?長いコードを省略する魔法の呪文を徹底解説!)では、インポートの本質が「毎回長いフルネーム(完全修飾クラス名)を書く手間を省くための、魔法の短縮ダイヤル設定」であることを解説しました。

今回はLinked Logカテゴリーとして、「遠くのパッケージにあるプログラムが、importの呪文によって手元のステージへとシュッと引き寄せられ、名前がスッキリ省略名に変化する世界」をProcessingのコードで表現してみました!

言葉の概念をグラフィックに翻訳した設計図とコードを共有します。

この記事を書いた人

クリエイティブコーダー Watataku のプロフィール写真
ワタタク(Watataku)

上達の研究家 / アーティスト

「才能」ではなく「発見」で描く。文系・36歳からの上達ハック。

  • ゼロから独学でクリエイティブコーディングに挑戦し、以下の実績を達成
    • 開始1年8ヶ月目までに公募6つに挑戦し、3つ入選(勝率50%)
      • KITTE大阪の18メートルあるAxCROSS大型スクリーン
      • 虎ノ門ヒルズステーションタワーB2F TOKYO NODE エントランスサイネージで展示
      • UN:O(東京大手町)にある会員限定のサテライトオフィスにて2作品常設展示
  • 開始1年9ヶ月目に、虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示
  • 実際の展示作品と動画、音楽やSEOでの実績はポートフォリオに載せております→https://my-portfolio-blue-three-63.vercel.app/works
目次

脳内をビジュアライズするための設計思想

Javaの import com.google.search.Particle; という仕組みを視覚化するため、以下の3つのこだわりを持って設計しました。

1. 遠くの部屋と「手元のステージ」の距離感

画面の左上に「遠くのパッケージ(com.google.search)」という隔離された部屋を配置し、画面の中央下部に「あなたのプログラム(手元のステージ)」を大きく配置。インポートという「輸入・持ち込み」の距離感を表現しました。

2. 光のラインによる「引き寄せ(ワープ)」の表現

遠くの部屋から手元のステージに向かって、ネオン調のグラデーションラインを伸ばしました。インポートの呪文が唱えられた瞬間、プログラムがこの光のルートを通って手元にシュッとワープしてくるような躍動感をビジュアルにしています。

3. ステージ上で「名前がスッキリ変化する」魔法

遠くの部屋にいるときは「com.google.search.Particle」という長いフルネームで呼ばれていたつぶつぶが、手元のステージに引き寄せられた瞬間、名札の表示が短い「Particle」にスッキリ変化するデザインにしました。

Processing実装コード(Javaモード)

実行すると、インポートの引き寄せ構造がサイバー調のグラフィックとして立ち上がります。

実行結果。

// ==========================================
// 知識を視覚化する:Javaの「インポート(引き寄せ魔法)」
// (マウスクリックでデスクトップに自動保存機能付き)
// ==========================================

PFont jpFont;
float angle = 0;

void setup() {
  size(1200, 600);
}

void draw() {
  // 文字化け・画面更新対策
  jpFont = createFont("Meiryo", 24, true);
  textFont(jpFont);

  background(24, 28, 40); // ダークサイバー背景
  
  // タイトル共通設定
  textSize(24);
  textAlign(CENTER, TOP);
  fill(240);
  text("【インポート(import)の世界】\n魔法の呪文で遠くのプログラムを引き寄せ、名前をスッキリ省略する", width / 2, 30);
  
  angle += 0.02; // 光のエフェクト用
  
  // -------------------------------------------------------------
  // 左上:遠くのパッケージ(com.google.search)
  // -------------------------------------------------------------
  stroke(52, 152, 219, 120);
  strokeWeight(2);
  noFill();
  rect(100, 130, 320, 120, 10);
  
  fill(52, 152, 219);
  textSize(13);
  textAlign(LEFT, TOP);
  text(" 📦 遠くのパッケージ: com.google.search", 110, 140);
  
  // 遠くの部屋にいるときの長い名前のParticle
  drawParticleGraphic(260, 195, "com.google.search.Particle", color(52, 152, 219, 180), 11);

  // -------------------------------------------------------------
  // 中央:import文という「魔法のトンネル」
  // -------------------------------------------------------------
  strokeWeight(4);
  // グラデーション風に光るライン
  for(int i = 0; i < 3; i++) {
    stroke(155, 89, 182, 50 - i*15); // 紫の残光
    strokeWeight(4 + i*4);
    line(260, 245, 600, 380);
  }
  stroke(155, 89, 182); // コアライン
  strokeWeight(2);
  line(260, 245, 600, 380);
  
  // ライン上の光の粒(引き寄せられている最中の演出)
  float t = (sin(angle) + 1) / 2; // 0から1を往復
  float lx = lerp(260, 600, t);
  float ly = lerp(245, 380, t);
  fill(255, 200, 255);
  noStroke();
  ellipse(lx, ly, 10, 10);
  
  // import文の表示
  fill(155, 89, 182);
  textSize(16);
  textAlign(CENTER, CENTER);
  text("✨ import com.google.search.Particle; ✨", 460, 290);

  // -------------------------------------------------------------
  // 中央下部:手元のメインステージ(あなたのプログラム)
  // -------------------------------------------------------------
  stroke(241, 196, 15, 150); // ゴールドの枠線
  strokeWeight(2);
  fill(32, 38, 55);
  rect(350, 380, 500, 150, 10);
  
  fill(241, 196, 15);
  textSize(14);
  textAlign(LEFT, TOP);
  text(" 💻 あなたのプログラム: net.watataku.art", 365, 395);
  
  // 引き寄せられた結果、ステージ上で名前がスッキリ短くなったParticle
  drawParticleGraphic(600, 460, "Particle", color(241, 196, 15), 14);
  
  fill(241, 196, 15);
  textSize(13);
  textAlign(CENTER, TOP);
  text("👉 インポートしたから、もう長い住所を書かずに「名前だけ」で呼び出せる!", width / 2, 545);

  // 操作案内表示
  fill(100);
  textSize(11);
  textAlign(CENTER, BOTTOM);
  text("💡 画面をクリックすると、デスクトップに実行結果が画像で保存されます", width / 2, height - 10);
}

// マウスクリックでデスクトップに保存するイベント
void mousePressed() {
  String desktopPath = System.getProperty("user.home") + "/Desktop/";
  String timestamp = nf(hour(), 2) + nf(minute(), 2) + nf(second(), 2);
  String fileName = "import_magic_" + timestamp + ".png";
  
  save(desktopPath + fileName);
  println("デスクトップに保存しました: " + fileName);
}

// 粒子(Particle)を描画するカスタム関数
void drawParticleGraphic(float x, float y, String displayName, color c, int tSize) {
  pushMatrix();
  translate(x, y);
  
  // ネオンエフェクト
  noFill();
  for(int i = 4; i > 0; i--) {
    stroke(red(c), green(c), blue(c), 40);
    strokeWeight(i * 3);
    ellipse(0, -15, 20, 20);
  }
  fill(255);
  noStroke();
  ellipse(0, -15, 10, 10);
  
  // 名札ラベル
  float labelWidth = textWidth(displayName) + 20;
  fill(25, 30, 45, 220);
  stroke(c);
  strokeWeight(1);
  rect(-labelWidth / 2, 10, labelWidth, 24, 4);
  
  fill(240);
  textSize(tSize);
  textAlign(CENTER, CENTER);
  text(displayName, 0, 20);
  
  popMatrix();
}

コード表現に落とし込んでみて気づいたこと

Javaのインポートを単なる「入力の手間省き」として捉えるのではなく、Processingのキャンバス上で「遠くのものを手元にワープさせ、名前をスッキリ変化させる」という演出に落とし込むことで、インポート文が持つ真のありがたみが深く理解できました。

遠くの部屋では文字サイズを少し小さめ(11)にして長いフルネームの窮屈さを表現し、手元のゴールドに輝くメインステージに引き寄せられたら文字サイズを大きく(14)して「主役として堂々と名前だけで動いている」という対比をコード表現。

光の粒子(lerp())がライン上を往復するアニメーションを見ていると、まさに自分のプログラムの中に別パッケージの知恵が「輸入(インポート)」されてくる躍動感が伝わってきて、Linked Logらしい最高にワクワクする作品になりました。

皆さんもぜひ、このインポートの引き寄せ魔法をデスクトップで動かしてみてください!

ワタタク

それでは今日もレッツワクワクコーディング。

インポート(import)の世界】というタイトルの説明図。遠くのパッケージにある『com.google.search.Particle』を『import com.google.search.Particle;』という呪文で引き寄せることで、自身のプログラム『net.watataku.art』内では長い住所を書かずに『Particle』という名前だけで呼び出せるようになることを表したイラスト。

関連記事

ワタタク(Watataku)
上達の研究家 / アーティスト
独学1年9ヶ月で虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示

言葉×コード×手書き。三位一体の表現が成長する過程の記録

【発信】クリエイティブコーディング(2024.3~) / 絵(2025.11~) / モレスキン / 思考法 / 生き方

▼運営者について
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次