明日書く

インターネットやめろ

おい、デュエルしろよ

自粛期間中の外出は2回、かげろんです。

高専というものは寮があるもので僕も家がちょっと遠いので寮に入っていますが、今回の騒動で皆追い出されちゃいました。

寮生というのは不便なもので寮が生活環境な関係上大量の私物が置かれているわけです。食料や教科書、趣味のものなどなど。

今回僕は趣味であるカードゲーム、その中の遊戯王をこの期間中に友達とやるためにいくつかのデッキを持って帰りました。そして実際にやってみるとライフポイント(LP)計算のために置いている電卓が見にくいことこの上ない。

 

そこで、今回作った商品はこれ

 

 

 

 

 

f:id:shade4827:20200528193122p:plain

\ カメラ映像にLP計算用電卓をくっつけるヤツ! /

 

経緯・概要

上記の通りです。省きます。

 

材料

≪必要なもの≫

・PC・・・1台

Webカメラ・・・1台(※)

OpenCV環境(今回はanacondaで構築)

・基本的なプログラミングの知識

 

(※)≪代用できるもの≫

スマホ+USBケーブル(PCとスマホを接続できる規格)・・・1セット

・『隠者の紫(ハーミッド・パープル)

 

今回はWebカメラが用意できなかったため、スマホWebカメラとして扱うアプリを使用しました。iVCamを使ってたんですけど諸般の事情によりDroidCamに変更しました。

 

www.e2esoft.com

www.dev47apps.com

 

 やったこと

使用言語:Python

tkinterでUIを作ります

②ConfigParserでConfigParserでどのカメラを使うか設定を取り込みます

OpenCVでカメラ映像を取り込んで表示します 

④デュエルに誘うor誘われます

おいデュエルしろよ がまさかのトレンド入りでTLが蟹まみれになる人が ...

 

コードについてはGitHubにあるのでそちらでご確認ください。

 

機能

遊戯王の電卓としての基本機能として、加減除算、指定した値へ変更、初期化機能

・ダメージログ(確認時にシステム音がなるけど気にしてはいけない)

・どちらのプレイヤーのLPか判別するため、プレイヤー名表示&変更機能

 

感想

実際にリモートデュエルやる機会があったので使ってみたんですけど、Zoomでは画面共有中に相手の画面共有・カメラの映像が小さくなってしまったので、DiscordやLINEでの使用をおすすめします。

 

今回、編入試験が延期したこともあり遊戯王しまくりな状況だったため作成しましたが、今後は編入に向けての準備をしていかなければなと思っています。

次回はいつになるんでしょうね。

創造工学を想像してみよう

Zoomに嫌われています、かげろんです。

ゆるい勉強会@Webで発表しようとしたら家の回線かPCか何かしらに阻まれてマイクが言うことを聞いてくれませんでした。

ということで今回発表しようとしたことを展開してブログに残しておきます。

 

What is 創造工学?

f:id:shade4827:20200307143841p:plain

画像の通りです。

 

読むの面倒なのでまとめると、

1.チーム作って

2.ロボット作って

3.陣取りゲームして

4.結果をプレゼンする

これを半期(授業15回×4時限)で行います。

律儀にシラバス読んだ方はお疲れ様です。

 

チーム分け

まずチーム分けです。

これは担任の一存でチーム分け方法が決定し、勝手に割り振られます。

そりゃロボット作るんですからロボコンのメンバーとか組込み最強マンとか欲しいですよね。

僕たちのチームは元ロボコン1人が加わり「なんとかなるだろ!」という気持ちでチームが決定しました。

 

ロボット製作しなければならないんですけど僕工作機械使うの下手くそなんですよ。やばいですね。

機体班、回路班、制御班の3つに分けて製作を進めるのですがクラスの中ではプログラミングをしているほうな僕は当然のように制御班になりました。

回路もよく分からないのでまあそれはよかったんですけど、組込み全く分からないんですよね。まあほとんどの人がそうだったのでセンスで製作されていきます。

 

ロボット製作

ロボットを制作するにあたりいくつかルールがあります。

・縦280×横280×高さ200[mm]内に収める
・スタート後、400×400[mm]まで変形可能
・缶を上面に取り付けられる構造
3Dプリンタによる部品を使用
・5[V]と7.2[V]の電源2つで自律走行

これを達成できるロボットでないと失格ということになるんですかね。少なくとも評価が下がります。

 

我々のロボットのコンセプトは

 

荒野を駆け抜ける

テキサストラック

 

ということで、

・オムニホイールによる素早い走行

・機体を小型化して捕捉されにくくする

・モータを前に置いてFF駆動

という構想を元に製作をしました。

が、そううまくはいかず、

・オムニホイールは製作技術と制御の難しさから断念

・小型化を目指すも結果的に大きくなるが安定

・FF駆動はRR駆動に変更されたが競技会前日にFF駆動に戻る

と全然違うものになってしまいました。まあ仕方ないです。

しかし他チームにない個性的なポイントもあり、

・防衛時に腕(タコ糸)を振りまして展開し、圧倒的防衛性能を実現

・右左折時に素早く旋回してコーナーで差をつける

以上の機能が実装されました。

 

制御班について

制御班はBeagleBone Black(BBB)を用いて走行、センシングの制御をします。

BBBの仕様としては、

RAM:512MB

ROM:2GB or 6GB

SDカード使用可能

aruduino等使用不可

であり、SDブートをしないのであればC言語Pythonのみ使えるらしいです。

 

僕が実装した最終的な機能は、

・フォトリフレクタ8個で構成されるライントレーサを用いて白線に沿って走行

・素早い右左折

・スイッチによって攻防切替

の3つです。

具体的なソースコードについてはGitHubに上げているんですけどとても汚くて見せられないので頑張って探してください。

 

制御実装で困った点

製作する上で3つの問題点が発生しました。

1.プログラムが書けない

2.見通しを立てられない

3.破壊

 

1.プログラムが書けない

我々、システム制御工学科は名前の通り情報系の印象を持ちがちですが実際はこの創造工学に表れているようにロボット工学科です。

プログラムに夢を持って入学した人もいたようですが、入ってからやっている人が多いわけでもなく、私はたまたまやっていたので制御班になったわけです。

制御班にはもう1人メンバーがいたんですけど「プログラムは分からないから任せる」ということで相談もしづらい環境になりました。

しかし、競技会直前の制御の調整では一転、他の班のメンバーから「こうしたほうがいいんじゃない?」と同じことを何度も何度も口を出されてとてもイライラしました。

今となっては大人気ないというか、切羽詰まっていたんだなとは思いますが、あの時の自分にとっては間違いないストレスの一端でした。

 

2.見通しが立てられない

ロボット作成上他の班に進捗が依存しており、回路が完成しないと動作確認ができず、機体が完成しないと走行テストができません。

f:id:shade4827:20200307153731p:plain

依存関係

つまり、ロボットの全体が完成しないとまともに調整ができないというわけです。

我々の班は様々な設計変更が発生したこともあり、計画の遅れを感じました。

が、機体班曰く「計画通り」らしく、そう言われるとそうかとしか言えず機体が製作されました。

機体班の比重が大きく、結果的にロマン設計が詰まった機体になってしまい、メンテナンス性が悪い上に調整の時間が少なくなりました。

f:id:shade4827:20200307154142p:plain

破綻

 

3.破壊

制御班の全てが詰まったBeagleBone Black、それを破壊しました。5台も。

原因としては、

・動作時にテスターを使用してしまってショート

・基板の設計・はんだ付けミス

・エンドミルのせいか基盤にバリが発生し、基盤に触れるとショート

しかも前日に1台、当日の朝に1台破壊し、当然先生にも呆れられました。本当に申し訳ありませんでした。

f:id:shade4827:20200307162306j:plain

6台目BeagleBone Break Brothers

 

競技会

ここまでの数々の苦難を乗り越え競技会です。

競技会のルールは、

・攻防各3分間で陣取りor妨害

・相手と接触すると競技終了

・防衛側で1分間発進できないとペナルティ

・多くのポイントを獲得したほうが勝利

となります。

この競技会は授業14回目で行われるのでそれまでの13回分で製作しなければなりません。

では実際13回分の授業の時間は、45分授業×4時限×13週分=約40時間となります。数字だけじゃよく分かりませんがよく考えてみてください。週5勤務8時間労働の1週間分の時間ですね。

これは残業しないと完成して調整はできないですよ。どうなってるんですか。

しかもこれ残業も評価の一部らしく最終報告書に「どの程度授業時間外に実施したか」を記述しなければならないらしく、当然のようにされていました。

高専は自由」というのは本当ですが、課題等とは別にこの巨大なタスクの圧をかけられるのは相当なストレスでした。

 

ここまで残業の愚痴でしたが実際の競技結果は5チーム中4位となりました。

こうなった要因としては、

・競技会当日の朝にBBBを破壊してしまう

・試合途中でモータドライバICが壊れて1試合放棄

・調整が甘く予想だにしない挙動による引き分け

・製作中の喧嘩(当人は自覚無し)

が挙げられます。

しかし最大の原因は僕が他のメンバーに相談をしなかったことにあると思います。

「お互い任せるよ」という空気の中相談をしなかったため、僕個人の偏った思考のみでプログラムが構築され、問題点を洗い出すことも難しい状況になっていました。

 

来年以降にやる人に向けて

制御班を最優先

全ての動作は制御班にかかっています。

調整は満足することがあってもそれで勝てるかはまた別の話であり、終わりはありません。

制御班が制御しやすく、なおかつ調整の時間が十分に取れるように製作を進めてください。

 

「計画通り」だと遅れている

我々の班は機体班の「計画と同じぐらいに進んでいる」という言葉に疑問を持ちながらもそのままにして制作を進めていました。

実際には調整の時間が短いという事態になっているため、立てた計画よりもかなり進んでいるぐらいに製作してください。

 

残業は必然

評価の対象らしいです。

それにしても機体班は前半に、制御班は後半に、回路班はたまにぐらいの残業をせざるを得なくなります。

 

感想

組込みとチーム開発を体験できることができました。

正直やりたくなかったんですけど体験してみると結構楽しいものですね。

チーム開発はまたやってみたいんですけど、正直ロボット製作はもう二度とやりたくないです。

 

遺言

皆で仲良く作ろう!!

 

次回は受験の感想か僕の大好きなカードゲームの話をしようかと思います。

課題の神を創造した

なんでもう年末なんですかね、かげろんです。
10月末まで部長だったんですけど座を奪われました。
任期満了して今では老害です。
今回は部長になってもらったみやもっちゃんが12月にいつも部内でやっている発表会をやるとのことだったので、connpassを建てるだけ建てて高専という今までより大きな枠組みでやろう、そして運営してもらおうと推し進めました。
ここで発表した内容を書いておこうかと思います。

twitter.com
sanct.connpass.com

劣化コピー機完備

皆さんは課題を期日内に終わらせるように自力でやっていますか?
弊クラスでは〇〇塾という圧力団体が存在しており、課題やテストのログがアップロードされるため、朝学校に来てから課題を写す”劣化コピー機”がたくさん配備されています。
私たちとしてはとても楽ですが、教員からすれば面白いことではないでしょう。僕はクソ真面目な部分もあるのでまず課題を忘れたという言い訳ができないようにしようかと思います。

Bot動かせばええやん!(名推理)

今回作ったのはDiscordのBotです。あの塾のメンバーはDiscordグループに所属しているので、Botをぶち込めばいつかは見るかと思います。

環境構築

Pythonを全く触ったことがないので学習を兼ねてPythonの環境を構築したいと思います。大分前にAnacondaがいいと言われましたが私は反抗してWSLを使っていきます。
以下のサイトを参考にして導入しました。
qiita.com


最初VSCodeで開発しようとしていたので上手くできず、さらにpipのディレクトリが変更されており爆破が決定しました。Install Battle敗北です。

Discord Bot作成

Discord Botを作成するためには、Discord Developer PortalBotのアカウント作成とpip等でdiscord.pyを導入する必要があります。
以下のサイトを参考にしました。
qiita.com

カレンダーから予定を取得

今回はGoogleカレンダーから予定を取得します。
GoogleCalenderAPIを使えば予定の取得・追加ができるらしいのでぶち込みました。
qiita.com

プログラム完成

導入してサンプルを少し書き換えるとこうなりました。

from __future__ import print_function
import datetime
import pickle
import os.path
import discord
import asyncio
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from discord.ext import tasks

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']

TOKEN = Botのトークン(文字列)
channelID = チャンネルID(数値)
client = discord.Client()

def GetEvents():
    """Shows basic usage of the Google Calendar API.
    Prints the start and name of the next 10 events on the user's calendar.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server()
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('calendar', 'v3', credentials=creds)

    # Call the Calendar API
    now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
    events_result = service.events().list(calendarId=カレンダーID(文字列),
                                        timeMin=now, maxResults=10, singleEvents=True,
                                        orderBy='startTime').execute()
    events = events_result.get('items', [])
    
    return events

# 起動時に動作する処理
@client.event
async def on_ready():
    # 起動したらループを開始する
    asyncio.ensure_future(time_check())

# 60秒に一回ループ
async def time_check():
    while True:
        # 予定の件数
        plans = 0
        # 現在の時刻
        now = (datetime.datetime.now() + datetime.timedelta(hours=9)).strftime('%H:%M')
        # 明日の日付
        tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y-%m-%d")

        if now == '21:00':
            channel = client.get_channel(channelID)

            date = str(tomorrow).split('-')
            messgae = date[0] + '年' + date[1] + '月' + date[2] + '日の課題/テストは'
            await channel.send(messgae)

            events = GetEvents()
            if not events:
                await channel.send('ありません.')
            else:
                for event in events:
                    start = event['start'].get('dateTime', event['start'].get('date'))
                    startDate = start.split('T')
                    if startDate[0] == tomorrow:
                        plans += 1
                        await channel.send(str(event['summary']))

                if plans == 0:
                    await channel.send('ありません.')
                else:
                    await channel.send('の' + str(plans) + '件です.')

        await asyncio.sleep(60)

# メッセージ受信時に動作する処理
@client.event
async def on_message(message):
    # メッセージ送信者がBotだった場合は無視する
    if message.author.bot:
        return
    # 「/plans」か「/予定」と発言したらGoogleカレンダーの予定が返る処理
    if message.content == '/plans' or message.content == '/予定':
        # 予定の件数
        plans = 0
        events = GetEvents()
        channel = client.get_channel(channelID)
        await channel.send('今後10件の予定は')
        if not events:
            await channel.send('ありません.')
        else:
            for event in events:
                start = event['start'].get('dateTime', event['start'].get('date'))
                
                # 得られた予定を文字列にして分解して編集
                sentences=str(start).split('T')
                words = sentences[0].split('-')
                eventMessage = words[0] + '年' + words[1] + '月' + words[2] + '日 に '

                # 時間指定もあれば追加
                if len(sentences) == 2:
                    sentences = sentences[1].split('+')
                    words.extend(sentences[0].split(':'))
                    eventMessage = eventMessage + words[3] + '時' + words[4] + '分 より '

                plans += 1
                eventMessage = eventMessage + str(event['summary'])
                await channel.send(eventMessage)

            if plans == 0:
                await channel.send('ありません.')
            else:
                await channel.send('の' + str(plans) + '件です.')


# Botの起動とDiscordサーバーへの接続
client.run(TOKEN)

DiscordのチャンネルIDは ユーザー設定>テーマ から開発者モードをオンにすると取得できます。
カレンダーIDは Googleカレンダー>マイカレンダーの設定>カレンダーの統合 からコピーしてください。

f:id:shade4827:20191217111350p:plain
12月16日に動作させた様子

大体望んだとおりの動作をしました。
では、これを常時起動していつでも予定を取得できるようにしよう、と言っても私は寮に入っているので朝の巡回時に電源を切られます。
そこでHerokuというPaaSを使うことにしました。

Herokuを使って常時稼働

Herokuを使うと常時実行できるらしいです。
signup.heroku.com
GitHubソースコード等々を上げ、デプロイします。
このとき、使用するライブラリを記載するrequirements.txtと言語のバージョンを記載するruntime.txt、実行時のコマンドを記載するProcfileも必要です。
今回はBotトークンやDiscordのチャンネルIDをソースコードにそのまま書いてあるためプライベートリポジトリとなっています。
Automatic deployを設定すると、コミットされても自動的にデプロイされます。世の中便利ですね。
f:id:shade4827:20191219154820p:plain
そして、Dynosをオンにすると動作が開始します。
f:id:shade4827:20191219155021p:plain
これらの手順についてはDiscord Bot作成で紹介した記事で詳しく説明されています。

完成

これで課題を忘れることがなくなったかと思います。
あとはGoogleカレンダーに予定を追加し忘れないかですね。
この機能についてもそのうち追加できたらなと思います。

実際に弊グループに導入したのですが、効果のほどはよく分かりません。
ただ、あまり情報系ではない人のほうが多いため「すごい」とか「bot有能」とか、褒められた気がします。
何かレスポンスがあるのがとてもいいですよね。
意見とか感想を貰えると開発意欲が湧くし、何よりやってよかったと思えます。
ぜひ皆さんも他人のためになる商品を作って金をぶんどってください。

おわりに

今回作ったBotは未完成です。
何か面白い機能の案があれば以下のフォームまでお願いします。私のタスクを増やしてください。
あとイスラム教の皆様におかれましては本当に申し訳ありませんでした。そのうち名前変えます。
docs.google.com

それでは、次回は怪文書を書けるよう精進してきます。

Procon30移動距離部門決勝戦敗退

我々、旭川高専は第30回全国高専プログラミングコンテスト競技部門に

「Procon30移動距離部門決勝戦敗退」チームとして参加しようとしました。

 

移動部門

f:id:shade4827:20191015151759p:plain

10月12日気象衛星

ご存じかと思いますが関東に台風が直撃しました。

旭川から羽田を経由して宮崎まで空路で行く計画でいたため、台風の影響により羽田空港発着禁止、移動部門敗退という結果となってしまいました。

宮崎牛食べたかった。

 

チーム名の由来

#procon30でツイートされていたように、

「チーム名どうする?」

「移動距離一番長いだろw」

「釧路に負けてた」

という慎重な議論の結果、このチーム名に決定しました。

「盛大なフラグを建てた」というツイートも見ましたが、決して移動部門敗退ではないです。移動距離です。

来年の移動距離部門では、開催校である苫小牧高専を除くと最短となり、車で行けるほどの距離らしいです。移動部門敗退はまずないでしょう。

 

競技部門

去年は運よく決勝トーナメント出場することができました。では今年出場できていたらどうなっていたか。身をもって体感しているように、高専生という生き物は「進捗やばい!」と言いながらギリギリで成果を出します。我々もギリギリを攻めていたため、出場していたとしても勝ち進めてはいなかったでしょう。

今回僕が担当したのは探索部分なのですが、アルゴリズム弱者のためggったA*アルゴリズムをクソコードに書き換えました。

 

感想

自然災害には気を付けよう!

対戦ありがとうございました。

高専カンファin北海道からインターンへ行った話 インターン編

はじめに

このブログは以下の続きとなります。

shade4827.hatenablog.com 

そういえば↑でも自己紹介してませんでしたね。ANCT4Sのかげろんです。

花譜ちゃんとみずしーの沼にはまってます。よろしくお願いします。

twitter.com

twitter.com

 

8月19日より縁あって株式会社ラック様の5daysインターンシップに参加させていただきました。参加理由としては、セキュリティ分野を知ることで、今後その方面での考え方を知っていることがアドバンテージになるのではないか、と思ったからです。正直なところセキュリティ方面は強い興味を持っていませんでした。

株式会社ラック様については以下を参照してください。

www.lac.co.jp

 

インターン

皆さんご存じの通り、僕は17日に札幌で開催された高専カンファin北海道に参加したわけなのですが、インターンが19日からということもあり、18日に新千歳空港から羽田空港まで飛行機に乗りました。16日も祖父母宅に前泊していたので3日間移動しまくりです。引きこもり田舎者高専生としてはなかなかきついものを感じました。

特にダメージが大きかったのは祖父の車のドアを閉めるときに腰の右側にドアを勢いよくぶつけたことです。引きこもりも田舎者も関係ない?細かいことは気にしてはいけません。

 

なんだかんだ高専カンファも無事終わり、その後お友達ハウスに襲撃してお泊りさせてもらいました。泊まらせてもらった身としては本当に申し訳ないのですが締め切った部屋で爆熱睡眠は死にます。気を付けてください。

 

そしてついに東京、JALの飛行機に乗りました。機内で提供されるキウイジュースが好きなので飲んでください。Amazonで買えます。

電車の複雑さに駅で迷い、建物と人の多さにさらに迷ってようやく着いた目的地の赤坂見附。今回アパヴィラホテル赤坂見附を用意していただいたのですが、毎晩アパ社長(本)が見つめてきます。皆さんは呪われないように注意しましょう。

 

1日目

1日目はボードゲームをしました。ボードゲームと言ってもカ〇ンとかそういう感じのものではなく、『ベンチャー企業の経営陣となって会社を様々なセキュリティインシデントから守り、成長させる』ものでした。

自己紹介と会社概要の説明が終わって早々に20人弱を2卓8チームに分け、ゲームの説明が始まりました。インターンの参加者には高専生に限らず、大学生や修士1年の方までいて会社経営の考え方に多様性がありました。我々『YSM東日本』チーム(チーム名はそれぞれ自由に決定)は、セキュリティ対策を盤石にしようと様々な対策に広く浅く手を出した結果、大きな利益を得ることは少なく、卓内3位になりました。4位になると株主総会が発生するため、途中からは株主総会の準備をしていました。保守だけではなく思い切りが必要でしたね。

この日のまとめとして、基本的なセキュリティ対策の特徴と、インシデントの対策を学びました。

緊張しいなので朝にとんでもない腹痛を感じていましたが、深く心配するようなことはなく1日目を終えることができました。

 

f:id:shade4827:20190827150247j:plain

晩飯はカルボナーラ食べました。目の前で食べてたのがめちゃくちゃ辛そうでした。

 

2日目

2日目は、デジタルフォレンジックの演習をしました。セキュリティについては無知だったので、そもそもフォレンジックとは何ぞやというところからだったのですが、「電磁的記録の証拠保全及び調査・分析」とのことで。Autopsyというソフトウェアを用いて、4グループに分かれてフォレンジックをしました。

『封じ込め、根絶、復旧』を目的として、ディスク・イメージから攻撃者の手口を発見する、という演習を行ったのですが、Autopsyの使い方もままならず、協力しながら手探りでやっていたように思います。僕はたまたまプログラムがちょっと分かったのと、拡張子を知っているものがあり、高専生活でやってきたことがやっと発揮されたように思いました。

今回は演習ということで、チームを組んだ上、タイムラインや使われたソフトウェアの特定はされていたのですが、実際の現場では1人で黙々とやることのほうが多いと聞きました。知識がなかったこともありますが、攻撃者の心理を考えながら行わなければならない作業であるので、とても難しく感じました。

 

この日の夜は流れに乗って8人でラーメン屋に行きました。東京の狭い建物に8人は厳しいようで、空いていた店に入りました。どうやら毎日2回ラーメンを食べる猛者がいるようで、このラーメン屋も2回目だったらしいです。食べ過ぎでは。

 

3日目

この日はインシデントレスポンス訓練を行いました。3チームに分かれ、仮想組織の社員となって企業内のCSIRTとして、インシデントレスポンスにおけるディスカッションと情報収集をしました。組織概要とステークホルダ、ネットワーク図、システム構成を渡され、インシデントが発生するところから始まります。このインシデントに対して、講師から情報を引き出したり、その場での判断を議論して最終的に原因究明・事後対応をするところまでが課題です。

我々のチームは、終始全員が発言し、楽しく訓練ができました。ただ、明確な分担をしなかったため、原因究明に時間がかかり、他チームより進捗が出ていませんでした。結果としてはあまりよくないものでしたが、チームワークはとてもよかったと思います。

細かなシナリオについては、機密事項とのことで。気になる方は1dayインターンシップもやっていらっしゃるので、そちらにご参加ください。

 

4日目

JSOC(Japan Security Operation Center:セキュリティ監視・運用サービス拠点)の見学と、そこで行われているログ解析の体験をしました。この日からはチームに分かれず、周りの人と相談してもよいというスタンスだったのですが、分からない人のほうが多かったみたいです。そういう僕も全く分かりませんでした。脆弱性の種類などを全く知らず、勉強不足をひしひしと感じました。

シグネチャの作成も行ったのですが、記法についてよく分からず、例のままに書いていたように思います。contentが複数書けることや、HTTPレスポンスの種類も知りませんでした。知識不足のオンパレードです。

 

昼休憩のあと、JSOCの見学と屋上にあるという足湯を見に行きました。JSOCでは、狙われやすいパスワードの傾向や最近の攻撃などが可視化されて表示されるスペースがあり、手の空いたときにJSOCセキュリティアナリストの方々が作られているようです。

足湯は、屋上(24階?)にあり、皇居やスカイツリーまで見渡せる、何か支配欲が満たされるような空間でした。優越感っていうですかねあれ。本社ビルは他の企業も入っており、マンションのスペースもあるらしいです。めちゃくちゃ高級らしくとても入れません。

 

f:id:shade4827:20190827160053j:plain

屋上からの景色の一部。真ん中あたりの緑色のところは皇居です。

 

f:id:shade4827:20190827154346j:plain

おすすめらしい中華料理店で叉焼チャーハンを食べました。隣で食べてた麻婆豆腐はめちゃくちゃ辛そうでした。

 

5日目(最終日)

最終日には、RaspberryPiを使用したIoTプログラミングを行いました。今年の工学実験で初めて行ったIoTプログラミングの知識を使用することができ、つまづくことはありませんでしたが、RasberryPi自体が不調なようで、起動しない・途中で落ちる・コンパイルが非常に遅い、という問題が度々発生していました。

Node.jsを使用して、nanoエディタで書いたのですが、JavaScriptが初体験だったため、言語仕様に苦戦しました。});←許さん。

また、MQTTを使用して、人感センサーが反応するとスマホにメッセージが送られる、というものを作成しました。MQTTアプリの仕様が分からなかったことが一番の苦戦です。

 

最後に、IoTプログラミングの講師をしていただいた方々から就職や技術、インフラについてお話を聞く場となりました。僕はずっと技術の話を聞いていたのですが、よく知らなかったLispHaskellや、アジャイル開発について聞くことができました。

 

感想

インターンシップに参加する前までは、昨年度までの体験を聞いて、何等かの業務の一端を行うのかなと思っていたのですが、実際にはセキュリティに関する体験という意味合いが強く、想像とは違った面白い体験をすることができました。この5日間はとても短く感じ、とても濃密な体験となったように思います。ぼんやりとした将来設計をしていましたが、高専カンファと合わせて影響の大きな経験となりました。

自由な社風で、各個人が成長する意思を持っているとても良い会社だと思いました。セキュリティに興味のある方は是非、インターンシップに参加してみてください。

 

余談

オタクなので初めての秋葉原に行ってきました。

そうそう東京に来る機会はないので、何か買っていこうかと思って結局買ったのが同人誌なんですよね。これまた初めての経験でした。 

 あの世界は凄いですね。外人とオタクとメイドしかいない。開店前の行列とやたら混む地下のメロンブックスも見ました。田舎者としては異常ですあそこ。

 

秋葉原に行ったあと羽田から旭川まで帰りました。実家にいなかった期間は9日間ですね。とても疲れましたが、とても楽しかった時間でした。

 

こんなところで”高専カンファin北海道からインターンへ行った話”を終わろうかと思います。次回は8/31のFuraITか高専プロコンの報告になると思います。

furait.connpass.com

高専カンファin北海道からインターンへ行った話 高専カンファ編

はじめに

「ブログを書くまでが高専カンファだ」というお言葉があったので、インターンも終わったところで初めてブログを書いてみようと思います。

 

高専カンファ

参加経緯

げんし君あたりがなんか面白そうなことやってたので参加しました。

 

去年の冬頃からゆるい勉強会@旭川に参加していたので、より大きなカンファレンスにも参加してみたいと思ったことも大きな理由の1つだと思います。

 

asahikawa.connpass.com

 

移動

台風が接近しているということで心配していましたが、前日の夜に低気圧に変わったようで。当日にバスで旭川から札幌まで行ったのですが札幌めっちゃ晴れてましたね。

 

お友達の家に泊まる予定だったので午前10時前頃に札幌に到着。インターンの荷物を置いて会場へ向かうと着いたのは午前10時55分でした。

 

午前の分

・注意事項

司会のげんし君による「ツイートをしてください」の言葉通りツイートしてたんですけど途中でスマホのバッテリーが危うくなりました。最後の方はツイートしてなかったです。

 

・百合のベクトル

カブさんが百合のオタクなことは知っていましたがここまでとは思いませんでした。

僕もこういうぶっ飛んだ技術の使い方をしたいのですが如何せん発想力と視野が小さい。

point1)望月杏奈×七尾百合子は正解

 

・誰だってアイドルになれる 

エンジニアを志望していてもアイドルになれるらしいです。むしろ俺達がアイドルだ。

 

午後の分

・リスペクト=パクリ疑惑

まあそうとも言う。

言葉によって気持ちの違いがあるので表面をどうにかするのは大事だと思います。

 

・エンジニアに大事なこと

エンジニアに限ったことではないと思いますが、

・長文を考えて書くこと

・コミュニケーションをとること

・時間を守ること

これらは最低限身につけないとやってけないですよね。

 

・発見されやすい記録をつけろ

これはインターンでもしみじみ思ったのですがブログやFacebookは企業の方々も見ているようで、今までそういうものには触れてこなかったので今回書いてみています。

 

 

・Dockerすごそう(小並感

というかさたけ君が凄いんですよね。本当に2年生なのか。

前々からDockerの話は聞いてきましたが今回ついにやる気が出てきました。

 

・普通っていいな

大々的に活躍しているわけでなくとも充実した”普通”のエンジニアになれるのは凄いなと思いました。Twitterで見るようなブラック企業を経験した、とか極端な話をよく聞いたいたので、普通と言い張る普通じゃない人ってとてもいいと思います。

 

・ネットワーク構築

「強いネットワークを作ろう!」と言って無知の分野に突っ込んで完成させた猛者。 前々から思っていましたが話し方がとても好き。

「運営は計画的に」は部の運営をする身に刺さりました。反省してます。

 

WindowsはOthers 

僕はWindowsを使っているのでOthersです。

以前Chromebookをおすすめされたことがあるのですが、Dockerガチでやるならいいですね。欲しいものリストにいれておくので買ってください。

 

・総合職はやばい

総合職から逃げろ。

 
・勉強会は素晴らしい

勉強会運営というのはやったことがありませんが、地方で勉強会に参加して考え方が変わることはありました。実際に今回も影響を受けたように思います。

point2)tomio先生はプロ

 

懇親会

旭川高専3人、苫小牧高専3人、VOYAGE GROUPさんという7人の席でしゃぶしゃぶを食べました。

流行りの技術の話や学生のうちにやったほうがいいこと・大人でもできることなど、とても有意義なお話が聞けました。

 

感想

11時に開始してから16時に終了するまで、5時間の時間がとても短く感じました。

今までで一番規模の大きなカンファレンスに参加して、心境の変化があったように思います。

 

どうやら高専×企業(カップリングではない)のオンラインLT会を企画されているようなので、弊部員を引き連れて参加したいですね。

 

 

最後になりますが、高専カンファを企画していただいた運営の皆様、本当にありがとうございました。

 

インターン編へと続きます。