Science Club One2は、約1年前に科学部向けに開発されたiOSアプリです。科学部の活動で使う実験記録・メモ・補助ツールを一つにまとめ、休憩用のゲームや音楽も利用できる構成になっています。
一般向けの科学プラットフォームではなく、当時の科学部の活動に合わせて作られたアプリです。現在は、当時のコードをXcodeプロジェクトとして確認・保守できるようにしています。
- 実験メモ(目的、仮説、材料、手順、環境、観察、結果、分析、結論、改善点)
- 画像・グラフ・タイムライン・音声・手書きメモ・実験テンプレート
- 実験器具、安全記録、学習成果、実験プロジェクトの管理
- 科学実験相談用のGeminiチャット「SCOAI」
- 科学計算、タイマー、カメラ、科学知識、地図・天気
- 気分記録、設定、アクセシビリティ、パスコード
- Scratch関連コンテンツとユーザー向け拡張機能
- テトリス、サイエンスタップ、モグラたたき、音楽プレーヤー
画面遷移はUIベース/ContentView.swiftとUIベース/AppDestination.swift、アプリの起動とSwiftData設定はUIベース/MyApp.swiftで確認できます。
XcodeでScience Club One2.xcodeprojを開き、Science Club One2スキームを選択して実行します。対応OSはiOS 18.1以降、iPhoneとiPadです。
open "Science Club One2.xcodeproj"コマンドラインでSimulator向けにビルドする場合:
xcodebuild \
-project "Science Club One2.xcodeproj" \
-scheme "Science Club One2" \
-sdk iphonesimulator \
-configuration Debug \
CODE_SIGNING_ALLOWED=NO \
buildGeminiチャットの実装はUIベース/ChatContainerView.swiftにあります。ソースにはAPIキーを保存しないでください。現在は空のプレースホルダーになっているため、開発時は安全な方法でキーを設定してください。
データ管理にはSwiftDataを使用しています。MyApp.swiftではcloudKitDatabase: .automaticが設定されているため、iCloud/CloudKitを利用するかどうかは、実機での設定と配布前の構成を確認してください。
約1年前のコードを引き継いでいるため、Swift concurrencyや非推奨APIに関する警告が残っています。重要なデータはバックアップし、カメラ・マイク・位置情報などの権限は必要な機能だけに許可してください。
Science Club One2 is an iOS app created for a science club. It was developed about one year ago as an all-in-one tool for club activities, including experiment records, notes, science-related utilities, and a small Tetris game for breaks.
This is not a general-purpose science platform. It is the version of the science-club app developed at that time, now being opened as a native Xcode project for maintenance and review.
This app was developed about one year ago. Back up important data before use, and verify each feature and permission on a physical device.
This app was created to bring science-club activities into one iOS app. It includes experiment and observation records, image and audio organization, location and weather helpers, mood records, and Tetris for breaks.
The current code preserves the structure from that development period, so feature scope and implementation age are not uniform. Treat this as the science-club app from that time, opened as an Xcode project for maintenance and review.
The feature list below is based on the current Swift source, rather than only on the project name:
- Experiment records — detailed experiment memos with purpose, hypothesis, materials, procedure, environmental conditions, observations, results, analysis, conclusions, improvements, and next steps.
- Supporting records — attachments, graphs, timelines, quick notes, voice memos, handwriting memos, templates, experiment projects, equipment, safety records, and learning outcomes.
- Science utilities — calculators, timers, measurement helpers, a camera screen, a science knowledge view, and a map/weather view.
- SCOAI — a Gemini-powered chat screen for science experiment consultation, with persisted chat threads and messages.
- Personal records — a mood journal, accessibility settings, appearance settings, and a passcode feature.
- Learning and extensions — Scratch-related programming content, user-facing extensions, and a cultural-festival presentation screen.
- Break and demo features — Tetris, Science Tap, Mole Tap, a memory/open-world game screen, and a music player with bundled MP3 files.
The main navigation is defined in UIベース/ContentView.swift and UIベース/AppDestination.swift. The app entry point is UIベース/MyApp.swift, where the shared SwiftData schema is assembled.
The app uses SwiftData models for experiment records, attachments, observations, chat history, mood entries, and related data. The current MyApp.swift configures a persistent ModelContainer with cloudKitDatabase: .automatic; review the iCloud/CloudKit setting before distributing the app or relying on storage behavior across devices.
- Xcode 17 or later
- iOS 18.1 or later
- Swift 5.9
- iPhone or iPad
The app uses the generative-ai-swift package (0.5.6) for the Gemini chat feature.
Open the native project generated from the Swift package:
open "Science Club One2.xcodeproj"In Xcode, select the Science Club One2 scheme and choose an iPhone or iPad simulator/device.
The project uses:
- Bundle identifier:
viuk - Minimum iOS version:
18.1 - Version:
1.0 (1) - Supported devices: iPhone and iPad
xcodebuild \
-project "Science Club One2.xcodeproj" \
-scheme "Science Club One2" \
-sdk iphonesimulator \
-configuration Debug \
CODE_SIGNING_ALLOWED=NO \
buildThe Gemini chat implementation is in UIベース/ChatContainerView.swift.
Do not commit an API key to this repository. The current source contains an empty placeholder, so configure a development-only key through a secure mechanism before testing Gemini features. Production builds should use an appropriate server-side or user-provided key flow rather than embedding a shared key in the app.
The original Swift package is still kept in this folder. Package.swift remains available for SwiftPM-based workflows, while Science Club One2.xcodeproj is the native Xcode project.
project.yml is the XcodeGen recipe used to create the project. If the source layout or build settings change, regenerate with:
xcodegen generate --spec project.ymlThe generated project includes a Copy audio resources build script. It places the MP3 files from Resources/ into the app bundle so Bundle.main lookups continue to work in the native project.
Science Club One2.swiftpm/
├── Science Club One2.xcodeproj/ # Native Xcode project
├── project.yml # XcodeGen project definition
├── Package.swift # Original SwiftPM definition
├── UIベース/ # Main SwiftUI views, models, and managers
├── テトリス/ # Tetris feature
├── ユーザー向け拡張機能/ # User-facing extensions
└── Resources/ # MP3 sound resources
The app declares usage descriptions for camera, photo library, microphone, speech recognition, location, calendar, and local network access. iOS only presents a permission prompt when the corresponding feature requests access; grant only the permissions needed for the feature being tested.
- The project currently builds successfully for the iOS Simulator, but the source still has pre-existing Swift concurrency and API-deprecation warnings.
- Some features require physical hardware or user permissions and cannot be fully verified in the simulator.
- Before distribution, review signing, privacy declarations, API-key handling, app icon assets, and the App Store metadata.