DeL-TaiseiOzaki commited on
Commit
c8daf1e
·
verified ·
1 Parent(s): 4d6ebfa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +452 -257
app.py CHANGED
@@ -1,95 +1,310 @@
1
  import streamlit as st
2
  from PIL import Image
3
  import os
 
 
 
 
 
 
 
 
4
 
5
  # セッションステートの初期化
6
  if 'initialized' not in st.session_state:
7
  st.session_state.initialized = True
8
 
9
- # カスタムCSSの適用
10
  st.markdown("""
11
  <style>
12
  /* Google Fontsのインポート */
13
- @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');
14
 
15
- /* 全体のフォント設定 */
16
- html, body, [class*="css"] {
17
- font-family: 'Open Sans', sans-serif;
 
 
 
 
 
 
 
 
 
18
  }
19
 
20
- /* 背景のグラデーション設定 */
21
  .stApp {
22
- background: linear-gradient(135deg, #1ABC9C 0%, #16A085 100%);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
24
 
25
- /* メインコンテンツのスタイル */
26
- .main {
27
- background: rgba(0, 0, 0, 0.6);
28
- padding: 20px;
29
- border-radius: 10px;
 
 
 
30
  }
31
 
32
- /* ヘッダーのスタイル */
33
- h1, h2, h3, h4, h5, h6 {
34
- color: #FFFFFF !important;
35
- font-family: 'Open Sans', sans-serif;
36
- font-weight: 700;
 
 
 
 
 
37
  }
38
 
39
- /* テキストの色設定 */
40
  p, li {
41
- color: #FFFFFF;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
43
 
44
- /* リンクの色設定とホバーエフェクト */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  a {
46
- color: #1ABC9C !important;
47
  text-decoration: none;
48
- transition: color 0.3s ease;
 
49
  }
 
50
  a:hover {
51
- color: #16A085 !important;
52
- text-decoration: underline;
53
  }
54
 
55
- /* リストのスタイル */
56
- ul {
57
- list-style-type: none;
58
- padding-left: 20px;
59
  }
60
- ul li::before {
61
- content: '▹';
62
- color: #1ABC9C;
63
- margin-right: 8px;
64
  }
65
 
66
- /* カードスタイル */
67
- .card {
68
- background: rgba(255, 255, 255, 0.1);
69
- padding: 20px;
70
- border-radius: 10px;
71
- margin-bottom: 20px;
 
 
 
 
 
 
72
  }
73
 
74
- /* プロフィール画像のスタイル */
75
- .profile-pic img {
76
- border-radius: 50%;
77
- border: 2px solid #1ABC9C;
78
  }
79
 
80
- /* フッターの非表示 */
81
- footer {
82
- visibility: hidden;
 
 
 
 
 
 
 
 
83
  }
84
 
85
- /* レスポンシブ対応 */
 
 
 
 
 
 
 
 
86
  @media (max-width: 768px) {
87
- .main {
88
- padding: 10px;
89
- }
90
- .profile-pic img {
91
- width: 150px !important;
92
- }
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
  </style>
95
  """, unsafe_allow_html=True)
@@ -100,226 +315,206 @@ def image_exists(path):
100
 
101
  # メイン関数
102
  def main():
103
- # タイトルとロゴの表示
104
- col1, col2 = st.columns([1, 8])
105
- with col1:
106
- if image_exists('my_logo.jpg'):
107
- st.image('my_logo.jpg', width=70)
108
- else:
109
- st.warning("Logo image not found")
 
 
 
 
 
 
 
 
 
110
  with col2:
111
- st.markdown("<h1 style='padding-top: 20px;'>Taisei Ozaki Profile Page</h1>", unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
- # プロフィール概要
114
- st.markdown("<div class='main'>", unsafe_allow_html=True)
115
- st.header("📝 プロフィール概要")
116
- col1, col2 = st.columns([1, 2])
117
 
118
  with col1:
119
- if image_exists('profile_pic.jpg'):
120
- st.markdown("<div class='profile-pic'>", unsafe_allow_html=True)
121
- st.image('profile_pic.jpg', width=200)
122
- st.markdown("</div>", unsafe_allow_html=True)
123
- else:
124
- st.warning("Profile picture not found")
125
-
126
- with col2:
127
- st.write("""
128
- **尾﨑 大晟** :大阪公立大学の博士後期課程(D1)の学生で、機械工学とNLP・AI,とりわけLLMを専門としています。
129
- 私の研究は大規模言語モデル(LLM)とLLMの暗黙知やAIエージェント,LLM as a Control,自動運転に焦点を当てています。
130
- 大学では自然言語処理をテーマに、大規模言語モデルを議論的対話の観点から定量評価する研究を行っており、特にAIとその教育的価値に興味があります。
131
- 博士後期課程では,LLMを用いた機械力学システムの安全性評価に関する研究に取り組んでいます。
132
- 高校卒業後、個人事業主として投資・投機ビジネスを経験した後、学問や研究の深さに惹かれ大学進学を決意しました。
133
- 課外活動では、eスポーツチームの運営、Jリーグクラブでの副音声実況活動、東京大学松尾研究室との関わり、国立情報学研究所のLLM-jpプロジェクトへの参加など、多岐にわたる活動を行っています。
134
- """)
135
-
136
- st.markdown("</div>", unsafe_allow_html=True)
137
-
138
- # 学歴セクション
139
- st.markdown("""
140
- <div class='section card'>
141
- <h2>🎓 学歴</h2>
142
- <ul>
143
- <li><strong>2025年4月 - 現在:</strong> 大阪公立大学大学院 工学研究科 機械系専攻 博士後期課程課程</li>
144
- <li><strong>2023年4月 - 2025年3月:</strong> 大阪公立大学大学院 工学研究科 機械系専攻 博士前期課程</li>
145
- <li><strong>2019年4月 - 2023年3月:</strong> 大阪府立大学 工学域 機械系学類 学士課程</li>
146
- <li><strong>2017年3月:</strong> 愛媛県立宇和島東高校 卒業</li>
147
- </ul>
148
- </div>
149
- """, unsafe_allow_html=True)
150
-
151
- # 職務経験セクション
152
- st.markdown("""
153
- <div class='section card'>
154
- <h2>💼 職務経験</h2>
155
- <ul>
156
- <li><strong>2025年4月 - 現在:</strong> 東京大学 松尾岩澤研究室 及び 株式会社松尾研究所/Matsuo Institute データサイエンティスト</li>
157
- <li><strong>2023年7月 - 2025年3月:</strong> 株式会社松尾研究所/Matsuo Institute AIエンジニア</li>
158
- <li><strong>2024年1月 - 2024年2月:</strong> 日本電信電話株式会社 長期研究インターン</li>
159
- <li><strong>2023年10月 - 2023年12月:</strong> 株式会社PKSHA Technology アルゴリズムエンジニア インターン</li>
160
- <li><strong>2023年7月 - 2023年9月:</strong> 日本電気株式会社(NEC) 長期有償型���究インターン</li>
161
- <li><strong>2018年9月 - 2022年12月:</strong> 個人事業主(為替取引業などに従事)</li>
162
- </ul>
163
- </div>
164
- """, unsafe_allow_html=True)
165
-
166
- # 受賞歴セクション
167
- st.markdown("""
168
- <div class='section card'>
169
- <h2>🏆 受賞歴</h2>
170
- <ul>
171
- <li><strong>2025年3月:</strong> 大阪公立大学 学長表彰
172
- <ul>
173
- <li>優れた実績を出した学生に贈られる賞</li>
174
- </ul>
175
- </li>
176
- <li><strong>2025年3月:</strong> 経済産業省 AKATSUKIプロジェクト採択 関西テッククリエイターチャレンジ 関西地域代表
177
- <ul>
178
- <li>関西AKATSUKIで発表されたプロジェクトの中で代表として経産省に発表</li>
179
- </ul>
180
- </li>
181
- <li><strong>2025年2月:</strong> 東京大学松尾岩澤研究室 Deeplearning応用講座 世界モデル 優秀賞
182
- <ul>
183
- <li>講座の優秀修了</li>
184
- </ul>
185
- </li>
186
- <li><strong>2024年12月:</strong> 東京大学松尾岩澤研究室 Deeplearning応用講座 大規模言語モデル 優秀賞
187
- <ul>
188
- <li>講座の優秀修了</li>
189
- </ul>
190
- </li>
191
- <li><strong>2024年6月:</strong> 人工知能学会 全国大会 口頭発表部門 優秀賞
192
- <ul>
193
- <li>「LLM による前提生成ステップを用いた反論の攻撃力向上手法」</li>
194
- </ul>
195
- </li>
196
- <li><strong>2024年6月:</strong> GENIAC 松尾研 LLM開発プロジェクト コンペティション第3位
197
- <ul>
198
- <li>LLM開発コンペティションで3位入賞</li>
199
- </ul>
200
- </li>
201
- <li><strong>2024年3月:</strong> 大阪公立大学大学院 工学研究科 学生顕彰
202
- <ul>
203
- <li>学術研究で優れた成果を挙げた学生に贈られる賞</li>
204
- </ul>
205
- </li>
206
- <li><strong>2023年9月:</strong> 東京大学グローバル消費インテリジェンス寄付講座 優秀賞
207
- <ul>
208
- <li>講座の優秀修了</li>
209
- </ul>
210
- </li>
211
- <li><strong>2023年6月:</strong> 人工知能学会 全国大会 ポスター発表部門優秀賞
212
- <ul>
213
- <li>「大規模言語モデルが生成した反論文の評価」</li>
214
- </ul>
215
- </li>
216
- </ul>
217
- </div>
218
  """, unsafe_allow_html=True)
219
-
220
- # 論文セクション(リンク付き)
221
- st.markdown("""
222
- <div class='section card'>
223
- <h2>📚 学術発表・論文</h2>
224
- <ul>
225
- <li><strong>2025年3月12日:</strong> <a href='https://www.ai-gakkai.or.jp/jsai2025/' target='_blank'>「JDERW :世界モデルを要する推論問題に関する日本語LLM ベンチマーク」</a> 人工知能学会全国大会</li>
226
- <li><strong>2025年3月12日:</strong> <a href='https://www.anlp.jp/proceedings/annual_meeting/2025/pdf_dir/C5-6.pdf' target='_blank'>「LLM as a Debate Judge: 学習者ディベーターへの自動フィードバック生成」</a> 言語処理学会年次大会</li>
227
- <li><strong>2024年5月29日:</strong> 「異常検知モデルを用いた電動キックボード乗車時のドライバの障害物への気付きの推定」 日本機械学会 ロボティクス・メカトロニクス部門</li>
228
- <li><strong>2024年5月28日:</strong> <a href='https://www.jstage.jst.go.jp/article/pjsai/JSAI2024/0/JSAI2024_3F1GS1004/_article/-char/ja' target='_blank'>「LLMを用いた反論文の攻撃力向上手法の提案」</a> 人工知能学会全国大会</li>
229
- <li><strong>2024年5月28���:</strong> <a href='https://www.jstage.jst.go.jp/article/pjsai/JSAI2024/0/JSAI2024_4Xin292/_article/-char/ja' target='_blank'>「大規模言語モデルの生成反論文のテンプレート追従性」</a> 人工知能学会全国大会</li>
230
- <li><strong>2024年3月15日:</strong> <a href='https://www.anlp.jp/proceedings/annual_meeting/2024/pdf_dir/P9-27.pdf' target='_blank'>「大規模言語モデルを用いた有効反論箇所としての前提生成」</a> 言語処理学会年次大会</li>
231
- <li><strong>2023年5月28日:</strong> <a href='https://www.jstage.jst.go.jp/article/pjsai/JSAI2023/0/JSAI2023_4Xin111/_article/-char/ja/' target='_blank'>「大規模言語モデルが生成した反論文の品質評価」</a> 人工知能学会全国大会</li>
232
- </ul>
233
- </div>
234
- """, unsafe_allow_html=True)
235
-
236
- # プロジェクトセクション
237
- st.markdown("""
238
- <div class='section card'>
239
- <h2>🚀 プロジェクト</h2>
240
- <ul>
241
- <li><strong>2024年8月 - 2025年2月:</strong> 経済産業省 AKATSUKIプロジェクト採択 関西テッククリエイターチャレンジ
242
- <ul>
243
- <li>革新的なアイデアを持つ若手テック人材を応援するプログラム</li>
244
- </ul>
245
- </li>
246
- <li><strong>2024年9月 - 2025年1月:</strong> 経済産業省 NEDO採択 東京大学松尾研究所 大規模言語モデル開発プロジェクト「Geniac」 チームOzakiリーダー
247
- <ul>
248
- <li>国内の生成AI開発力強化を目的としたプロジェクト</li>
249
- </ul>
250
- </li>
251
- </ul>
252
- </div>
253
  """, unsafe_allow_html=True)
254
-
255
- # 資格・講座セクション
256
- st.markdown("""
257
- <div class='section card'>
258
- <h2>🎖 資格・講座</h2>
259
- <ul>
260
- <li><strong>2023年10月:</strong> 東京大学 世界モデル Deep Learning応用講座 2024</li>
261
- <li><strong>20239月:</strong> 東京大学 大規模言語モデル Deep Learning応用講座 2024</li>
262
- <li><strong>2024年7月:</strong> 東京大学 サマースクール2024 深層生成モデル</li>
263
- <li><strong>2024年4月:</strong> 東京大学 深層学習 / Deep Learning基礎講座</li>
264
- <li><strong>2023年9月:</strong> 東京大学 サマースクール2023 大規模言語モデル</li>
265
- <li><strong>2023年8月:</strong> 東京大学 グローバル消費インテリジェンス寄付講座</li>
266
- </ul>
267
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  """, unsafe_allow_html=True)
269
-
270
- # スキルセクション
 
271
  st.markdown("""
272
- <div class='section card'>
273
- <h2>🛠 スキル</h2>
274
- <ul>
275
- <li><strong>プログラミング言語:</strong> Python、C++</li>
276
- <li><strong>専門分野:</strong> 自然言語処理、大規模言語モデル(LLM)、機械学習、データ分析</li>
277
- <li><strong>その他:</strong> 研究プロジェクトのリード、eスポーツチームの運営、プロサッカーリーグ実況解説</li>
278
- </ul>
 
 
 
 
 
 
 
 
 
279
  </div>
280
- """, unsafe_allow_html=True)
 
 
 
 
281
 
282
- # 研究関心分野セクション
283
- st.markdown("""
284
- <div class='section card'>
285
- <h2>🔬 研究関心</h2>
286
- <ul>
287
- <li>自然言語処理</li>
288
- <li>AIと教育</li>
289
- <li>eスポーツとAIの統合</li>
290
- </ul>
291
- </div>
292
  """, unsafe_allow_html=True)
293
 
294
- # 連絡先情報セクション
295
- st.markdown("""
296
- <div class='section card'>
297
- <h2>📍 連絡先</h2>
298
- <p>所在地:大阪府 堺市,中区学園町 1-1 大阪公立大学 B4棟 E234室 </p>
299
- <a href='https://www.omu.ac.jp/eng/dyna/' target='_blank'>「機械力学研究グループ」</a>
300
- <p>Mail: [email protected] (個人)</p>
301
- <p>Mail: [email protected] (大学)</p>
302
- <p>Mail: [email protected] (松尾研究所)</p>
303
- </div>
304
  """, unsafe_allow_html=True)
305
-
306
- # ソーシャルリンク
307
- st.markdown("""
308
- <div style='text-align: center; margin-top: 50px;'>
309
- <a href='https://www.linkedin.com/in/taisei-ozaki-del/' target='_blank'>
310
- <img src='https://cdn-icons-png.flaticon.com/512/174/174857.png' width='40'>
311
- </a>
312
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  """, unsafe_allow_html=True)
314
-
315
- # フッターの非表示
316
  st.markdown("""
317
- <style>
318
- footer {visibility: hidden;}
319
- </style>
320
- """, unsafe_allow_html=True)
321
-
322
- st.markdown("</div>", unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
 
324
  if __name__ == "__main__":
325
  try:
 
1
  import streamlit as st
2
  from PIL import Image
3
  import os
4
+ import base64
5
+
6
+ # ページ設定
7
+ st.set_page_config(
8
+ page_title="Taisei Ozaki - AI Researcher",
9
+ page_icon="🚀",
10
+ layout="wide"
11
+ )
12
 
13
  # セッションステートの初期化
14
  if 'initialized' not in st.session_state:
15
  st.session_state.initialized = True
16
 
17
+ # カスタムCSSの適用(モダンなダークテーマ)
18
  st.markdown("""
19
  <style>
20
  /* Google Fontsのインポート */
21
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;900&family=JetBrains+Mono:wght@400;700&display=swap');
22
 
23
+ /* CSS変数 */
24
+ :root {
25
+ --primary: #6366f1;
26
+ --primary-dark: #4f46e5;
27
+ --secondary: #a78bfa;
28
+ --accent: #f472b6;
29
+ --bg-dark: #0f0f23;
30
+ --bg-card: rgba(30, 30, 46, 0.7);
31
+ --text-primary: #f8fafc;
32
+ --text-secondary: #94a3b8;
33
+ --gradient-1: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
34
+ --gradient-2: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
35
  }
36
 
37
+ /* 全体のスタイル */
38
  .stApp {
39
+ background:
40
+ radial-gradient(ellipse at top left, rgba(99, 102, 241, 0.15), transparent 40%),
41
+ radial-gradient(ellipse at bottom right, rgba(244, 114, 182, 0.15), transparent 40%),
42
+ var(--bg-dark);
43
+ color: var(--text-primary);
44
+ min-height: 100vh;
45
+ }
46
+
47
+ /* フォント設定 */
48
+ html, body, [class*="css"] {
49
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
50
+ }
51
+
52
+ /* ヘッダー */
53
+ h1 {
54
+ font-size: 3.5rem !important;
55
+ font-weight: 900 !important;
56
+ background: var(--gradient-1);
57
+ -webkit-background-clip: text;
58
+ -webkit-text-fill-color: transparent;
59
+ margin-bottom: 0.5rem !important;
60
+ letter-spacing: -0.03em;
61
+ line-height: 1.1;
62
  }
63
 
64
+ h2 {
65
+ font-size: 2rem !important;
66
+ font-weight: 700 !important;
67
+ color: var(--text-primary) !important;
68
+ margin-top: 3rem !important;
69
+ margin-bottom: 1.5rem !important;
70
+ position: relative;
71
+ padding-left: 1rem;
72
  }
73
 
74
+ h2::before {
75
+ content: '';
76
+ position: absolute;
77
+ left: 0;
78
+ top: 50%;
79
+ transform: translateY(-50%);
80
+ width: 4px;
81
+ height: 70%;
82
+ background: var(--gradient-1);
83
+ border-radius: 2px;
84
  }
85
 
86
+ /* テキストスタイル */
87
  p, li {
88
+ color: var(--text-secondary);
89
+ line-height: 1.8;
90
+ font-size: 1rem;
91
+ }
92
+
93
+ strong {
94
+ color: var(--text-primary);
95
+ font-weight: 600;
96
+ }
97
+
98
+ /* グロウカード */
99
+ .glow-card {
100
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(244, 114, 182, 0.05));
101
+ backdrop-filter: blur(10px);
102
+ border: 1px solid rgba(99, 102, 241, 0.2);
103
+ border-radius: 20px;
104
+ padding: 2rem;
105
+ margin-bottom: 2rem;
106
+ position: relative;
107
+ overflow: hidden;
108
+ transition: all 0.3s ease;
109
+ }
110
+
111
+ .glow-card::before {
112
+ content: '';
113
+ position: absolute;
114
+ top: -2px;
115
+ left: -2px;
116
+ right: -2px;
117
+ bottom: -2px;
118
+ background: var(--gradient-1);
119
+ border-radius: 20px;
120
+ opacity: 0;
121
+ z-index: -1;
122
+ transition: opacity 0.3s ease;
123
+ }
124
+
125
+ .glow-card:hover::before {
126
+ opacity: 0.3;
127
+ }
128
+
129
+ .glow-card:hover {
130
+ transform: translateY(-2px);
131
+ box-shadow: 0 10px 40px rgba(99, 102, 241, 0.2);
132
+ }
133
+
134
+ /* ヒーローセクション */
135
+ .hero-section {
136
+ text-align: center;
137
+ padding: 4rem 0;
138
+ position: relative;
139
+ }
140
+
141
+ .hero-subtitle {
142
+ font-size: 1.25rem;
143
+ color: var(--secondary);
144
+ font-weight: 500;
145
+ margin-bottom: 1rem;
146
+ }
147
+
148
+ .hero-badges {
149
+ display: flex;
150
+ gap: 1rem;
151
+ justify-content: center;
152
+ flex-wrap: wrap;
153
+ margin-top: 2rem;
154
+ }
155
+
156
+ .badge {
157
+ background: rgba(99, 102, 241, 0.15);
158
+ border: 1px solid rgba(99, 102, 241, 0.3);
159
+ padding: 0.5rem 1rem;
160
+ border-radius: 999px;
161
+ font-size: 0.875rem;
162
+ color: var(--secondary);
163
+ font-weight: 500;
164
+ transition: all 0.2s ease;
165
+ }
166
+
167
+ .badge:hover {
168
+ background: rgba(99, 102, 241, 0.25);
169
+ transform: scale(1.05);
170
  }
171
 
172
+ /* プロフィール画像 */
173
+ .profile-image-container {
174
+ position: relative;
175
+ display: inline-block;
176
+ margin: 2rem 0;
177
+ }
178
+
179
+ .profile-image-container img {
180
+ border-radius: 20px;
181
+ border: 3px solid transparent;
182
+ background: linear-gradient(white, white) padding-box,
183
+ var(--gradient-1) border-box;
184
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
185
+ }
186
+
187
+ .profile-image-glow {
188
+ position: absolute;
189
+ top: 50%;
190
+ left: 50%;
191
+ transform: translate(-50%, -50%);
192
+ width: 120%;
193
+ height: 120%;
194
+ background: var(--gradient-1);
195
+ filter: blur(40px);
196
+ opacity: 0.4;
197
+ z-index: -1;
198
+ }
199
+
200
+ /* タイムライン */
201
+ .timeline-item {
202
+ position: relative;
203
+ padding-left: 2rem;
204
+ margin-bottom: 2rem;
205
+ border-left: 2px solid rgba(99, 102, 241, 0.2);
206
+ }
207
+
208
+ .timeline-item::before {
209
+ content: '';
210
+ position: absolute;
211
+ left: -6px;
212
+ top: 0;
213
+ width: 10px;
214
+ height: 10px;
215
+ background: var(--primary);
216
+ border-radius: 50%;
217
+ box-shadow: 0 0 20px rgba(99, 102, 241, 0.5);
218
+ }
219
+
220
+ .timeline-date {
221
+ color: var(--primary);
222
+ font-weight: 600;
223
+ font-size: 0.875rem;
224
+ margin-bottom: 0.5rem;
225
+ }
226
+
227
+ /* リンク */
228
  a {
229
+ color: var(--secondary) !important;
230
  text-decoration: none;
231
+ position: relative;
232
+ transition: color 0.2s ease;
233
  }
234
+
235
  a:hover {
236
+ color: var(--primary) !important;
 
237
  }
238
 
239
+ /* アニメーション */
240
+ @keyframes float {
241
+ 0%, 100% { transform: translateY(0); }
242
+ 50% { transform: translateY(-10px); }
243
  }
244
+
245
+ .float-animation {
246
+ animation: float 3s ease-in-out infinite;
 
247
  }
248
 
249
+ /* スキルタグ */
250
+ .skill-tag {
251
+ display: inline-block;
252
+ background: rgba(167, 139, 250, 0.15);
253
+ border: 1px solid rgba(167, 139, 250, 0.3);
254
+ padding: 0.25rem 0.75rem;
255
+ border-radius: 999px;
256
+ font-size: 0.875rem;
257
+ color: var(--secondary);
258
+ margin-right: 0.5rem;
259
+ margin-bottom: 0.5rem;
260
+ transition: all 0.2s ease;
261
  }
262
 
263
+ .skill-tag:hover {
264
+ background: rgba(167, 139, 250, 0.25);
265
+ transform: translateY(-2px);
 
266
  }
267
 
268
+ /* コンタクトボタン */
269
+ .contact-button {
270
+ background: var(--gradient-1);
271
+ color: white;
272
+ padding: 1rem 2rem;
273
+ border-radius: 999px;
274
+ font-weight: 600;
275
+ text-decoration: none;
276
+ display: inline-block;
277
+ transition: all 0.3s ease;
278
+ box-shadow: 0 5px 20px rgba(99, 102, 241, 0.3);
279
  }
280
 
281
+ .contact-button:hover {
282
+ transform: translateY(-2px);
283
+ box-shadow: 0 8px 30px rgba(99, 102, 241, 0.4);
284
+ }
285
+
286
+ /* フッター非表示 */
287
+ footer { visibility: hidden; }
288
+
289
+ /* レスポンシブ */
290
  @media (max-width: 768px) {
291
+ h1 { font-size: 2.5rem !important; }
292
+ .glow-card { padding: 1.5rem; }
293
+ }
294
+
295
+ /* カスタムスクロールバー */
296
+ ::-webkit-scrollbar {
297
+ width: 10px;
298
+ }
299
+ ::-webkit-scrollbar-track {
300
+ background: rgba(15, 15, 35, 0.5);
301
+ }
302
+ ::-webkit-scrollbar-thumb {
303
+ background: var(--primary);
304
+ border-radius: 5px;
305
+ }
306
+ ::-webkit-scrollbar-thumb:hover {
307
+ background: var(--primary-dark);
308
  }
309
  </style>
310
  """, unsafe_allow_html=True)
 
315
 
316
  # メイン関数
317
  def main():
318
+ # ��ーローセクション
319
+ st.markdown("""
320
+ <div class="hero-section">
321
+ <div class="hero-subtitle">AI Researcher & Machine Learning Engineer</div>
322
+ <h1>Taisei Ozaki</h1>
323
+ <div class="hero-badges">
324
+ <span class="badge">🎓 博士後期課程 D1</span>
325
+ <span class="badge">🤖 LLM Specialist</span>
326
+ <span class="badge">🚗 自動運転研究</span>
327
+ <span class="badge">🎮 eスポーツ</span>
328
+ </div>
329
+ </div>
330
+ """, unsafe_allow_html=True)
331
+
332
+ # プロフィール画像とイントロ
333
+ col1, col2, col3 = st.columns([1, 2, 1])
334
  with col2:
335
+ if image_exists('profile_pic.jpg'):
336
+ st.markdown('<div class="profile-image-container">', unsafe_allow_html=True)
337
+ st.image('profile_pic.jpg', width=300)
338
+ st.markdown('<div class="profile-image-glow"></div></div>', unsafe_allow_html=True)
339
+
340
+ st.markdown("""
341
+ <div class="glow-card" style="text-align: center;">
342
+ <p style="font-size: 1.1rem; line-height: 1.8;">
343
+ 大阪公立大学の博士後期課程(D1)で機械工学とAI・NLPを研究。<br>
344
+ LLMの暗黙知、AIエージェント、自動運転に焦点を当てた研究を行い、<br>
345
+ 東京大学松尾研究所でもデータサイエンティストとして活動中。
346
+ </p>
347
+ </div>
348
+ """, unsafe_allow_html=True)
349
 
350
+ # メインコンテンツ
351
+ col1, col2 = st.columns([2, 3])
 
 
352
 
353
  with col1:
354
+ # 現在の所属
355
+ st.markdown('<h2>🏢 現在の所属</h2>', unsafe_allow_html=True)
356
+ st.markdown("""
357
+ <div class="glow-card">
358
+ <div class="timeline-item">
359
+ <div class="timeline-date">2025年4月 - 現在</div>
360
+ <strong>大阪公立大学大学院</strong><br>
361
+ 工学研究科 機械系専攻 博士後期課程
362
+ </div>
363
+ <div class="timeline-item">
364
+ <div class="timeline-date">2025年4月 - 現在</div>
365
+ <strong>東京大学 松尾岩澤研究室</strong><br>
366
+ データサイエンティスト
367
+ </div>
368
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369
  """, unsafe_allow_html=True)
370
+
371
+ # スキル
372
+ st.markdown('<h2>💻 技術スタック</h2>', unsafe_allow_html=True)
373
+ st.markdown("""
374
+ <div class="glow-card">
375
+ <div style="margin-bottom: 1rem;">
376
+ <strong style="color: var(--primary);">AI/ML</strong><br>
377
+ <span class="skill-tag">LLM</span>
378
+ <span class="skill-tag">NLP</span>
379
+ <span class="skill-tag">Deep Learning</span>
380
+ <span class="skill-tag">世界モデル</span>
381
+ </div>
382
+ <div style="margin-bottom: 1rem;">
383
+ <strong style="color: var(--primary);">Programming</strong><br>
384
+ <span class="skill-tag">Python</span>
385
+ <span class="skill-tag">C++</span>
386
+ <span class="skill-tag">PyTorch</span>
387
+ </div>
388
+ <div>
389
+ <strong style="color: var(--primary);">Research</strong><br>
390
+ <span class="skill-tag">自動運転</span>
391
+ <span class="skill-tag">AIエージェント</span>
392
+ <span class="skill-tag">議論的対話</span>
393
+ </div>
394
+ </div>
 
 
 
 
 
 
 
 
 
395
  """, unsafe_allow_html=True)
396
+
397
+ with col2:
398
+ # 主な実績
399
+ st.markdown('<h2>🏆 主な実績</h2>', unsafe_allow_html=True)
400
+ st.markdown("""
401
+ <div class="glow-card">
402
+ <div class="timeline-item">
403
+ <div class="timeline-date">20253月</div>
404
+ <strong>大阪公立大学 学長表彰</strong><br>
405
+ 優れた研究実績が評価され受賞
406
+ </div>
407
+ <div class="timeline-item">
408
+ <div class="timeline-date">2025年3月</div>
409
+ <strong>経済産業省 AKATSUKI 関西地域代表</strong><br>
410
+ 革新的プロジェクトで地域代表に選出
411
+ </div>
412
+ <div class="timeline-item">
413
+ <div class="timeline-date">2024年6月</div>
414
+ <strong>人工知能学会 全国大会 優秀賞</strong><br>
415
+ 「LLMによる前提生成ステップを用いた反論の攻撃力向上手法」
416
+ </div>
417
+ <div class="timeline-item">
418
+ <div class="timeline-date">2024年6月</div>
419
+ <strong>GENIAC 松尾研 LLMコンペ 第3位</strong><br>
420
+ LLM開発コンペティションで入賞
421
+ </div>
422
+ </div>
423
  """, unsafe_allow_html=True)
424
+
425
+ # 研究発表
426
+ st.markdown('<h2>📚 最新の研究発表</h2>', unsafe_allow_html=True)
427
  st.markdown("""
428
+ <div class="glow-card">
429
+ <div class="timeline-item">
430
+ <div class="timeline-date">2025年3月</div>
431
+ <strong>JDERW:世界モデルを要する推論問題に関する日本語LLMベンチマーク</strong><br>
432
+ <a href="https://www.ai-gakkai.or.jp/jsai2025/" target="_blank">人工知能学会全国大会</a>
433
+ </div>
434
+ <div class="timeline-item">
435
+ <div class="timeline-date">2025年3月</div>
436
+ <strong>LLM as a Debate Judge: 学習者ディベーターへの自動フィードバック生成</strong><br>
437
+ <a href="https://www.anlp.jp/proceedings/annual_meeting/2025/pdf_dir/C5-6.pdf" target="_blank">言語処理学会年次大会</a>
438
+ </div>
439
+ <div class="timeline-item">
440
+ <div class="timeline-date">2024年5月</div>
441
+ <strong>異常検知モデルを用いた電動キックボード乗車時の障害物検知推定</strong><br>
442
+ 日本機械学会 ロボティクス・メカトロニクス部門
443
+ </div>
444
  </div>
445
+ """, unsafe_allow_html=True)
446
+
447
+ # プロジェクト
448
+ st.markdown('<h2>🚀 進行中のプロジェクト</h2>', unsafe_allow_html=True)
449
+ col1, col2 = st.columns(2)
450
 
451
+ with col1:
452
+ st.markdown("""
453
+ <div class="glow-card">
454
+ <h3 style="color: var(--primary); font-size: 1.3rem;">経産省 AKATSUKIプロジェクト</h3>
455
+ <p>革新的なアイデアを持つ若手テック人材を応援するプログラムで関西地域代表として採択</p>
456
+ </div>
 
 
 
 
457
  """, unsafe_allow_html=True)
458
 
459
+ with col2:
460
+ st.markdown("""
461
+ <div class="glow-card">
462
+ <h3 style="color: var(--primary); font-size: 1.3rem;">NEDO Geniac プロジェクト</h3>
463
+ <p>東京大学松尾研究所の大規模言語モデル開発プロジェクトでチームリーダーを務める</p>
464
+ </div>
 
 
 
 
465
  """, unsafe_allow_html=True)
466
+
467
+ # コンタクト
468
+ st.markdown('<h2>📬 Contact</h2>', unsafe_allow_html=True)
469
+ col1, col2, col3 = st.columns([1, 2, 1])
470
+ with col2:
471
+ st.markdown("""
472
+ <div class="glow-card" style="text-align: center;">
473
+ <p style="margin-bottom: 1.5rem;">
474
+ 研究協力、技術相談、その他のお問い合わせはこちらから
475
+ </p>
476
+ <div style="margin-bottom: 1rem;">
477
+ <strong>大阪公立大学</strong><br>
478
+ <a href="mailto:[email protected]">[email protected]</a>
479
+ </div>
480
+ <div style="margin-bottom: 1rem;">
481
+ <strong>松尾研究所</strong><br>
482
+ <a href="mailto:[email protected]">[email protected]</a>
483
+ </div>
484
+ <div style="margin-bottom: 2rem;">
485
+ <strong>個人</strong><br>
486
+ <a href="mailto:[email protected]">[email protected]</a>
487
+ </div>
488
+ <a href="https://www.linkedin.com/in/taisei-ozaki-del/" target="_blank" class="contact-button">
489
+ LinkedIn でつながる
490
+ </a>
491
+ </div>
492
  """, unsafe_allow_html=True)
493
+
494
+ # フローティングアニメーション要素
495
  st.markdown("""
496
+ <script>
497
+ // スムーズスクロール効果
498
+ document.addEventListener('DOMContentLoaded', function() {
499
+ const cards = document.querySelectorAll('.glow-card');
500
+ const observer = new IntersectionObserver((entries) => {
501
+ entries.forEach(entry => {
502
+ if (entry.isIntersecting) {
503
+ entry.target.style.opacity = '1';
504
+ entry.target.style.transform = 'translateY(0)';
505
+ }
506
+ });
507
+ });
508
+
509
+ cards.forEach(card => {
510
+ card.style.opacity = '0';
511
+ card.style.transform = 'translateY(20px)';
512
+ card.style.transition = 'all 0.6s ease-out';
513
+ observer.observe(card);
514
+ });
515
+ });
516
+ </script>
517
+ """, unsafe_allow_html=True)
518
 
519
  if __name__ == "__main__":
520
  try: