Theories of Pleiades

技術の話とかイベントに行った話とか思ったこととか

PowerAppsで部員管理システムを作る①

ということで使ってみます。

やること

部活用の部員管理アプリを作ります。

完全内製でもいいのですが、

  • 複雑な機能を要さない
  • 後の代に簡単に引き継げるようにする
  • あまり手数を掛けたくない

などの理由からPowerAppsを使ってみることにします。

物は試しというやつです。

データベースを作る

PowerAppsにサインアップしてデータベースを作ります。

通貨はJPY、言語はJapaneseを選択します。

このあとの邪魔になるのでサンプルを含める~みたいなところのチェックは外してしまいます。


エンティティを作る

一人ひとりの部員を表すテーブルを作っていきます。

サイドバーからデータ→エンティティを選択し、新しいエンティティをクリックします。

表示名は部員とします。

今回は - 氏名 - 氏名ローマ字 - メールアドレス - 学科 - 学年 - 寮生or通生 を作ります。

それぞれ、新しいフィールドをクリックし表示名とID、データ型を入力します。

エンティティには既定でPrimaryNameフィールドが含まれており、これは他のエンティティからアイテムを参照するときの主キーみたいなもの?みたいです。

今回はメールアドレスを主キーとして登録したいので、PrimaryNameをクリックし、表示名を「メールアドレス」に変更します。

学科や学年のように複数のうちから選択したい場合、データ型にオプションセットを指定します。

新しいオプションセットを選択し、任意の選択肢を追加してオプションセットを保存します。

寮生か通学生かは「2つのオプション」というデータ型で実現できます。

フィールド名を「通学区分」とし、寮・通学の2つから選択できるようにします。

全て入力し終えたらエンティティを保存してアプリの作成に移ります。

f:id:mwc922_hsm:20181213053417p:plain
作成したエンティティ


フォームを編集する

エンティティに対応するフォームを作っていきます。

データ→エンティティ→部員→フォームを選択します。

エンティティを作成したとき、自動的に3つのフォームが作成されます。

このうち、種類がメインとなっているものを編集していきます。

f:id:mwc922_hsm:20181213054150p:plain
フォーム編集画面

先程エンティティの作成で追加したフィールド(+自動で追加されたもの)が右側に並んでいるので、必要なものをD&Dで全般タブに移動させます。

f:id:mwc922_hsm:20181213055308p:plain
いぇい

アプリを作る

作成したエンティティに沿ってモデル駆動のアプリを作ります。

アプリ名と説明を入力して完了ボタンを押すだけ。簡単~

f:id:mwc922_hsm:20181213045757p:plain
アプリデザイナー


サイトマップを編集する

アプリの内容を作っていきます。サイトマップの鉛筆マークをクリックします。

f:id:mwc922_hsm:20181213045942p:plain
サイトマップデザイナー

  1. 新しいサブエリアを作成
  2. エンティティ・部員を選択
  3. タイトルを設定(部員管理、とします)
  4. IDを設定(member_areaとします)

f:id:mwc922_hsm:20181213050352p:plain
サブエリアの編集

保存して閉じるをクリックし、アプリデザイナー画面に戻ります。


エンティティのグラフを作成する

部員の学年や学科の内訳が見たいので、グラフを作っていきます。

サイトマップのエンティティビュー内、グラフを選択し、新規作成をクリックします。

f:id:mwc922_hsm:20181213061556p:plain
グラフデザイナー

ここでは例として各学年の割合を示す円グラフを作っていきます。

手順は以下のとおりです。

  1. 画面上部リボンより円グラフを選択
  2. グラフ名を入力
  3. 凡例エントリに部員を指定
  4. 横軸のラベルに学年を指定


作成したアプリを公開する

アプリデザイナー画面右上の保存ボタンをクリックしてから公開ボタンをクリックします。

これでアプリが動作するようになります。

再生ボタンをクリックすると、実際にアプリを動作させることができます。

新規追加から部員を追加するとホーム画面上に部員一覧が表示されるようになり、グラフの表示から各グラフを見ることができます。

f:id:mwc922_hsm:20181213065541p:plain
テストデータを追加した画面

やったー!

宇部高専コンピュータ部の今までとこれから

この記事は 高専IT系部活 #kosenit Advent Calendar 2018 7日目の記事です。

qiita.com


宇部高専コンピュータ部について

あれこれ書く前に宇部高専コンピュータ部とはそもそも何なのかについて簡単に紹介します。


概要

部員数 :53名
活動場所:クラブハウス2階
活動時間:主に平日放課後
活動方針:コンピュータを用いてクリエイティブなことをする

活動実績

  • 中国地区高専コンピュータフェスティバル
    • H29年ゲーム部門部門1位・特別賞
    • H29年メディアコンテンツ部門1位・2位・特別賞
    • H28年ソフトウェア部門企業賞
    • H28年メディアコンテンツ部門1位
    • H27年ソフトウェア部門2位
    • H27年メディアコンテンツ部門3位・企業賞
  • 全国高専プログラミングコンテスト(参考資料)
    • H24年競技部門優勝
    • H23年競技部門準優勝
    • H19年競技部門優勝

活動環境

  • パソコン12台?ぐらい(ラップトップ6台, デスクトップ6台ぐらい)
  • 顧問1名,外部コーチ(部活OB)1名
  • 無線LAN有(たまにこわれる)
  • 全体連絡・個人間連絡にSlackを使用
  • 部費として年間3000円を徴収


宇部高専コンピュータ部のこれまで

1年生の頃

12月、「コンフェスに向けて作品制作をするんだけど3Dを使ってみたいから部活に来て手伝ってほしい」と言われたのがきっかけで入部しました。

この当時の部室の状況ですが、

  • 畳(?????)の上に大量のダイス
  • 「本棚の下の段は開けてはならない」
  • 机の下に動かなくなったパソコンが詰まっている
  • TCGの山が入ったダンボー
  • 机の上に電気ケトルと風化して固まったインスタントコーヒー
  • ちゃぶ台とマグカップと座椅子

みたいな感じでかなり快適な住環境でした。もちろん住み心地は良かった。

この年はコンフェスで3作品入賞、部活全体が盛り上がっていた年でした。

それだけではなく、ぼくのクラスのメンバーが10人ぐらい入部してみんなで仲良く部活をしていたので部室そのものにも活気がありました。

毎日授業終わりに「部活行こうぜー」みたいな声が聞こえていたのが懐かしいですね。


2年生

冬休み返上でぼくらの代を主体に部室の大掃除をしました。

畳やら動かないパソコンやら電気ケトルとかちゃぶ台とかマグカップとかは全部廃棄しました。

TCGやダイスは大体廃棄して欲しいものは欲しい人が引き取りました。

開けてはいけないと言われていた本棚の下の段にはえっち本とかえっちゲームとかTRPGの本とかゲームソフトとかが押し込められていました。売ったり欲しい人が引き取ったりしました。


何の話だったかというと、数年前までは弊部はそういう(集まってお茶をしながらゲームをしている)部活だったという話です。

それを先輩たちが断ち切ったところにぼくらが入部したということになります。


3年生

ひとつ上の代にはあまりアクティブな部員がいなかったので、3年生になるときに同級生2人と一緒に部活の運営を継ぐことになりました。

年度始めには余っていた部費から新入生向けに中古のパソコンを3,4台ほど買ったり、部活として初めて入学式で部活勧誘のチラシ配りをしたりがありました。

この年は本格的に部活動としての活動を活発化させていこうという動きが始まった年で、ぼくもSlackの導入や部内LT会の開始、新入生向けハンズオンの運営、部内ハッカソンの企画…などなど色々と忙しくしていました。

ぼく以外の幹部もかなり忙しく本来部長や会計に求められる仕事以上の活動をしていて、弊部にとっても激動の1年になりました(体感)。

月例ミーティングを行うようになりました。


4年生になる前に1年の振り返りをしましたが、この1年間は本当に幹部陣が部活運営で忙しくて自分のやりたい活動を犠牲にしていたためぼく以外の2人はダウンしてしまいます。

「来年は運営の負荷をもっと分散させよう」と方針決めをし、ぼくが次期部長に任命されました。


4年生

月例ミーティングが廃止され、部内を班分けして各自担当するイベントに向けて準備をしていくという方針になりました。

  • プロコン
  • コンフェス
  • 高専
  • 広報

のいずれかの班に全員が所属し、各班に班長を立て班ごとが自律的に部としての活動に取り組むことを目標としての試みです。

…が、現実はそうも行かず、結局部長であるぼくが各班を動かしている構図になっていました。


また、主体となって活動していたぼくの学年が前年度の疲れやインターン、授業の多さなどから部活に出席しなくなり、活動的な部員が急激に減少します。

その結果数少ないアクティブな部員に負荷が集中し、最も悪かったケースでは部活を辞めていくといった事態を招くことになります。

それはぼく自身にも言えることで、プロコン終了時点で今年度いっぱいでの退部を決意します。


部内の風土・環境

これはぼくが勝手に感じてきたことで完全に主観的な話になります。


まず、成長したい人のための環境は弊部にはありませんでした。

1年生で入部した当時、既にいくらかの創作的スキルを持っていたぼくは少しでも共同制作の作品を良いものとしたい一心で可能な限りの仕事を引き受け、他の人にアドバイスをするなどをしていました。

しかし、言い方?が悪かったのもあってか、これをきっかけにぼくは部内の一部の人間から微妙な扱いを受けるようになりました。

具体的には、プロジェクトについて訊ねても答えてもらえない、「お前が来てから居場所がなくなった」と言われるなどがあります。(一応言っておきますが、今もまだ根に持っているとかではなくてまあそんなこともあったよね、という話です。根に持ってないと言われると嘘になりますが該当人物へのヘイトなどはありません)


次に、新しい技術に対して懐疑的な風潮がありました。

ぼくが入部した頃は部内には2Dゲームを作っている人しかいなくて、3Dゲームを作っているぼくは変わり者扱いを受けていました。

部費で3Dモデリングソフトを買おうと提案すると「お前以外使わないんだから要らないよ」と言われていたこともありますし、部活の展示でゲームやメディア系以外のプログラム作品を出すと言って苦笑いされたこともあります。

お世辞にも多様性に寛容な部活とは言えないな、というのがぼくの3年間の感想です。


部活の抱える問題

さて、上に書いたような問題は正直「ゲーム開発サークル」としては特に何も困った問題ではないと言えるでしょう。

しかし弊部は「コンピュータ部」です。学校や学生会から資金援助を受けて活動しており、それを継続するには実績を上げなければなりません。

コンピュータ部にとって一番求められている実績とは何でしょうか?


正解は高専プロコンです。我々には高専プロコンに出場することが義務付けられており、そこで可能な限り良い成績を収めなければなりません。

しかし現状の弊部はゲーム開発サークルでありプロコン部ではありません。

開発ツールについての知見もなく、部員の使える開発言語は基本的にはCのみです。

結果、高専プロコンに参加した部員は全員意欲を喪失しプロコンから遠ざかり、新しく入ってきた何も知らない後輩にそれを押し付け…の悪循環が発生しているのが現状の弊部です。


また、部活動としての連帯感がないのも現状のひとつです。

これは情報系の部活動では共通の課題のようにも思えますが、(少なくとも)現状の弊部には「部活動に出席する意義」がありません。

自発的に学習する部員は部活に来ても部員と話が合いませんし、共同開発をするにしてもSlackとGitHubがあれば十分です。強いて言うなら部費で購入している本やデバイスなどがありますが、借りて返すだけの場所になりがちです。弊部室は図書館か?


現状を打破するために取った策

というわけでここからが本題です。部長のぼくはこの現状をどうにか打ち破り宇部高専コンピュータ部を有にしなければなりません。


まず打った策は「今まで部として取ってきたコンセプトを変更する」です。

今まで弊部の方向性としては「各自が自由にコンピュータを使ってクリエイティブな活動をする、部活として個人の活動を制限しない」としていたのを「部活動としてはプロコンなどへの参加を目的とし、個人の趣味開発はあくまで個人の私生活として行ってもらう」方向へと転換しました。

理由は2つあり、

  • 個人で開発してる人部室ではあんま開発してない
  • 部活動で行動が制限されるのどんな部活でもそれはそう

です。

これをすることで部活動と趣味の線引きを明確にします。


次に、1,2年生に競技プログラミングに半強制的に取り組ませるようにしました。

半強制、というのは、「プログラミングではなくて音楽やイラストをやりたい人はやらなくてもいいよ」と言ってあるという意味合いです。

これの狙いは3つあり、

  • 「作りたいもの」のイメージを持てない新入生に対して目標を与える
  • 活動が可視化されるためモチベーションになる(これは主観ですが)
  • 部員同士で共通の話題にすることで情報交換や教え合いを活発化させる

です。

一度全員を教室に集めて方針について話をし、実際に簡単な問題を解いてもらいながらリアルタイムに提出されたソースを見ながらエラー除去やデバッグをする会を経てAtCoder Virtual Contestで毎週末実践する(ABCがある週は出てもらう)をしています。

以下は実際に導入してみての下級生の感想です。

いいですね。いい傾向です。


今後考えている方策

部員にモチベーションが生え自発的にプログラミングをする風潮が起きてきたのは本当に良いことだと思っていて、基本的には今後も今の活動を続けつつ追加で以下を検討しています。

Git講習会

来年度以降のプロコン開発に活かしてもらうため、1月初旬にGitの使い方を学ぶ講習会の実施を検討しています。

幸いにも今年度のプロコンチームに所属していた1年生には軽くGitを教えてあるため、その中でもそこそこの理解度のある後輩に基本を教える役をしてもらい、足りない部分をぼくが補うという形にしようと考えています。

その後は競技プログラミングの解いた問題を各自GitHubに蓄積することで基本の扱い方に慣れてもらいつつ定期的にハンズオンのようなことをできればいいですね。できるのか?


ブックハンティング

山口大学の前に田舎にしては技術書の多い本屋があるので、高専バスを借りて技術書限定ブックハンティングを検討しています。

高専カンファレンスin西京で高専バスを借りるというのをした経験がここで活きてきます。

競技プログラミングでプログラミングに興味を持った後輩が次に何をすれば良いのか、プログラミングでどんなことができるのか…という知識を吸収するためには様々な技術についての本が一箇所に並んでいる本屋という場所が一番適していると考えての企画です。

このとき選ばれた本を部費から購入し部室に置くことで、また次の世代の後輩は本棚を見るだけでもある程度色々な技術の存在について知ることができるようになれば良いねみたいな気持ちがあります。


高専との交流

ぼくがプログラミングを始めたきっかけは他高専の人とのつながりが多く、単純に視野が広がるというのもありますし、同年代の人とのつながりを持つことはモチベーションにも繋がります。

これは少なくとも現状の弊部ではぼくにしかできないことだと思っていて、他高専との競技プログラミング交流戦やCTFの大会、LT会、いろいろな場面で外との関わりを作っていきたいと思っています。

ぼくたちは「高専」というキーワードでつながりを持てる世界にいて、これは大きなアドバンテージです(多分)。

特に、今後部活動としてプロコンへ力を注ぐことにするとなると、課題部門や自由部門では技術的なアンテナの広さは切れるカードの多さとして直接力になります。

そういった観点でも、アンテナを広く持つことの手伝い、その環境作りは部活として進めていきたいと思っています。


まとめ

ということで(どういうこと?)、無限にまとまりが悪くて申し訳ないですが宇部高専コンピュータ部を有にしていくぞという話でした。

弊部と交流を持ってくれるよみたいな部活の方や「こういう活動するといいんじゃないですか」みたいなアイデアをお持ちの方がいらっしゃれば@hsm_hxまでご連絡ください。


明日はsublimerさんの「一関高専電子計算機部を支える〇〇」です。

長文でしたがお読みいただき(いただいたのか?)ありがとうございました!

git challengeに参加してきました #mixi_git

tl;dr

mixiさんの主催する技術イベント、git challengeに参加してきました。 mixi-recruit.snar.jp

成績は16点で大体半分より少し下ぐらい?という感じ。

Gitの技術を実践形式で競う大会の他にも社員さんのGitに関するLTがあったりしました。

めちゃくちゃに勉強になるイベントなので行こうかな~とかちょっとでも考えてる人は絶対に応募してください。絶対に行ってください。絶対に


応募~会場まで

git challengeに参加するにはエントリーシートを提出して選考を通らなければなりません。

エントリーシートはそこまで詳しいことについて聞かれるというわけではなく、

  • git commitしてますか?
  • git何に使ってますか?
  • 技術系のイベントに行ったことありますか?

みたいな感じだった気がします。とにかく受かりたかったので今までやったことを「これ本当にアピールになるか?」みたいなものも含めて片っ端から書いて出しました。通りました。やったー!


…とは言うものの参加の案内が来た当初のぼくはGitなんもわからん状態で、まあ実際部活とか身の回りにGit使ってる人いないんだから実践経験とかまるでないといった感じでした。

具体的にレベル感を書いておくと、

  • Gitみんな使ってるし使ってみよ
  • GitHubに成果物のリポジトリ上げとくと就活に有利らしい
  • やり方わからんけど以前の状態に戻したりできるらしい
  • masterブランチに直接commitしたら怒られるらしい

みたいな感じです。addしてcommitしてpushすると良い、ぐらいにしか思っていませんでした。ちょっと便利になったクラウドストレージかな?


ということで流石にヤバいぞと思ったぼくが参加までにした予習が

  • ProGitの日本語版を読んで実際に動かしてみる
  • LearnGitBranchingを完遂

の2つです。ProGit最高。


今回は第10回目の開催ということで交通費全額支給でお招きいただきました。最高か?ありがとうございました。

ということで優雅に当日の午前5時半に起床、始発飛行機で羽田まで飛んでそのままmixi本社のある渋谷までぶっ飛ばしてオフィスに到着したのが受付開始2分前とまあそこそこにギリギリでした。


開場~競技開始

今まで参加した技術イベントだと大体2,3人ぐらい女の人がいるイメージだったのですが、今回はぼく1人だけでした。

別に心細いとかはないですが単に「えーそうなんだ、へえ」という気持ちになりました。


会場について受付を済ませ決められた席に座るといろいろノベルティが置いてあったりしました。


ペアの人はSwift書きの大学3年生で年間通じてcontributionなんかしちゃってたのではいプロ~もう勝てへん無理無理死んだ死んだとなっていました。

ぼくは趣味プログラミングするようになったの今年の8月からなのですがどうして選考通過…


ところで以下に示すのは用意していただいた昼食です。

有名っぽいカレーらしいです。辛いのが苦手のため中辛でも辛かったですがじゃがいもが甘くてちょうどよかったです。

牛肉めっちゃ柔らかかったです。


チューターの社員さんとペアの人との3人でお話しながらご飯を食べていました。

このときペアの人がハイパーやべーやつというのを察しました。なんかすごい惰性で人生やってるみたいな雰囲気してる癖に成果物出してて怖いし何か別に情報系ってわけでもないし飄々としていてヤバくてヤバい。

ぼくは緊張で心がご逝去になっていました。


ペアの人には「低レイヤ好きそう絶対強い」と言われましたがどこから低レイヤ好き情報を得たのかわかりません。これかな?

GitHub - hsm-hx/secexp-for-junior: 高専祭2018「ゼロから始めるゲームハッキング体験」for中学生 講習資料

あとはArchLinuxの話をしていました。他にできる話がないため…


競技本番

競技開始直前ですがリポジトリがぐちゃぐちゃになったときのために用意されたリセットボタンの中にやる気ボタンなるものが存在すると聞いて見に行きました。

高専生がたくさんやる気ボタンに集っていて限界…という感じでした。


競技ですが、Gitを使っている現場で起きた困りごとを解決する、という課題がたくさん出題されました。

  • なんとなくやったら解ける
  • 知ってれば解ける
  • 知ってて頑張れば解ける
  • 知ってて頑張って頑張って頑張る(!!!!!)と解ける

という感じな難易度分けになっていて、問題を解くとその難易度分の点数がチームに加算されます。


ぼくのチームは2点問題まで全てと3点問題1つを通しました。

解いてない1点問題2問以外は全部おりゃーってやって自力で解けたので嬉しかったです。

正直ProGit読んでなかったら1点問題から無限に歯が立たなかったと思っています。ProGitに感謝です。


これは競技中にいただいたパリピドリンクです。カフェインがいっぱい入っていて素面でアガれるらしいのでもらいました。不健康な飲み物が大好きです。

普通に美味しくて気に入ってしまいました。

なるほどね?


競技中無限にバグらせてリセットボタンを押しに行きまくっていたら現社員さん(津山高専OBの先輩)に「宇部高専の悪いオタク」と言われてしまいました。

真面目に競技に取り組んでいただけなので遺憾に思うなどしました。

良いオタクと言われるように日頃からもっと徳を積んでいきたいです。


今回の競技に参加して思ったんですがぼくはGitを作ってみたいです。

Gitを作りたいです。

ProGit読んでるときもそうだったんですがGitは配管コマンドが楽しくてそれ以外は嫌です。conflictとか起こさないでほしいな…


競技以外のこと

競技前・競技後にLTが全部で4本あってGitにまつわるあれこれのお話がありました。

難しいことはわからないなだったのですが、実際の開発環境でGitがどう使われているかとかGitにまつわるデータを解析してみたよとかでした。


どの話も面白かったのですがやっぱり最後のgit challenge創始者の方のGitに詳しくなるまでの過程の話が一番エモかったです。お気持ちが生えました。

  • 経験を活用する機会を見逃さない
  • 整理された記憶は整理されていない記憶より情報量が少ないので覚えていられる

あたりがとても印象に残っていますね。


スライドは以下で公開されていますしGitに関わらずどんなことにも言えるような話だったので人間は絶対に読んでほしいです。


懇親会では豪華な料理を食べながら他の参加者さんや社員の方々とお話をしました。

以前オンラインで面談をしていただいた人事の方にも挨拶してお話できたので嬉しかったです。


懇親会では前半高専オタクと限界トークをして後半社員さんから無限に知見を授かっていました。

結構部活のマネジメントでつらくて自分の開発できてないです…みたいな話をしていたのですが、その面の努力を肯定してもらえたのは結構自分として大きかったなと思っています。


お話をしている中でいただいた言葉では

  • 後付けで良いので自分の行動に理由を付ける
  • 良いフィードバックをすることで自主性を育てる

の2つが印象に残りました。


自分の行動に無理矢理でも理由付けをすることで自分を納得させると自分の過去について後悔しなくなる。というのが本当にそうで、本当にそうだなあとなりました(はい)。

何かと過去について「虚無しかしてないな…」と言いがちなのでやったことをしっかりまとめて理由付けをできるようにしていきたいなと思いました。

良いフィードバックを~というのはまさにマネジメントの話で、やっぱり褒められると嬉しくて自分でも積極的に学ぼうとしますよねという話です。

良い感じに後輩を育ててぼくも開発できるようにしていきたいなとなりました。


まとめ

git challenge最高でした!!!!!!!!

後輩とか絶対勧めたいんですがまずは後輩がGitを使えるようになるところからです。

ということで1月に部内でGit講習会をやろうと思います。


git challengeですが、「普段実践する機会がなくてGit使えない…」という人にこそ行ってもらいたいです。個人的に。

というのが、実践経験を積めるため。あとそういう人って口実がないと勉強しないと思うので。

まずgit challengeに応募して、そのあと必死に勉強して、その知識で実践経験をしてください。当日。本番で。いいですか?まず応募しましょう。

本当に思うんですがこういうイベント取り敢えず行けば良くて不安とかまあそれはそうなんですが技術とかは後から付いてきます。迷ってる暇があるなら行動に移しましょう。


ところでちょっと良いホテルに泊まったためはしゃいできました。


お風呂ではしゃぐhsm_hxは置いておくとして、本当に密度が高くて良い週末を過ごすことができました。

運営の方々、参加者の方々、本当にありがとうございました。

今回得た知見を「うおーーーー勉強したぞーーーー」で終わらせずに実践開発に使ったり下の代に落としていったりしたいです。がんばるぞー




どうでもいい話なのですが、帰りの飛行機でCAさんに「搭乗記念のおもちゃをお配りしておりますがいかがですか~」と声を掛けられました。

CAさんの目には一体どんなhsm_hxが映っていたのでしょうか。