セキュリティ・キャンプ キャンパー育成枠の活動録

セキュリティ・キャンプ2018の選考に選ばれ、参加してきた後の活動を紹介 育成枠というのは他キャンパーとの実力を相対的に見て低いと判断して名乗っています。

去年作った製作物を公開する[勉強会カレンダー]

去年の「システム構築」という科目の授業中に製作した「勉強会カレンダー」というシステムを今更ながら公開します。

ダウンロード

以下のURL(Googleドライブ)から2つのファイルをダウンロードしてください。
benkyokaisystem2017 - Google ドライブ

きっかけ

そもそものきっかけとして、勉強会に月1~2回のペースで行っていた私が困ってたこととして

  • 公開されるセッションの資料(パワーポイントなど)の管理が大変だった
  • 1度の勉強会で複数のソフトウェアを使うことがある(パケット基礎の講座であれば、WiresharkとBurp suiteを使うなど)
  • たくさんの人と交流する

ということがあり、これらをまとめるのがすごく大変だったという背景がありました。

それを解決するために、この科目ではこれらをまとめるシステムを作ることを決めました。

開発環境

  • 開発言語:C#
  • データベース:Access
  • エディタ:VisualStudio

プログラムの機能

  • メイン画面のUIをカレンダー形式にしました(あくまで勉強会用のため、祝日の表示は不要と判断)
  • カレンダーに書き込むような感覚で勉強会を追加し、閲覧することができるようにする
  • 勉強会情報/参加者情報の表示・検索・更新・削除

使い方

適当なファイルを作り、その中に、benkyokaisystem2017.exeとInterop.ADOX.dllを保存します。
exeファイルを実行すると、1度目は下記のようなメッセージが表示され、同じディレクトリにAccessのDBファイルが作られます。
f:id:RunshoesCS:20181109114444p:plain

もう1度exeファイルを実行すると下記のようなメイン画面が表示されます。
勉強会を新しく追加したい場合は、青く囲んだ部分のような日付の下のテキストボックスをダブルクリックすることで、編集画面が表示されます。
f:id:RunshoesCS:20181109114903p:plain
勉強会追加画面に登録する情報として、

  • 勉強会名(必須項目)
  • 主催者(必須項目)
  • ジャンル
  • 開催地
  • URL
  • 発表資料
  • 使用プログラム等
  • メモ

を用意しています。
f:id:RunshoesCS:20181109115348p:plain

勉強会の情報を登録して、追加ボタンを押すと、データが登録され、カレンダー内に勉強会名が表示されるようになります。また、既に勉強会が登録されている日付のテキストボックスをダブルクリックすると勉強会の情報を表示し、更新・削除もすることができます。また、主催者を表示すると、主催者についての情報を表示することができます。

f:id:RunshoesCS:20181109120203p:plain
f:id:RunshoesCS:20181109120340p:plain

参加者の情報を登録する場合は、参加者追加ボタンをクリックします。
参加者追加画面に登録する情報として、

  • 参加者名(必須項目)
  • 所属(必須項目)
  • メール
  • 会った勉強会(必須)
  • Twitter
  • Facebook

f:id:RunshoesCS:20181109121151p:plain
参加者情報を登録すると、参加者一覧及び名前検索で検索したデータのセルをダブルクリックすることで勉強会の情報を表示し、更新・削除もすることができます。また、会った勉強会をクリックすると、その勉強会の詳細情報を表示することができます。

名前検索ボタンは勉強会と参加者の検索両方に対応しています。
f:id:RunshoesCS:20181109121546p:plain

感想及びまとめ

感想

  • カレンダーをC#で自作するのは結構難しかったです。
  • テーブルのリレーションを下記のようにすることで、システム中のSQL文が複雑になりました。また、この実装をすることで、勉強会に対応する主催者を削除してしまうと、その勉強会情報を閲覧しようとするとエラーが発生することが判明しました。

f:id:RunshoesCS:20181109121655p:plain

  • 作れば作るほど予定より多く機能を付けることになりました。(例:勉強会の主催者をダブルクリックすると、主催者の情報を表示する)
  • デザイン面の工夫が出来ていなかった。
  • デバッグに力を入れた※テーブルのエラーは発表中に発見したものだったので反省点
  • もっと機能を拡張したい

今後の改善点

  • ASP.NETで開発しWebアプリケーション化
  • AccessDBは現実的な実装でないため、DBをSQLiteなどにする。
  • 開催地の情報をgoogleマップから受け取り、表示する。
  • URLなどリンクできるものはリンクを設定する仕様にする。
  • 今回作った際の不具合を修正する。

また今後、需要があれば一般公開するサービスとして開発したいと思っています。(Googleカレンダーではできないような独自性を持たせないといけない点が大きな壁となると思います。)