2年間プロコンに強い高専で修行したあと別の高専に転校したら良い感じに成長できた話

この記事は茨城高専アドベントカレンダーの15日目の記事です。

もう15日は過ぎてるのですが、なんとなくこの記事を書きたくなったので空いてる日付のやつに登録しました。

この記事の結論

元いた高専は組織・コミュニティとしての力が大変にあり、転校先の高専は個々の学生たちの技術力が大変に強いです。

それぞれの高専にメリットがあり、組織が強い高専のメリットと個々が強い高専のメリットは同時に得ることが難しいので、転校することで短い高専生活で効率的に様々な能力吸収することができました。

もといた高専について

僕が元々いた高専は、高専プロコンに非常に強い高専でした。僕が1年の段階で最優秀賞を3年連続でとっており、自分もプロコンをやりたいと思い入学した感じです。

2年間の修行

入学してすぐに高専プロコンをやってる研究室のドアを叩き、1年生からプロコンに関わらせてもらえることになりました。

初めて先生に「あの、この研究室にこいって言われたんですけど...」って恐る恐る言ったら、「こいって言われたから来たの?」と怒られたことを今でも覚えてます。(良い経験だった)

この瞬間から自主性について色々と叩き込まれたと思います。

1年生

1年生の時はパソコン甲子園に出る事になるプロジェクトに関わらせてもらいました。

予選資料を過去の先輩の資料を参考に見よう見真似で作ってみるのですが、なかなかOKが出ず何十枚も同じ資料を書いた思い出があります。

この時は資料作成の肝など何も分からず、先輩や先生の意見を参考に何度も試行錯誤を重ねて資料を完成させていきました。

パソコン甲子園のことを同時にやりながら、先生から「とりあえずこれに出な」と勧められHackU 2018 in NAGOYAに出場し、ここでも何度も先生にアドバイスを頂きましたね。無事、HackUは最優秀賞を取れました。

1年生はとにかく多くのコンテストやハッカソンに出て、その度に資料を作りまくって資料作成の基本のキを学んだ1年です。

2年生

パソコン甲子園のプロジェクトのリーダーとして出ました。

2年生の4〜7月が元いた高専での生活の中で1番キツかったと思います。 何十枚、何百枚と予選資料を書き、何度も先生に修正をくらって半泣きで修正してた記憶があります。

無事予選に通り、今度は実装をしながらリーダーとしてプロジェクトマネジメントをしなくてはいけません。

1年生の時はマネジメントなんて一切気にせずやってましたが、この時初めてマネジメントの難しさを体感し、これまた半泣きで夜遅くまで作業をしていた記憶があります。

アイディア出しで何十個とアイディアを出し、その度にダメ出しを食らって、N回目に先生に「うん、良いんじゃない。これでいこう」と言われた時はマジで泣きました。

転校

2年生の後半くらいから暗号に興味が出始めて、暗号の研究室がある別の高専への転校を意識し始めます。

転校試験を受けて合格し、とある高専に3年から転校することになりました。

3年生

とにかく周りが強いです。

元いた高専はプロジェクトマネジメント力・資料作成力は組織的に非常に強かったのですが、転校先の高専の学生は純粋な技術力が非常に高かったです。

3年生は未踏ジュニアに採択され、ただひたすらコードを書いてた記憶があります。

別の高専に転校し未踏ジュニアの応募資料を書いてる段階で、初めて自分の書類作成能力が飛躍的に伸びていることに気づきました。 2年間元いた高専で修行した成果を感じられ、転校先の高専で周囲の力にヒィヒィ言いながらコードを書く生活は「良い意味で転校して良かった」と感じることができました。

4年生

いくつかの仕事を抱えるようになり、仕事をやりながら友達と高専プロコンに出ました。

この段階になるとなんとなく「ウケる資料」と「ウケない資料」の見分けがつくようになり、コンテストの予選に通らせるくらいならどうってことなくなりました。

はい、調子に乗りすぎです。資料作成能力について自分の能力を過信し過ぎ、プロコンでプチ炎上しました。

4年生で得た知見は、調子にのらないです。

転校してわかったこと

組織力が強い高専から個々の力が強い高専に転校するのは、大変良いです。

なんたって、組織としての力が非常に強い高専では、代々受け継がれた資料作成の肝やプレゼン方法、プロジェクトマネジメントの仕方を叩き込まれます。個々の学生たちが強い高専では、周りに遅れをとらまいと自分を奮い立たせることができ、元いた高専でまだ未熟だった自分の技術力にさらに磨きをかけることができます。

もちろんデメリットもあります。

環境がガラッと変わるというのは体にとって大変な負担であり、きちんとメンタルケアをしないとすぐ鬱になります。(実際なりました)

が、やはりメリットの部分が大きく、自分は良い意味で転校して良かったなと実感します。特に「臨機応変になんとかする能力」が1番身についたと思います。

終わり

最後まで読んでいただきありがとうございました。

高専から高専への転校実践入門

注意書き

  • この記事には、固有名詞を一切含んでいません。
  • この記事には、いかなる組織や個人への不満、その他誹謗中傷を一切含んでいません。
  • この記事に書いてあることを実践したことで起こったいかなる損害に対し、筆者は一切の責任を負いかねます。

はじめに

これは、筆者が実際に受験した高専から高専への転入学試験を参考に、転入学するまでの流れや注意点を記載した記事です。

よくある疑問・勘違い

そもそも高専の転入学制度なんてあるの?

ほとんどの高専には存在しますが、たまに無い高専があります。転入学を希望する際には、必ず希望先の高専の教務係へ問い合わせる必要があります。

親の転勤とかの理由じゃないと転校できないんじゃないの?

そんなことは無いです。ちなみに筆者が転入学試験を受験した理由は「研究したい分野の研究室が今いる高専に無かったから」です。

親の転勤等の理由じゃないと受験できない訳ではないので安心してほしいのですが、よほど強固な理由じゃないと厳しいと思います。

転校した後の学科はどうなるの?

基本的に、元いた高専情報工学科だったら、転校先の高専でも情報系の学科への転入となります。

しかし、全ての高専について調べた訳ではないので、詳しくは希望先の高専の教務係に問い合わせる必要があります。

もしも転入学試験に落ちたらどうなるの?

基本的に元いた高専に留まれます。 転校なんてしようとしたんだから退学だ!なんてことは無いはずです。

私立高専↔︎国立高専の転校はできるの?

ごめんなさい!わかりません。 多分カリキュラムさえ似ていればできるはずなんですが、希望先の高専の教務係に問い合わせてください。

転校できない条件ってあるの?

元いた高専での学科と、転校先の希望の学科が違う時です。また、同じ学科同士でもカリキュラムが全然違う場合は、単位認定等の関係で厳しい場合があります。

転校試験を受けるための手続きから合格発表までどれぐらい時間がかかるの?

私の場合は、担任に転校したい事を伝えてから実際の結果発表まで3ヶ月でした。これは高専によりけりだと思いますが参考程度に。

学校の成績が良くないと転校できないの?

絶対にできないって訳じゃないですが、成績が良いに越したことはないです。成績がよければ良いほど転入学試験において有利になると思っても良いと思います。

参考までに、筆者の学校での成績は40人中大体10位くらいです。

転校生の受け入れは消極的なんじゃないかな

高専は転入学の受け入れに消極的である、と書いてある記事がありましたが、個人的には嘘だと思います。

優秀な人であれば転入学先の高専にとってもメリットがありますし、必ずしも“消極的”とは限りません。

そもそも消極的であれば後述する書類審査の段階で不合格にしますしね。

第4年次編入じゃダメなの?

第4年次編入の制度は高校生向けであるため、高専生は受験できません。そのため、高専から高専への編入を希望する場合、転入学試験を受験する必要があります。

転入学試験の流れ

1. 親・担任に相談する

転校したいと思ったら、まず親と担任に相談しましょう。親の了承を得て、担任の先生の理解も得られたら次のステップへ進めます。

ほとんどの場合、高専の先生でも転入学制度について知らないと思うので、転入学制度についても説明するとより理解が得られやすいと思います。

2. 今いる高専の学生課教務係に行く

学生課の教務係まで行って「転入学をしたいのですが」と言いましょう。多分教務係なら制度自体は知ってるはずです(たぶん)。

あとは基本的に教務係の指示に従うだけです。

3. 照会

ここから先は私が希望した高専においての話です。高専によって流れは違ってもおかしくないので、参考程度でご覧ください。

まず、今いる高専の校長もしくは副校長が転入学試験受験の許可を出します。

許可が出たら、希望先の高専の校長に「うちに、そっちへ転入学したいって学生がいるんだけど良い?」って感じの転入学照会があります。

希望先の校長が「OK」って言ってくれたら無事転入学照会は終わりです。

4. 書類審査

転入学照会が終われば次は書類審査です。 私の場合は転入学希望理由書の1枚だけ書きましたが、高専によっては他の書類も書く場合があります。

5. 面接審査

早ければ1〜2週間ほどで書類審査の結果が届きます。 もし無事合格していれば、面接審査へ進むことができます。

面接審査は、希望先の高専へ直接行き面接試験を行います。高専によっては筆記試験がある場合がありますが、私の場合は面接のみでした。

面接には正装で行くと良いでしょう。今いる高専に制服があるなら制服で行くことが望ましいです。

面接の内容について、詳しいことは言えません。ただ1つアドバイスするなら、

希望先の高専のことを完全に理解しましょう!! カリキュラムや行事などはもちろんのこと、寮を希望するなら寮のことについても完全に記憶してください。

私から言えるのはこれだけです。

その他注意点

  • とにかく希望先の高専ことについて覚える
  • 生半可な理由で転校はしない方が良い

さいごに

もしこの記事を見ている方の中で実際に転校を考えている方がいて、この記事が参考になれたら嬉しいです。

高専から高専への転校は、あまり他人に言い過ぎると非常にプレッシャーが大きくなります。

メンタルのためにも転入学試験を受けている間は、あまり「自分転入学試験受けることになったぜ!」とか言わない方が良いです。

分からないことがあればコメントへどうぞ。

頑張ってください。

ここまでお読み頂きありがとうございました。

TRUNKハッカソンに出場しまたLINE BOTを作った話

お久しぶりです僕です。

今回TRUNKハッカソンhttps://trunk.fm/hackathons/ss2019)という24時間で1つのプロダクトを開発するコンテストに出場し、LINE BOTを開発したのでブログを書きました。

何らかのコンテストでLINE BOTを開発するのは3回目なのでそろそろ新しいのにチャレンジしたいですね。

何をつくったの?

LINE BOTで現在位置を送信すると近くにある飲食店を混雑度別にソートして教えてくれるっていうのを作りました。

混雑度についてはお店のドアにSens‘itというデバイスをとりつけるだけで入店者数を測る!導入簡単!LPWAで省電力!ってアピールしました。

Sens`itについてはこちら→https://www.switch-science.com/catalog/3974/

LPWAについてはこちら→https://soracom.jp/lpwa/
f:id:hahayata:20190318230752j:plain
f:id:hahayata:20190318230809j:plain

入店者数はSens`itにドア開閉センサが搭載されているので、入店者数を計算しました。
(審査員に「これだと店主一生出れないのでは?」って指摘されましたが...^^;)

技術的な話

BOT側はPythonとFlaskで開発しました。なぜFlaskかというと僕がそれしかできないからですw
その他サーバとかDBを操作するのはPHPとNode.jsで書きました。この辺は僕担当じゃないのでTwitterID:@siketyanに聞いてください!

コードはGitHubにあげています。
https://github.com/FlexiblePrintedCircuits/SuEat_BotCode

苦労したこと

僕自身DBの知識がないので、FlaskでSiketyanの作ってくれたDBだったりJSONデータをFlaskでいじるのが全然わかんなかったです...。
Siketyanに聞きまくってしまいました。Siketyanごめんね。

感想

24時間疲れた!
けど達成感は確実にある!24時間ハッカソンはHackDayに次いでこれで2回目だけど、プレゼンも含め開発がすべて終了したときのうおー!感はそりゃあもう半端ないですよね。
HackDayは深夜4時が1番きつかったけど、今回は早朝6時が肉体的にも精神的にも1番きつかったね。
イライラしてメンバーに八つ当たりしてしまった...。ごめんね...。

最後に

なんか途中で廊下で喧嘩してた人たち、結局どうなったん?

Python(Flask)とherokuを使ったLINEBOT開発でエラーが出てないのにオウム返しできない時

最初に

PythonでFlaskとherokuを使用した初歩的なオウム返しLINE BOTを開発していましたが、heroku logsでログを確認しても特にエラーが出てないのにオウム返しできずにいました。 今回先輩など多くの方にアドバイスを頂き解決したので備忘録として記事をかきます。

解決法

以下が、僕がオウム返しできなかったPythonコードです。

from flask import Flask, request, abort

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)
import os

app = Flask(__name__)

line_bot_api = LineBotApi('LINE_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('LINE_CHANNEL_SECRET')

@app.route("/")
def hello_world():
    return "hello world!"

@app.route("/callback", methods=['POST'])
def callback():
    signature = request.headers['X-Line-Signature']

    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)
    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))

if __name__ == "__main__":
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)

上記のコードは以下の記事を参考にしました。 https://qiita.com/suigin/items/0deb9451f45e351acf92

Pythonとなったら今まで何回お世話になったか分からないくらいプロプロの先輩(TwitterID: @JUN_NETWORK)に聞きまくった結果、原因として以下が挙げられました。

FlaskではデフォルトでデバッグモードがOFFとなっています。デフォルトでOFFなおかげで、本番環境でうっかり--productionのような本番用にスイッチするためのオプションを付け忘れて、デバッグ画面が表示してしまうようなことはありません。

引用:[https://www.subarunari.com/entry/2018/03/10/%E3%81%84%E3%81%BE%E3%81%95%E3%82%89%E3%81%AA%E3%81%8C%E3%82%89_Flask%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%BE%E3%81%A8%E3%82%81%E3%82%8B%E3%80%9CDebugger%E3%80%9C]

よって、

app = Flask(__name__)

の下に、

app = Flask(__name__)
app.debug = False

をつけることによってFlaskのデバッグモードをFalseにしました。

結果、無事治ってオウム返しできました。

デバッグモードをFlaseにしたのに治らない場合、以下の確認をしてみてください。

if __name__ == "__main__":
    app.run()

コードの最後がこうなっていた場合、僕の使用した環境では正常に動いてくれませんでした。 これはngrockなどを使用してローカル環境で実行するとちゃんと動いてくれるのですが、サーバをherokuにした途端動いてくれません。これはローカルならローカルで動く環境、herokuならherokuでちゃんと動く環境に適した書き方(自分でも何言ってるかわかんないんで間違ってたらごめん)をしないといけないらしいです。

よって、以下のように書き換えます。

if __name__ == "__main__":
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)

これら以外でBOTが正常に動いてくれない場合、herokuでのLINEアクセストークンやシリアルキーの設定、名前があっているかなど確認しましょう。

今回は以上ですお読みいただきありがとうございました。

HackDay2018に参加した話

久しぶりの投稿になります。
今回24時間で1つのプロダクトを開発するコンテスト、HackDay2018に参加したのでその話を書こうと思います。

きっかけ

HackU名古屋で最優秀賞を受賞したので名古屋会場代表で招待させて頂きました。

この記事をまとめると

・いい夢を見るためのアプリを作った。
・疲れた。
・Hack賞を取れそうで取れなかったので悔しい。
・思いのほか期待されていたのでこれからも頑張りたいモチベが向上した。

作ったもの

睡眠中に感じる周囲の音や匂いは夢の内容に影響しやすい

夢はレム睡眠の時に見ることが多い

というのを応用して、レム睡眠を検知したら事前にセットしておいた音と匂いを流すアプリを開発しました。
匂いは、匂の元を枕元に置いてプロペラを回し匂いを流すっていう原始的な方法です。
詳しくは写真を参考にしてください。
f:id:hahayata:20181218150058p:plain

システム説明

MindWaveという脳波測定キットで脳波を測定しながら寝ます。脳波というのは普通数値を持たないのですが、相対的な量や時間的変動から脳波を数値かしました。
数値化された脳波からα波だのβ波だのを検出してレム睡眠も検出しちゃうって仕組みです。

苦労したこと

そもそもレム睡眠を検出することが非常に難しくそれだけで24時間中の10時間は費やしました。
使用言語は全てPythonで、MindWaveからの脳波データを受け取るためのthinkgearというモジュールを使用しました。
このthinkgearがなかなか曲者で、ネットの情報も少ないし扱い方もよく分からなくて苦労しました。
この件で苦労してる人は他にもいるはずなので、thinkgearについては僕の書いたプログラムを交えて別記事にまとめようと思います。

その他

表彰式にて、審査員の方がHack賞の表彰をしている時に

「この賞はチーム徹夜同好会と迷いました。」

とおっしゃって頂けました。
徹夜同好会というのは僕らのチーム名です。
Hack賞をあと少しで取れるっていう感じだったので、その分嬉しさもありましたし悔しさもありました。
機会があればまたHackDayに出て今度こそHack賞を奪い取りたいと思います。

その他技術的な話(thinkgearやその他サンプルプログラム)は後日別記事にまとめます。

HackU2018名古屋で最優秀賞を受賞させて頂きました。

かなり久しぶりの投稿になります!


今回の内容はタイトル通り、8月21日に名古屋プライムセントラルタワーにて行われたHackU2018名古屋にて

最優秀賞

を受賞させて頂きました!!!!



私たちのチーム『徹夜同好会』が開発したのは、『エディマシーンズ』という小・中学生向けのパソコン学習アプリとなっています。



VRを用いた仮想空間内でマザーボードなどの上を自由に冒険でき、実際に動いて見て楽しくゲーム感覚で学べるようにしました。


実際のプレゼンはこちらから↓↓(再生時間指定してるのでURL踏んだら僕のプレゼンが流れるはずです)
https://youtu.be/-IkyK4DBX0k?t=2305




今回の記事では、とりあえずどの様な流れで開発を進めていったかを紹介し、技術的なことはまた別記事にまとめようと思います。




まず開発期間が始まり最初に始めたのは

どういう技術を使用するのかを調べて共有する

です!



今回は4人で出場し、プログラム班2人と3DCG班2人で開発を進めました。プログラム班は3DCG班が作ってくれた3DCGイメージをUnityにインポートしかっちょよくキーボード叩きます。



その際両班ごとに情報を共有すると思うんですが、

例えば、プログラム班が「Unityで開発するよ」だけだったり、3DCG班が「Blenderを使うよ」とかだけ共有したりするのは絶対にやめました!!!!



例えば3DCG班は、「Blenderを使うんだけど、プログラム班にもどういう操作方法でここまで使い方を調べてあってどこまでできるのか説明しておくね」という風に、プログラム班でも多少はなんとなくBlenderを使えるくらいまで詳しく情報を共有します。




こうすることで、プログラム班が3DCG班は大体このくらいのことまでできるっていうのを大体把握できるので、最初から困難な要求をしてしまうことも減るし、理解度に合わせて、より3DCG班がスムーズに仕事できるように内容の伝え方も工夫できます。






こういう風に、担当じゃないから放っておくのではなく、他班が使う技術だけでなく理解度やその技術の大まかな使い方も勉強しておくことで、よりスムーズな開発を進められると考えました。






実際にこの進め方を行い、スケジュール的にはかなり予定通り、焦ることなく両班とも楽しく開発を進めることができました!!!!




もしかしたら当たり前の進め方かもしれませんが、個人的には初めてこういう感じでやったので紹介することにしました。






暇な時に技術的なこともまとめようと思います。
ここまで読んでいただきありがとうございました。