人生初ハッカソン = くま共生ハッカソン
こんにちは!私は田舎や自然が好きなウェブエンジニアです。
先日、人生で初めてハッカソンに参加させていただきました。
きっかけ
最近、環境活動に興味を持ち始め、プログラミングで何か貢献できる機会はないかと模索していた所、石川県立図書館でこのイベントのポスターを発見しました。また、登山が好きで、常にクマが頭の片隅に怖い存在としてあったので、習性やデータ、さらには他のエンジニアの方々がどういったことを話し、どういったアイデアを出すのかを体感できるというのはとても面白そうと思い、参加させて頂くことになりました。
※当日まで申込みを忘れていたため、オンラインで参加させていただきました。Zoom会議でお話ししてくれた皆さん、ありがとうございました。
まずは、とりあえず何かを作る
まずは、ハッカソンで教えて頂いた熊の生態についての記憶を基に、情報を整理し、それをソースとして必要な情報を引き出しやすくするものを作りたいと考えました。そこで早速、Claude Codeで、以下のような流れでライブラリを作っていきました。
※単純なライブラリですがnpmでご自由にお使い頂けます。
ライブラリ生成の流れ
(1) ツキノワグマの生態について、月毎、食べ物、行動場所、時期毎の特徴などといった観点でさらに調べてもらう
(2) 調べた情報をjson形式にまとめてもらう、データの収集元も明示させる
※データの内容は以下のような形式です
interface 月別データ {
月: number;
危険度: number; // 1-5スケール
遭遇確率: number; // 1-5スケール
現在サイクル: サイクルデータ['ID'];
}
interface サイクルデータ {
ID: string;
タイトル: string;
開始月: number;
終了月: number;
説明: string;
活動: string;
特徴: string[];
食べ物: string[];
場所: string[];
注意点: string[];
}
(3) jsonのデータを引き出しやすい様にライブラリを作る
(4) READMEを書いてもらう。その際にデータの収集元も明示してもらう
(5) npmにpublishする
主な機能
機能は作ってもらった熊データのjsonから欲しい所を取ってくるだけのとても単純な物となっています。以下のようなデータが取得できます。使い方も簡単です。
月別危険度データ
1月〜12月までの危険度を1-5のレベルで表示
遭遇リスクも同じく1-5で評価
10月が最も危険(レベル5)なのがデータからも分かります
クマの生活サイクル情報
冬眠期、春期活動期、繁殖期、秋期飽食期など8つのサイクル
各サイクルでの行動パターン、食べ物、注意事項を詳細にまとめ
使いやすいAPI
import { bearEcology } from 'bear-hackathon-ecology';
// 10月の危険度をチェック
const october = bearEcology.getMonthData(10);
console.log(`危険度: ${october?.dangerous_level}/5`);今後の展開①
熊の生態を表現するアイコンセット
誰でも自由に使える便利な物を目標に、熊の生態を表現するアイコンセットを制作し、以下のように配布しようと思います。
npm package: ReactのComponent
グラフィック: SVG形式のファイル一式
今後の展開②
熊の生態が分かると高得点が取れる
ボードゲーム
最近、Parksというアメリカの国立公園を旅する人気のボードゲームが面白かったので、これをベースにした遊びながら熊の生態を学べるウェブアプリを作りたいと考えています。
