エンジニアとしての市場価値を測りませんか?PR

企業からあなたに合ったオリジナルのスカウトを受け取って、市場価値を測りましょう

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

三角関数とランダムウォークとガウス過程で作る本物っぽい時系列データ

Posted at

user:

関数 y = sin(x) をベースに、次のような Python 関数を作ってください。

・ユーザは行列Aを入力する。
・行列AはM行N列の行列である。
・N=3であり、sin関数の振幅・周期・位相を表す3つの数値が入る。
・Mはユーザが任意に設定可能で、Mの数だけsin関数を定義できる。
・Aで表されたM個のsin関数の和が、求める関数である。

assistant:

以下のPython関数を作成しました。
この関数 sum_of_sin(A, x) は、行列 A に基づいて M 個の正弦関数を定義し、それらの合計を返します。

  • A[:, 0] は振幅(Amplitude)
  • A[:, 1] は周期(Period)
  • A[:, 2] は位相(Phase)
  • それらを組み合わせた M 個の sin 関数の和を計算します。
import numpy as np

def sum_of_sin(A, x):
    """
    A: M×3の行列 (numpy.ndarray)
       - A[:, 0] -> 振幅 (Amplitude)
       - A[:, 1] -> 周期 (Period)
       - A[:, 2] -> 位相 (Phase)
    x: 計算する点 (float または numpy.ndarray)

    返り値:
        M個のsin関数の和
    """
    A = np.asarray(A)  # 念のため ndarray に変換
    if A.shape[1] != 3:
        raise ValueError("A は M×3 の行列でなければなりません。")
    
    amplitudes = A[:, 0]
    periods = A[:, 1]
    phases = A[:, 2]
    
    # M個の sin 関数を計算し、それらの合計を返す
    return np.sum(amplitudes[:, None] * np.sin(2 * np.pi * x / periods[:, None] + phases[:, None]), axis=0)

# 使用例
A = np.array([[1, 2, 0],  # 振幅1, 周期2, 位相0
              [0.5, 1, np.pi/4],  # 振幅0.5, 周期1, 位相π/4
              [2, 3, np.pi/2]])  # 振幅2, 周期3, 位相π/2

x = np.linspace(0, 10, 100)  # 0から10までの100点
y = sum_of_sin(A, x)

import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel("x")
plt.ylabel("y")
plt.title("Sum of Multiple Sinusoidal Functions")
plt.grid()
plt.show()

image.png

このコードでは、

  • A に M 個の振幅・周期・位相の組み合わせを格納し、
  • それらを使って sin 関数を定義し、
  • M 個の sin 関数を足し合わせた結果を返します。

x はスカラーでも numpy 配列でも動作し、 matplotlib でプロットすると、M個の sin 関数の和が可視化できます。

user:

ありがとうございます。試しにこんなふうに改変してみました。楽しいですね。

# 使用例
A = np.array([[1, 7, 0],  # 振幅1, 周期7, 位相0
              [2, 31, np.pi/4],  # 振幅2, 周期30, 位相π/4
              [3, 365, np.pi/2]])  # 振幅3, 周期365, 位相π/2

x = np.linspace(0, 365, 365)  # 0から10までの100点
y = sum_of_sin(A, x) + x * 0.05

import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel("x")
plt.ylabel("y")
plt.title("Sum of Multiple Sinusoidal Functions")
plt.grid()
plt.show()

image.png

assistant:

おお〜いいですね!
周期が 7(日周期)・31(月周期)・365(年周期) ってところがめちゃくちゃ面白い。
まるで 季節性+週次+月次の変動+トレンド を足し合わせたような、時系列データのモデリング っぽくなってます。
最後に + x * 0.05ゆるやかなトレンド も入れてるの、かなりナイスです。

実際、売上データとかアクセス数データでこんな周期性+トレンドを再現するのに近い発想ですよ。

もし遊びを広げたいなら、

  • ランダムノイズ (np.random.normal(0, 0.2, len(x)) とか) を足すと「リアルなデータ感」になりますし
  • 周期の近い成分(例:29.5日とか、暦とズレた周期)を混ぜると「ビート現象」みたいな複雑なうねりが出てきます。

やってみます?
必要なら拡張版も作ります!

user:

はい、お願いします!

assistant:

では、さらにリアルなデータっぽくなるように 3つの拡張 を加えてみます!

拡張ポイント

  1. ランダムノイズの追加
    → 観測誤差や環境変動を表現(np.random.normal(0, 0.2, len(x))
  2. 微妙にズレた周期の追加
    → 例えば、29.5日の周期(潮汐・月齢)を追加(29.5 vs 31 でビートが発生!)
  3. 指数関数的な成長トレンドの追加
    → 例えば、0.02 * x**1.1 みたいなカーブを加える

コード

import numpy as np
import matplotlib.pyplot as plt

def sum_of_sin(A, x):
    """
    A: M×3の行列 (numpy.ndarray)
       - A[:, 0] -> 振幅 (Amplitude)
       - A[:, 1] -> 周期 (Period)
       - A[:, 2] -> 位相 (Phase)
    x: 計算する点 (float または numpy.ndarray)

    返り値:
        M個のsin関数の和
    """
    A = np.asarray(A)  # 念のため ndarray に変換
    if A.shape[1] != 3:
        raise ValueError("A は M×3 の行列でなければなりません。")
    
    amplitudes = A[:, 0]
    periods = A[:, 1]
    phases = A[:, 2]
    
    # M個の sin 関数を計算し、それらの合計を返す
    return np.sum(amplitudes[:, None] * np.sin(2 * np.pi * x / periods[:, None] + phases[:, None]), axis=0)

# 使用例
A = np.array([[1, 7, 0],         # 振幅1, 周期7, 位相0(週周期)
              [2, 31, np.pi/4],   # 振幅2, 周期31, 位相π/4(月周期)
              [3, 365, np.pi/2],  # 振幅3, 周期365, 位相π/2(年周期)
              [1.5, 29.5, np.pi]])  # 振幅1.5, 周期29.5, 位相π(潮汐周期)

x = np.linspace(0, 365, 365)  # 1年分のデータ(365日)
y = sum_of_sin(A, x) + 0.02 * x**1.1 + np.random.normal(0, 0.2, len(x))  # トレンド&ノイズ追加

# 描画
plt.figure(figsize=(10, 5))
plt.plot(x, y, label="Sum of Sine Waves + Trend + Noise", color="b")
plt.xlabel("Day of Year")
plt.ylabel("Value")
plt.title("Enhanced Sinusoidal Model with Trend and Noise")
plt.legend()
plt.grid()
plt.show()

image.png


ポイント

ランダムノイズ追加 → 実際のデータっぽくなる
潮汐周期(月の影響)を追加 → 「ビート現象」が発生
トレンドを指数成長 → 緩やかに増えるリアルなデータ感


やってみると…

この関数を実行すると、

  • 短周期(週次・月次) でリズムがあり
  • 長周期(年次) で大きな波があり
  • 少しずつ増加するトレンド もある
    そんな「自然な時系列データ」っぽい動きを作れます!

これ、もう時系列解析とか機械学習のシミュレーションに近いですね!
どうです? 実際のデータを分析する前に 「ありそうな動き」 を作るのに使えそうじゃないですか?

user:

いいですね。潮汐周期とかビート現象とか、初めて知りました。

assistant:

面白いですよね!「ビート現象」や「潮汐周期」みたいな話は、物理・音楽・データ分析の世界で結構いろんなところに出てきます。


💡 ビート現象って?

「周期がちょっと違う2つの波が重なると、周期的に強め合ったり弱め合ったりする」 という現象です。

例えば、

  • 周期 30日 の波と
  • 周期 31日 の波

を足し合わせると、基本的に「30日〜31日で変動」するけど、約 30倍 の周期(つまり 約2年半)で強くなったり弱くなったりするような「うねり」が発生します。
これは、音楽で「うなり」として聞こえたり、経済データでも周期がズレて大きな波を生むことがあります。


💡 潮汐周期と月齢

  • 29.5日周期 は、月の満ち欠け(新月→満月→新月)を表す「朔望月(さくぼうげつ)」です。
  • これが 31日周期 などと混ざると、「月ごとのズレ」が生じ、長期的な変動が出ます。

例えば、海の潮の満ち引き(潮汐)は 月の引力の影響 で変化するので、「短い周期の波+長い周期のズレ」が合わさって、複雑なパターンになります。
だから、 天気や海の波の予測、魚の動き にも影響します。


💡 データ分析での応用

ビート現象や潮汐周期のように、「似たような周期がズレていると、長期的な変動を生む」という考え方は、いろんなデータに応用できます。

経済データ
 例:景気循環(短期の変動+長期の成長)
売上データ
 例:週次・月次・年次の変動+トレンド
株価や暗号資産
 例:短期トレーダーの動き+長期投資家の動き
気象データ
 例:エルニーニョ現象(周期5年くらいの温暖化)


🎵 もっと遊ぶなら?

  • もっとズレた周期を追加(例:28日, 32日, 180日, 400日)
  • ノイズをガウス過程やランダムウォークにする(トレンドの複雑化)
  • リアルな時系列データと重ねてみる(実際の売上データとかと比較)

遊びながら「データの背後にあるリズム」を探るの、楽しいですね!
また面白いアイデアあったら、どんどん試してみましょう! 😆

user:

「ノイズをガウス過程やランダムウォークにする(トレンドの複雑化)」ってのを、お願いして良いですか?

assistant:

おお、いいですね!
では、「ノイズをガウス過程やランダムウォークにする」 というのをやってみましょう!


💡 ガウス過程 & ランダムウォークとは?

ノイズの作り方をちょっと変えることで、もっとリアルな時系列データっぽい変動を作れます。

  1. ランダムウォーク(Random Walk)

    • 1つ前の値に ランダムな変化 を足しながら進む
    • →「株価の動き」「気温の変化」「SNSのトレンド」っぽい
    • y[t] = y[t-1] + N(0, σ) みたいな形
  2. ガウス過程(Gaussian Process)

    • ランダムだけど「なめらか」に変動する
    • → 短期の変化は少なく、長期のうねりがある
    • scipy.stats.norm.rvs() でなめらかな乱数を生成

📌 コード

以下のコードでは、

  • random_walk_noise() → ランダムウォークを作成
  • gaussian_process_noise() → ガウス過程っぽいノイズを作成
  • それを sum_of_sin() の出力に加えてプロット
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import gaussian_filter1d

def sum_of_sin(A, x):
    """
    A: M×3の行列 (numpy.ndarray)
       - A[:, 0] -> 振幅 (Amplitude)
       - A[:, 1] -> 周期 (Period)
       - A[:, 2] -> 位相 (Phase)
    x: 計算する点 (float または numpy.ndarray)

    返り値:
        M個のsin関数の和
    """
    A = np.asarray(A)  # 念のため ndarray に変換
    if A.shape[1] != 3:
        raise ValueError("A は M×3 の行列でなければなりません。")
    
    amplitudes = A[:, 0]
    periods = A[:, 1]
    phases = A[:, 2]
    
    # M個の sin 関数を計算し、それらの合計を返す
    return np.sum(amplitudes[:, None] * np.sin(2 * np.pi * x / periods[:, None] + phases[:, None]), axis=0)

def random_walk_noise(size, scale=0.5):
    """ ランダムウォークノイズを生成 """
    noise = np.random.normal(0, scale, size)
    return np.cumsum(noise)  # 積分してランダムウォークにする

def gaussian_process_noise(size, scale=0.5, smoothness=10):
    """ なめらかなガウス過程ノイズを生成 """
    noise = np.random.normal(0, scale, size)
    return gaussian_filter1d(noise, smoothness)  # 平滑化してガウス過程っぽくする

# 使用例
x = np.linspace(0, 365, 365)  # 1年分のデータ(日単位)
A = np.array([[1, 7, 0],         # 週周期
              [2, 31, np.pi/4],   # 月周期
              [3, 365, np.pi/2],  # 年周期
              [1.5, 29.5, np.pi]]) # 潮汐周期

# 正弦波の合成
y_base = sum_of_sin(A, x)

# ノイズを加える
random_walk = random_walk_noise(len(x), scale=0.05)
gaussian_noise = gaussian_process_noise(len(x), scale=0.2, smoothness=15)

# プロット
plt.figure(figsize=(12, 6))

# ランダムウォークノイズ
plt.subplot(2, 1, 1)
plt.plot(x, y_base + random_walk, label="Sin Waves + Random Walk", color="b")
plt.xlabel("Day of Year")
plt.ylabel("Value")
plt.title("Random Walk Noise Added")
plt.legend()
plt.grid()

# ガウス過程ノイズ
plt.subplot(2, 1, 2)
plt.plot(x, y_base + gaussian_noise, label="Sin Waves + Gaussian Process Noise", color="r")
plt.xlabel("Day of Year")
plt.ylabel("Value")
plt.title("Gaussian Process Noise Added")
plt.legend()
plt.grid()

plt.tight_layout()
plt.show()

image.png

🔍 コード解説

  • random_walk_noise() でランダムウォークを作成
    • ランダムな変化を積み上げる ことで、「前の状態に依存する」データを作る
  • gaussian_process_noise() でガウス過程風のノイズを作成
    • ランダムな変化をなめらかに平滑化 して、「短期的な変動は抑え、長期のうねりを強調」
  • sum_of_sin() の波形に、それぞれのノイズを加えてプロット

🎨 出力結果の特徴

  1. ランダムウォーク + Sin波

    • 「不規則な上昇/下降」 + 「周期的な波」
    • 株価やアクセス数みたいな動き!
  2. ガウス過程 + Sin波

    • 「なめらかな変動」 + 「周期的な波」
    • 温度・気象データのような動き!

🚀 もっと発展させるには?

  1. ノイズのスケールを変えて、影響度を調整
    • scale=0.1 → ゆるやか
    • scale=1.0 → 変動が大きい
  2. ガウス過程の「滑らかさ」を変える
    • smoothness=5 → 短期の変動が多め
    • smoothness=50 → 長期のうねりが強調される
  3. 実際のデータに適用してみる!
    • 売上データ
    • 株価や為替のデータ
    • 気象データ

✨ まとめ

📌 ランダムウォークノイズ → 経済データっぽい変動
📌 ガウス過程ノイズ → 自然な長期的うねり
📌 単なる「揺らぎ」じゃなく、よりリアルなトレンドを再現できる!

これで 「時系列データの動きをシミュレーション」 する面白さがまた一段階アップしましたね!
何か他にも試したいことがあれば、ぜひ言ってください! 😆

user:

面白いですね!ありがとうございます。ところで、さきほどのコードで、ランダムウォークノイズを与えた結果と、ガウス過程ノイズを与えた結果、ほとんど変わらないように見えるんですけど、ノイズをもう少し大きくしたほうがいいんですかね?

assistant:

いい視点ですね!
ランダムウォークとガウス過程の違いがあまり見えないなら、ノイズのスケールを大きくする か、ガウス過程の滑らかさを調整する と良いですね。


🛠 改善ポイント

  1. ノイズのスケール (scale) を上げる

    • scale=0.05小さい変動(気づきにくい)
    • scale=0.5はっきり変化が見える
    • scale=2.0めっちゃダイナミックに動く
  2. ガウス過程の「なめらかさ (smoothness)」を調整

    • smoothness=15短期の変動が多い
    • smoothness=50長期のうねりが強い

🎨 改善版コード

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import gaussian_filter1d

def sum_of_sin(A, x):
    """ M個のsin関数の和を計算 """
    A = np.asarray(A)  # 念のため ndarray に変換
    if A.shape[1] != 3:
        raise ValueError("A は M×3 の行列でなければなりません。")
    
    amplitudes = A[:, 0]
    periods = A[:, 1]
    phases = A[:, 2]
    
    return np.sum(amplitudes[:, None] * np.sin(2 * np.pi * x / periods[:, None] + phases[:, None]), axis=0)

def random_walk_noise(size, scale=1.0):
    """ よりはっきりしたランダムウォークノイズ """
    noise = np.random.normal(0, scale, size)
    return np.cumsum(noise)  # 積み重ねてランダムウォークにする

def gaussian_process_noise(size, scale=1.0, smoothness=30):
    """ なめらかさを強調したガウス過程ノイズ """
    noise = np.random.normal(0, scale, size)
    return gaussian_filter1d(noise, smoothness)  # 滑らかにする

# 使用例
x = np.linspace(0, 365, 365)  # 1年分のデータ
A = np.array([[1, 7, 0],         # 週周期
              [2, 31, np.pi/4],   # 月周期
              [3, 365, np.pi/2],  # 年周期
              [1.5, 29.5, np.pi]]) # 潮汐周期

# 基本の正弦波
y_base = sum_of_sin(A, x)

# ノイズを加える
random_walk = random_walk_noise(len(x), scale=1.0)  # スケール大きめ
gaussian_noise = gaussian_process_noise(len(x), scale=1.0, smoothness=50)  # なめらかさ調整

# プロット
plt.figure(figsize=(12, 6))

# ランダムウォークノイズ
plt.subplot(2, 1, 1)
plt.plot(x, y_base + random_walk, label="Sin Waves + Random Walk", color="b")
plt.xlabel("Day of Year")
plt.ylabel("Value")
plt.title("Random Walk Noise Added (Larger Scale)")
plt.legend()
plt.grid()

# ガウス過程ノイズ
plt.subplot(2, 1, 2)
plt.plot(x, y_base + gaussian_noise, label="Sin Waves + Gaussian Process Noise", color="r")
plt.xlabel("Day of Year")
plt.ylabel("Value")
plt.title("Gaussian Process Noise Added (More Smoothness)")
plt.legend()
plt.grid()

plt.tight_layout()
plt.show()

image.png

🔍 これでどう変わるか?

  • ランダムウォーク

    • もっと ギザギザした変動 が強く出る
    • 上がったり下がったりが長期的に積み重なる
    • 株価やSNSのフォロワー数 みたいな動き
  • ガウス過程

    • もっと なめらかな変動 がはっきりする
    • 短期的にはそこまでブレないが、長期的な波がある
    • 温度・経済トレンド・降水量 みたいな動き

🚀 追加で試すなら?

  1. もっと大きな scale=5.0 にしてみる

    • すると めちゃくちゃ激しく変動 する
    • (景気変動とか天気の大荒れみたいな動き)
  2. ガウス過程の smoothness=100 でさらにゆっくりした変動

    • すると ゆるやかにトレンドが変わる動き になる
    • (例えば「平均気温の変化」とか「経済の長期トレンド」)

📌 まとめ

ノイズを強調したことで、違いがよりはっきり見えるようになった!
ランダムウォークは "不規則な上昇・下降" が特徴(積み重なる変動)
ガウス過程は "なめらかな大きな波" が特徴(短期のブレが少なく、長期の変化がある)

この2つの違いを明確にしつつ、どんなデータに適用するか考えると面白くなりますね!
試してみて、また気づいたことがあれば教えてください!😆

user:

うおお、すごい!ランダムウォークなんか、本物っぽい!元々同じデータから作られたとは思えないですね!かなり満足できました!今回の内容をブログに書きたいんですけど、タイトル案を列挙していただけませんか?

assistant:

おお!満足してもらえてめっちゃ嬉しいです!!😆✨
ブログに書くの、めっちゃ良いですね! ぜひぜひ、この記事が「データの見方が変わる!」って人が増えたら最高です!


🎯 タイトル案(インパクト重視)

  • 「sin関数 + ランダムウォーク → あれ?これ本物のデータじゃん!」
  • 「周期 × ノイズ = カオス?データ生成の奥深さ」
  • 「ランダムウォーク vs ガウス過程!時系列データの本質に迫る」
  • 「同じ元データなのに、こうも違う!?シミュレーションの魔法」
  • 「データ分析の罠?あなたの”トレンド”はランダムウォークかもしれない」

🧐 ちょっと真面目なタイトル

  • 「ランダムウォークとガウス過程:時系列データの多様な変動を再現する」
  • 「ノイズの選び方でデータの意味が変わる?シミュレーションで学ぶ時系列解析」
  • 「sin波+ノイズで作るリアルな時系列データ」
  • 「経済も気象もこれで再現?ランダムウォークとガウス過程の違い」
  • 「データの背後にある構造を見抜く:シミュレーションで学ぶ時系列の世界」

🌊 面白い系・ちょい煽り系

  • 「おいおい、こんなのデータサイエンスで習ってないぞ?」
  • 「波+ノイズ → なぜかリアルっぽい時系列が爆誕する」
  • 「sin波にちょっとノイズ入れたら…データの本質が見えてきた!」
  • 「ランダムウォークか、それともガウス過程か?お前はどっち派?」
  • 「データサイエンス初心者が陥る罠:トレンドかノイズか?」

🏆 まとめ

📌 「何を伝えたいか?」で選ぶといいかも!

  • 初心者向けなら → 「データ生成って面白い!」「ランダムウォーク vs ガウス過程」
  • 深掘りしたいなら → 「ノイズの選び方でデータの意味が変わる」
  • ちょっとエンタメっぽくするなら → 「こんなの習ってないぞ?」「お前はどっち派?」

めっちゃ楽しそうな記事になりそうですね!
どのタイトルにするか決まったら、ぜひ教えてください!🎉😆

user:

「三角関数とランダムウォークとガウス過程で作る本物っぽい時系列データ」にしたいと思います。

assistant:

めっちゃ良いタイトルですね!!✨🔥
「三角関数」「ランダムウォーク」「ガウス過程」っていうキーワードがちゃんと入ってるし、「本物っぽい時系列データ」 っていう部分がめちゃくちゃ引きつけますね!

これなら、「え、どういうこと!?どうやって本物っぽくするの?」って興味を持つ人が増えそうです!
ブログ完成したら、ぜひどんな反応があったか教えてください!😆🎉

user:

ありがとうございます。最後に、今回のまとめを書いてください。

assistant:

📌 まとめ:三角関数とノイズで作る「本物っぽい」時系列データ

今回のテーマは、「sin関数 × ノイズ」でリアルな時系列データを作る というもの。
周期的な変動(sin関数)に対して、ランダムウォークガウス過程 を組み合わせることで、実際のデータのような自然な変動を生み出すことができました!


🔹 1. 三角関数で周期性を表現

まず、三角関数(sin関数) を使って、周期的な変動を持つデータを作成しました。

  • 短周期の振動(例:1週間、1ヶ月のリズム)
  • 長周期の振動(例:1年周期の季節性)
  • 複数の周期を組み合わせると、よりリアルな波形に!

🔹 2. ノイズの追加でリアル感をアップ

sin波だけだと綺麗すぎて**「人工的すぎる」** ので、ノイズを追加して**「本物っぽいデータ」** に近づけました。

ノイズの種類 特徴 応用例
ランダムウォーク 不規則な上昇・下降が続く 株価・SNSフォロワー数・為替レート
ガウス過程 なめらかな長期変動 気温・経済トレンド・降水量
  • ランダムウォーク「予測不可能なフラフラした動き」(例:株価の変動)
  • ガウス過程「なめらかで長期的なトレンド」(例:気温や景気の変動)

スケール(振幅)や滑らかさ(ガウス過程のフィルタ強度)を調整することで、より実際のデータに近い動きを再現できました。


🔹 3. 実験結果

  • sin関数だけだと、「教科書に載ってそうな綺麗な波」
  • ランダムウォークを加えると、「予測できないランダムな動き」 に変化
  • ガウス過程を加えると、「自然な長期トレンド」 が出現
  • 同じ元データなのに、ノイズの種類で全く違う動きになるのが面白い!

💡 今回の学び

時系列データの「変動」の裏側には、周期性 + ノイズがある
ランダムウォークとガウス過程は、全く異なるトレンドを生み出す
ノイズの種類や強さを変えるだけで、データの見え方が激変する!


📝 こんなデータに応用できそう!

📊 経済データ(株価、為替、物価)
🌍 気象データ(気温、降水量、エルニーニョ現象)
💹 市場トレンド(SNSの話題、商品の売れ行き)
🎶 音楽や信号処理(ビート現象、振動解析)


🚀 まとめ

単純なsin波にノイズを加えるだけで、思いがけず「本物っぽい」時系列データが作れるのが面白かった!
ランダムウォークとガウス過程の違いをしっかり理解することで、データの本質をより深く理解できるようになりますね!✨

みなさんも、ぜひ色々なパラメータで試してみてください!😆🎉

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?