TwoGate主催の高専生限定ハッカソン「TwoGate Dev Camp 2023 Summer」を徹底レポート!

2023年8月23〜29日、現役高専生・高専卒学生限定ハッカソン「TwoGate Dev Camp 2023 Summer」を開催しました!

今年はイベント日程を5日に増やし、前半3日間はオンライン、後半2日間はオフラインでの開催です。
現役高専生・高専卒学生たちが熱く盛り上がったイベント内容を徹底的にレポートしていきます。

「TwoGate Dev Camp 2023 Summer」について 

TwoGate Dev Campとは、現役高専生・高専卒学生たちが現役エンジニアからのサポートを受けて課題に取り組む、インターン型ハッカソンです。

devcamp.twogate.com


今回のテーマは「地元の魅力を発信するLINEミニアプリ開発」

今年の参加者は20名、前回の参加者12名を大きく超える人数です。1人もしくは2人でチームを組み、全11チームがそれぞれの技術力を発揮しました。

イベント後半には、参加者全員で「最も魅力を感じた」アプリへの投票を行い、最優秀賞を決定します。

最優秀賞のチームには、1人1台、AirPodsApple Watchのプレゼントも用意しました。 

スケジュール

以下のようなスケジュールで実施しました。

【Day1】 2023.8.23(オンライン期間1日目)

09:30  キックオフ
10:30  アイデア出し
14:00  メンターミーティング
15:00  アイデア出し
17:30  メンターミーティング
18:30  雑談会

【Day2】 2023.8.24(オンライン期間2日目)

09:30  朝の会
10:00  開発
17:30  メンターミーティング

【Day3】 2023.8.25(オンライン期間3日目)

09:30  朝の会
10:00  開発
14:00  メンターミーティング
15:00  開発・プレゼン準備
17:30  メンターミーティング
18:30  雑談会

【Day4】 2023.8.28(オフライン期間1日目)

12:00  オフラインキックオフ
13:00  プレゼン準備
16:00  成果物発表会
17:30  参加者同士のデモタイム
19:30  参加者投票&夕食

【Day5】 2023.8.29(オフライン期間2日目)

10:00  結果発表会
10:30  閉会式
11:00  懇親会
13:00  解散

 

イベント前半のオンライン期間は、各自集中して開発に取り組みました。コミュニケーションが取れないことで作業に煮詰まってしまうことが無いよう、毎日1,2回のミーティングを行ったり、1日のおわりに雑談会の時間を設けたりとスケジュールを工夫しています。

また、後半のオフライン期間では懇親会など交流する時間に重点を置くことで、開発と交流、どちらにも全力を注げるイベントとなりました。

全11チームを紹介!

去年よりも参加人数・チーム数が大きく増え、全11チームとなりました。
参加者のうち3名は、去年に続いて2度目の参加という嬉しい報告も。
また、約半数が3年生以下の学生で、先輩たちとの交流は良い経験になったのではないかと思います。

ここからは各チームのメンバーと、開発アプリについてご紹介します。
さて、どのチームが優勝するのか・・・予想しながらご覧ください! 

Aチーム

 茨城高専5年生2人のチームです。メンバーの井上くんは去年もDevCampに参加してくれていました。イベント期間以外に観光地に人がこない!というリアルな課題を解決する「笠間稲荷観光アカウント」の開発に取り組みます。

Cチーム

九州工業大学3年生2人のチームです。開発アプリは「WILD MAP」。地元の生き物を記録・発信することで、自分の地元をさらに知ることができるアプリを目指します。

Dチーム

国際高専1年生1人と、神山まるごと高専1年生2人、計3人のチームです。本イベントでは最年少のチームとなりました。徳島の郷土料理のレシピや歴史などの認知度を高め、食育に繋げる「たべとく」というアプリを開発します。

Eチーム

福井高専5年生2人のチームです。ChatGPTを利用しAIとディベートすることで福井の魅力に気付いてもらう「それって福井のお宝ですよね?」の開発に取り組みます。

Fチーム

東京高専4年生1人のチームです。相模原市内のフードトラックへのアクセスを簡単にする「相模原キッチンカーサーチ」の開発を目指します。

Gチーム

沖縄高専3年生2人のチームです。開発アプリは「とらべるぎのざ」。イベントスケジュールや地元の生産物をお知らせすることで、“道の駅ぎのざ”を盛り上げるアプリを開発します。

Hチーム

香川高専3年生2人のチームです。「いっぺん来ぃまいうどん県」という、うどんスタンプラリーや観光地・お土産検索で香川を盛り上げるアプリの開発を目指します。

Iチーム

北九州高専2年生と4年生、2人のチームです。4年生の倉掛くんは去年に続いて2度目の参加です。ChatGPTを活用し博多弁を勉強できる「HakataMaster」の開発に取り組みます。
 

Jチーム

北九州高専3年生と5年生、2人のチームです。5年生の中嶋くんは去年も参加してくれました。ゲームブック形式で北九州の街を巡る「キタキュークエスト」を開発します。

Kチーム

豊田高専4年生1人のチームです。「Gohey-san」という、五平餅の店舗を検索したり、歴史を学んだりすることができるアプリの開発に取り組みます。
 

Lチーム 

長野高専5年生1人のチームです。松本市の城下町をスタンプラリーで巡るLINEミニアプリの開発を目指します。

各賞を受賞したチームを発表!!

3つの賞を用意!

 今年は、こちらの3つの賞を用意しました。

最優秀賞

参加者の相互投票で決定します。
受賞者にはAirPodsとApple Watchを1人1台ずつプレゼント


TwoGate賞

TwoGate社員の評価によって決定します。
特典はAWS費用1年間サポートと社員による定期的なメンタリングです!

 

参加賞

参加した全員に5000円分の技術書をプレゼントします!

最優秀賞はどのチームの手に・・・!?

最優秀賞を受賞したJチームの2人

全11チームの中から最優秀賞に選ばれたのは…
Jチームでした!おめでとうございます!

 

 【プロダクトの概要】

LineBotで遊べるゲーム「キタキュークエスト」を開発しました。北九州市にある28か所の駅をチェックポイントにして、市内を冒険するゲームです。スタート駅から、次に行く駅や観光スポット、自分の行動などをいくつかの選択肢から選ぶことができ、どの選択肢を選ぶかで次のエピソードが変わってきます。限られた開発期間の中でも、200個のエピソードを用意しました。
また、各駅の説明が書かれた「駅図鑑」でそれぞれの駅の情報を見ることもできます。

 

【評価理由】

ストーリー性のあるゲームで観光地をめぐるというアイデアが良いと思いました。
実装は難しかったのではないかと思いますが、しっかりと作り込まれたストーリーで面白かったです。
紹介しているのは地元の人が魅力を感じる施設だけ、というのも地元愛が強く、実際に北九州に行ってこのゲームで遊んでみたいと感じました。

 

【受賞者のコメント】

「最優秀賞をいただけるとは思っておらず、びっくりしています。
北九州の魅力を伝えるために考えたアプリですが、開発のために北九州のことをたくさん調べた結果、自分たちの町についても知ることができて良かったです。
イベントはオンラインとオフラインの併用で、多くの人と交流できて視野が広がりました。ありがとうございました。」

 

「どのチームも地元愛に溢れたアプリでしたが、その中でも最優秀賞をいただけたのは嬉しいです。チームメイトと一緒にプロダクトを開発できたことも、とても嬉しく思います。ありがとうございました。
現役高専生・高専卒学生だけのハッカソンは初めてでしたが、参加者の皆さんと出会えてよかったです。」

 

社員が選ぶTwoGate賞は・・・!?

TwoGate賞を受賞したHチームの2人

そして、もう一つ、社員が選ぶTwoGate賞を受賞したのは…
Hチームでした!おめでとうございます!

 

【プロダクトの概要】

LINEで香川のうどん店舗を検索できる機能「いっぺん来ぃまいうどん県」を開発しました。エリアごとに検索ができ、口コミ評価の高い順に店舗情報を表示します。Googleマップのリンクから店舗へのアクセス確認もスムーズです。

また、「うどんスタンプラリー」として、訪れたうどん店舗の位置情報を送信することでWebページ上でスタンプを獲得することができる機能も搭載。

うどん店舗だけでなく、観光地検索やお土産検索も可能です。

 

【評価理由】

香川の魅力である“うどん”にフォーカスしたコンセプトでありつつ、観光地検索やお土産検索の機能も備えることで、観光プラットフォームとしての価値を提供できていました。今回のテーマに沿った良いアイデアだったと思います。

スタンプラリー機能を提供することで、1店舗行ったら終わりではなく、2回3回と香川に行きたくなるような仕組みも、よく考えられていました。

 

【受賞者のコメント】

「初めてのハッカソンへの参加でプレゼンは緊張しましたが、みなさんが温かく見守ってくれたおかげで賞をいただくことができました。技術力はまだまだだと思っているので、TwoGate賞の特典を最大限に活用して、来年、最優秀賞を取れるくらいの実力をつけて戻ってきたいです。」


「今回のハッカソンで自分の技術力が足りていないところがよく分かったので、AWSや技術書で、頑張って勉強します。みなさんの開発したアプリの中にも、僕の知らない技術が色々とあったので、その技術も勉強したいです。そして来年は4年生になるので、インターンとして来ることができたら良いなと思っています。」




実際に参加してみてどうでしたか?

参加者の皆さん(左から原くん・中澤さん・野崎くん)
Cチーム 原くん(九州工業大学3年生)

今までは作りたいものを作っていましたが、今回はアプリのターゲット層を絞るなどビジネス的な考え方を学ぶことができ、自分の成長に繋がりました。」 

Dチーム 中澤さん(国際高専1年生)

 「このイベントでプログラムやアプリの分野に初めて踏み込んでみました。難しかったですが、みなさんの発表がかっこよくて、私もこれからも頑張って、またこの場に来たいと思いました。」

Kチーム 野崎くん(豊田高専4年生)

「与えられた課題を期間内に完成させることや、自分が作ったものをいかに多くの人に伝えるかなど、開発以上に大事なことを教えてもらいました。参加者との交流も、新たな知見を得るいい機会になりました。」

 

株式会社TwoGateには高専出身のエンジニアが勢揃い

現役高専生・高専卒学生限定ハッカソンTwoGate Dev Camp 2023 Summerを開催した株式会社TwoGateは、社員の大多数が高専出身者で構成されるWebアプリ開発企業です。

ノーコード・ローコードプラットフォームによる高品質・低コスト・短期間でアプリを提供できる高い技術力と、柔軟な発想力に自信を持っております。

ミッションとして掲げる「心地よいデジタル体験の創出と普及」を達成すべく、「つくる力」で勝負し続けるチーム作りを実践中です。

また、Shopifyを利用したECサイト構築支援サービスを始め、物販事前予約機能やガチャ機能などを搭載したイベント会場用カスタマイズアプリ、100社以上の導入実績がある公式アプリ構築サービスなど様々な領域において実績があります。

特にShopifyの構築支援サービスにおいては、Shopify Plusの開発に注力し、実績を重ねてきた点を評価いただき、Shopify Partner of the Year 2022 - Best Agency of the Year を受賞しました。
 

【主な事例】

​​さらに詳しい事例が知りたい場合は、下記リンクより公式HPをご覧ください。

twogate.com

 

ただいま株式会社TwoGateでは、中途採用・新卒採用・インターン採用など採用を拡大しております。

採用にご興味のあるかたはお気軽に公式HPよりご連絡ください。

 

最後に

 


今年はオンラインとオフラインを組み合わせた形でのイベント開催でしたが、皆さんの協力のもと、無事に終了することができました。ありがとうございました。

昨年に比べて参加人数が大きく増えたものの、参加した全員が真剣に開発に取り組み、アプリを完成させることができました。本当に良かったです。

また、1年生や2年生などの若い学生の参加もあり、今後も継続して開催することでリピート参加してもらえるようなイベントにしていきたいと強く感じました。

来年ももちろん、企画しようと考えていますので、みなさん是非ご参加ください!

TwoGate主催の高専生限定ハッカソン「TwoGate Dev Camp 2022 Summer」を徹底レポート!

2022年9月3・4・5日に現役高専生・高専卒学生限定ハッカソン「TwoGate Dev Camp 2022 Summer」を都内で開催しました! 新型コロナウイルスの影響もあり、今まではオフラインでの開催でしたが、2年ぶりのオフラインでの開催です。 現役高専生・高専卒学生たちの白熱したイベント内容を徹底的にレポートしていきます。

「TwoGate Dev Camp 2022 Summer」とは?

2022.09.03-05 TwoGate Dev Camp 2022 Summer

現役高専生・高専卒学生たちと現役エンジニアがチームを組んでおこなう高専生&高専出身学生限定のハッカソンです。 現役のエンジニアからのアドバイスをもらいながら短期集中で開発します。

今回のテーマは「アフターコロナのオフラインをアップデートするwebアプリ」です。

学生3人1チーム+現役エンジニアのメンターのチームを作り、それぞれ自分たちが持つ技術を発揮し、オリジナリティあふれるwebアプリを作りました。

  • アイディアの独創性
  • 技術的な優位性
  • 有用性
  • 完成度

上記4つのポイントで競い合い、チームで優勝を目指します。 最終日には表彰を行い、優秀チームには1人1台iPadを贈呈しました。

キックオフの話を聞く参加者

スケジュール

スケジュールは以下のように実施しました。

【Day1】 2022.9.3

13:00  キックオフ
13:30  開発
19:00  1日目終了

午後1時、ハッカソンがスタートし、キックオフが執り行われました。 全員の自己紹介にはじまり、ハッカソンの詳細を説明します。 その後、早速チームでの開発に取り掛かりました。

【Day2】 2022.9.4

09:00  開発
19:00  2日目終了

2日目は丸一日、開発に時間を使います。 各チームが昨日出したアイデアに沿って開発を行い、試行錯誤をしながら各々取り組んでいました。 各チームにメンターがついており、技術的なサポートをしながらアドバイスをします。 短期間でのハッカソンのため、疑問点や不明な点はすぐにメンターが対応して解決できるところが安心です。

【Day3】 2022.9.5

09:00  開発
09:30  成果物発表
11:30  表彰、講評、懇親会
14:00  終了

最終日となり、成果物発表に向けて最終調整を行います。 午前9時30分から発表会があり、各チームの熱い想いが込められたプレゼンテーションが繰り広げられました。 すべての発表が終わり、ついに最優秀賞が決まります。 表彰式が終わり、講評と懇親会後に終了となりました。

各チームの開発プロダクトを紹介!

今回のハッカソンでも、各チームさまざまなアイディアや意見が飛び交っていました。 ここからは各チームの開発プロダクトをご紹介いたします!

Aチーム「れぽまっぷ」

れぽまっぷの資料

アフターコロナで屋外のイベントが数多く中止となる中、2022年初頭よりグルメフェスは徐々に開催へと足を踏み出しています。 そのような現状の中、グルメフェスへの期待度や来場者数の増加予測などに即し、水際で行われていたコロナ対策にもwebアプリやIoTの技術を用いたwith コロナへのアップデートが求められているのが明白です。

Aチームのれぽまっぷは、上記の現状で来場者数をコロナ前まで戻し、グルメフェスを盛り上げることを目的とし、混雑状況の緩和と来場者同士の意見交換の場を作成するために作られました。

作戦会議中のAチーム

【見どころ】

  • 位置情報取得による、レビュー位置、アクセス数の可視化
  • リアルタイムレビューによる情報交換

【運営者・出店者・参加者の三方良しサービス】

  • 運営者はフェスの火薬単価向上による収益増加
  • 出店者は客足の向上とレビューによるフィードバック
  • 参加者は混雑緩和・感想共有による満足度の向上

れほまっぷでは、「混雑具合の可視化ができない」、「出店物の良し悪しがわからない」という問題に対し、混雑状況の可視化による客の時間分散、客同士のレビューによる満足度向上を促します。

Bチーム「Nebuta Live」

Nebuta Liveの資料

Bチームは若者向けに、全国のねぶた祭り当日をもっと楽しくするアプリを開発しました。 ねぶたとは、明かりを灯した巨大な灯籠(=ねぶた)を山車に乗せて練り歩く大変華やかなお祭りです。 大きいものだと1週間で100万人もの人が訪れます。 そんなねぶた祭りでの悩みのあれこれを解消し、今までにない楽しみ方を提供します。

作戦会議中のBチーム

【見どころ】

  • 「ねぶた祭り」というイベントに目をつけた点
  • 明確な課題を持っていて、かつその解決方法があまり見えていない領域に対して、「Nebuta Live」という新しい解決法を提供シンプルかつ十分な機能
  • ねぶた祭りのもつ課題を丁寧に抽出しそれぞれに合った機能を考え、無駄のないシンプルで使いやすいプロダクト

【ねぶた祭りが今まで抱えていた悩みをまとめて解決】

  • ねぶたをリアルタイムでマップ上に表示して探せるようにする
  • ねぶたの経路をマップ上に表示する
  • ねぶたの面白知識をアプリ上に表示する

ねぶたの経路や現在地が分からず、混雑、土地勘がないと「推しねぶたを見つけられない」、「推しねぶたの進み方が分からない」という問題がでてきます。 さらに、ネット上にくわしいねぶたの知識がないと若者が置いてきぼりに...。 「Nebuta Live」は、ねぶた祭りが今まで抱えていた悩みをまとめて解決するためのプロダクトです。

Cチーム「HackCard」

HackCardの資料

オフラインハッカソンに対して感じる課題点として「この人がどのプロダクトを作った人かが覚えられない!」というものがあります。 ハッカソン終了後の交流会などの際に「どのプロダクトの人ですか...」と質問するのは失礼な気がしますよね。 どのプロダクトのメンバーかがわかっていれば、質問や技術トークでもっともっと盛り上がれるかもしれません。 そこでCチームは、作ったプロダクトと自己紹介をセットにした簡単な名刺アプリを作成しました。

開発中のCチーム

【見どころ】

  • 開発で忙しい参加者のため名刺作成にかかる時間を極力減らすため、名刺作成時に必要な入力欄を極力減らした
  • 読み込み待ち時間をカットし、SPAで作成することで遷移も素早くなるよう、『ホーム画面、ログイン画面、名刺作成・一覧ページ』と、なるべくページ数を抑えた
  • ハッカソン参加者が知りたい情報として、普通の名刺アプリにないエンジニアのニーズに特化した項目を表示できるように考えた

【オフラインハッカソンでの交流をより楽しくする】

  • 入力フォームから名前やリポジトリのURLを入力して名刺を作成
  • 参加者同士のスマホで名刺に出てくるQRコードを読み取ることで名刺交換を行 う
  • スマホ上に表示される相手の名刺を話題の一つにしながら交流を楽しむ!!!
  • 相手の名刺をリストに保存しておくことでいつでも見返せるようにする

Cチームが開発したのは、オフラインハッカソンでの学生交流をより楽しくする名刺交換アプリです。 作成したプロダクトと開発者の情報をセットにした名刺を簡単に作成することができ、ハッカソン後の交流会等での話題を提供します。 交換した名刺をリストとして記録することでハッカソン後の交友にも役立ちます。

Dチーム「Ai² Gacha」

Ai² Gacha

Dチームは、野外ライブイベント向けにランダム封入型のグッズの購入をデジタルチケット化しました。 デジタルチケットを運営から実物に取り替えてもらうことができます。

作戦会議中のDチーム

【見どころ】

  • 深層学習モデルのBERTをAPIに組み込んでいる

【ファンが欲しいアイテムを手に入れやすいためのもの】

  • オンライン決済機能・デジタルチケット購入・実物引き換え・AIマッチング・デジタルチケット交換機能を実装

Dチームは、野外イベント向けデジタルチケット型グッズ購入アプリを開発しました。 デジタルチケットの購入段階でどのアイテムを引けたかわかるので、購入する際に 何度も並ばなくて済むところが嬉しいポイントです。 デジタルチケットを使用前なら、ユーザ間トレードも実装しており、ユーザのグッズに対する愛でマッチングする設計にしているため、よりファンに向いた設計となりました。

最優秀賞はいったいどのチームに…!?

授賞式で肩を組むBチーム

最優秀賞はBチームです!

Bチームは初日からアイデアの考え直しからはじまり、大変だったそうです。 そして、「どうやって作ったのか」という過程よりも、「なぜ作ったのか」という部分を重きに置いて開発したおかげで、アプリを理解・共感してもらえたのがポイントだと感じました。

また、アイディアは良かった反面、開発面での技術不足を顕著に感じてしまうきっかけにもなったそうです。 「今回の経験を活かして今後も頑張っていきたい」と話していました。

Bチームには賞品として、全員に1人1台iPadが贈られます。 最優秀賞おめでとうございます!

実際に参加してみた感想は?

Aチーム 道上くん

「高専生向けのイベントを開催ということで参加しやすく、学内の縦横だけでなく学外とつながれるためよかったです。また、人材育成に力を入れているようで、とても良い会社だなと思いました。」

Bチーム 倉掛くん

「この3日間はとても平和に開発することができ、大変学びのあるものとなりました。イベント自体も企画からプログラミングまで色々と学べ、素晴らしい会社だと思いました。」

Cチーム 黒岩くん

「チュートリアルレベルの技術力でしたが、イベントを通してさまざまなライブラリやフレームワークを知ることができました。くわえて、メンターの方の調べ方を見ることで、より効率の良い調べ方を知ることができて勉強になります。メンターの皆さん、特に柄澤さん本当にありがとうございました!」

Dチーム 糸川くん

「to CというよりBand B to Cみたいな感じの会社で顧客への理解や製品への想いなどがアツい会社だなぁと感じました。」

株式会社TwoGateには高専出身のエンジニアが勢揃い

現役高専生・高専卒学生限定ハッカソン「TwoGate Dev Camp 2022 Summer」を開催した株式会社TwoGateは、社員の大多数が高専出身者で構成されるWebアプリ開発企業です。

高専由来の高い技術力と柔軟な発想力でノーコード・ローコードプラットフォームを自社開発し、高品質・短期間でのアプリ提供を実現しました。 ミッションとして掲げる「心地よいデジタル体験の創出と普及」を達成すべく、「つくる力」で勝負し続けるチーム作りを実践中です。

また、TwoGateはShopify Expertsとして、顧客に合わせたECサイトの構築サービスを行なっております。 そのほかにも、物販事前予約機能やガチャ機能などを搭載したイベント会場用カスタマイズアプリ、100社以上の導入実績がある公式アプリ構築サービスなど様々な領域において実績があります。

【主な事例】

Shopify 構築支援・保守サポート

Caravan イベントアプリ構築支援サービス

CRAYON オリジナルアプリ開発支援サービス

HOUSE GATE - プロダクト

​​さらに詳しい事例が知りたい場合は、下記リンクより公式HPをご覧ください。

TwoGate 株式会社トゥーゲート

ただいま株式会社TwoGateでは、中途採用・新卒採用・インターン採用など採用を拡大しております。 採用にご興味のあるかたはお気軽に公式HPよりご連絡ください。

最後に

集合写真

今回で3回目となる「TwoGate DevCamp2022 Summer」でしたが、ようやく念願のオフラインでの開催となり、何事もなく無事終了することができました。 始終和気あいあいとした雰囲気の中、楽しくそして熱く、開発プロダクトについて語り合う姿が微笑ましく、同時に未来を担う若者たちを頼もしく感じた次第です。

また、顔を合わせて行う物作りを通じて、学生の皆さんの溢れんばかりのパワーを感じました。 そのパワーでコロナに負けず、さらに成長することを期待しています。

今後もハッカソンを企画しようと考えておりますので、学生の皆さんはぜひ、参加してみてください!

Benchmarking SSH connection: What is the fastest cipher algorithm for RPi?

Hi, this is flownspores who is working at TwoGate inc. This article is my first one! And this is the first of my english blog article in my life. If you find any weird grammar mistakes or misspells, feel free to comment below.

Making the fastest SSH connection

I set up my raspberry pi 3's sshd then I just wondered about performance. Raspberry pi 3 has a tiny ARM cpu with no AES acceleration. Recent Intel or AMD's cpus have AES-NI which can accelerate AES encryption and decryption.

Without AES acceleration, which cipher algorithm is the fastest? That's my question.

I also want to test key exchange algorithms and MAC algorithms. Key exchange algorithm is used to establish of ssh connection (and during rekeying). Public-key cryptography is a secure way to communicate, but it is too slow to use every transfer. So that symmetric-key algorithms are used during data transfer. Public-key encryption is only used to encrypt symmetric-key. Key exchange algorithm is the way to exchange symmetric-key in a secure way. I am not a specialist in this domain, so you may read more details about ssh encryption on the Internet.

Testing ssh algorithms

There are several items in SSH configuration that can be changed, and I compared the algorithms for each. Key exchange algorithms (Kex), Algorithms of Message authentication code (MAC), Cipher algorithms.

KexAlgorithm

SSH's KexAlgorithm is a key exchange algorithm. You can see algorithms which can be used in your ssh connection.

$ ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org
sntrup4591761x25519-sha512@tinyssh.org

  Diffie-hellman (DH) key exchange is common in the past but newer algorithms like ECDH or curve25519 have appeared.

So the kex algorithm is used only in establishing the connection*1, I just write the code which simply connects the server and executes : then quickly disconnects. : is a command which does nothing.

ssh -v  -o "ControlMaster=no" -o "ControlPath=none" -o "Compression=no" -o "KexAlgorithms=..." host :

As you can see, I wrote some additional options: "ControlMaster/Path=no" and "Compression=no". ControlMaster/ControlPath option is to multiplex ssh connections which holds persistent connections to the server. At this time, this feature bothers my testing so it should be turned off. Compression is also unnecessary feature during test*2.

I've tested each KexAlgorithms per 5 times. Then I calculated the median value of each algorithm. The graph is shown below.

  • Testing environment
    • Client: Mac mini 2018 Core i7-8700B equipped with 10Gb Ethernet
      • macOS Catalina, OpenSSH_8.1p1, LibreSSL 2.7.3
    • Server: Raspberry Pi 3B+ with Heat sink
      • Debian 10 (Raspberry Pi OS)
    • Network: 1GbE
      f:id:flownspores:20200730053131p:plain
      SSH KeyExchange Algorithm Performance Comparison

As you can see from the graph, the fastest key exchange algorithm is ecdh-sha2-nistp256. The slowest is diffie-hellman-group-exchange-sha256. Curve25519-* appears to be doing well. SHA1 is considered to be obsolete, so you may not use diffie-hellman-group14-sha1.

I will use curve25519-sha256 which is a great balance of speed and security.

MACs

MAC stands for message authentication code, which is like a hash function. (This is a very rough explanation. You may read some informative information on the Internet.)

You can get MAC algorithms to type ssh -Q mac that can be used in your ssh command.

$ ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha1-96-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-md5-etm@openssh.com
hmac-md5-96-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com

MAC is used only for non-AEAD encryption like aes256-ctr, aes256-cbc. AEAD encryption like aes256-gcm already has an MAC-ish authentication algorithm itself, so I use encryption of aes256-gcm at this time.

Sending large file to Raspberry pi

The test is transferring a 100MiB file by scp. Measuring time of sending client to server (/dev/null). Yes I know that scp is outdated today, but sftp is complex to use from programs. Rsync can't write out to /dev/null. that's why i use scp.

  • Tesing environment
    • hardware configuration is same as before.
    • using aes256-ctr as cipher

f:id:flownspores:20200730060011p:plain
SSH MAC Algorithm Performance Comparison (Client to RPi)

The fastest algorithm is umac-64@openssh.com and umac-128-etm@openssh.com. The slowest is hmac-sha2-512.

ETM means encrypt-then-mac, which is considered stronger than non-ETM (like MAC-then-Encrypt). You should use *-etm over non-ETM.

Note that MAC option is not effective if you use AEAD encryption (like AES-GCM). AES-GCM is preferred over non-GCM for security reasons.

Receiving large file from Raspberry pi

f:id:flownspores:20200730065341p:plain
SSH MAC Algorithm Performance Comparison (RPi to Client)

The fastest is umac-64@openssh.com and umac-64-etm@openssh.com. umac-128-etm@openssh.com and umac-128@openssh.com is also fast enough.

umac-*s are the best choice for both sending and receiving.

Ciphers

Finally I have tested cipher algorithms. RC4 (arcfour) is considered the fastest algorithm on non-AES accelerated CPUs. But RC4 is considered a weak algorithm today. It is not usable algorithms in my OpenSSH:

$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com

I use these algorithms for testing at this time.

  • Tesing environment
    • hardware configuration is same as before.
    • for non-AEAD cipher, umac-128-etm@openssh.com as MAC
    • 100MiB transfer, same as before

Can't wait to see the results? Let's see.

Sending large file to Raspberry pi

f:id:flownspores:20200730062432p:plain
SSH Cipher Algorithm Performance Comparison (Client to RPi)
Surprisingly, the newest algorithm chacha20-poly1305@openssh.com is the slowest 😭. The fastest is aes128-ctr. Why? When I transferring large file from Mac mini, mini's AES-NI hardware acceleration is used for encryption. So this test is not informative for raspberry pi's performance index.

Receiving large file from Raspberry pi

So I've also tested reverse transmission. Client to RPi. But the results are not much different.

f:id:flownspores:20200730070551p:plain
SSH Cipher Algorithm Performance Comparison (RPi to Client)

The fastest is aes128-ctr. *-ctrs are the fastest in this test. The transfer rate may be capped by the bandwidth of the Raspberry Pi's SD card.

Despite these results, I would still use *-gcm for security reason.

Conclusion

If you want to harden security with small amount of speed sacrifice:

  • curve25519-sha256 as KexAlgorithms
  • aes*-gcm@openssh.com as Ciphers

If you want the fastest connection (not so bad for security), use:

  • ecdh-sha2-nistp256 as KexAlgorithms
  • umac-*-etm@openssh.com as Macs
  • aes128-ctr as Ciphers

Benchmarking script

I've tested the performance of ssh in various algorithms by this script. This is an automated script that connects host with many different ssh configurations. Then this script writes CSV files. Each test is executed only one time, so you may need to run the test repeatedly to get accurate results. If you run this script for remote server over the Internet, results may not be accurate. So you might be better using it for local network.

*1:Strictly speaking, KeyExchange is also occurs during rekey.

*2:Mac/cipher test shown below is transferring large random data. Generally speaking, random data has high entropy which can't be compressed.

TwoGate主催の高専生限定ハッカソン「TwoGate DevCamp 2020 Spring」を開催しました!

 

5月2~4日の3日間、ハッカソン「TwoGate DevCamp 2020 Spring」を開催しました!

今日はこのハッカソンをレポートしていきます。

 

 

 

TwoGate DevCamp 2020 Springとは?

f:id:TwoGate-tech:20200703134906p:plain

株式会社TwoGateが開催する、”高専生限定”の3日間の集中ハッカソンインターンです。当初は都内で開催する予定でしたが、新型コロナウイルスの影響で、オンラインでの開催となりました。

 

株式会社TwoGateとは?

f:id:TwoGate-tech:20200703135157p:plain

株式会社TwoGateは、社員のほとんどが高専出身のエンジニアで構成されており、高い技術力、開発力、チーム力が売りの会社です。アプリやシステム開発を強みとして、ビジネスを成功させるために、作って終わりにしない、突き抜けるまで作り続けるがモットーの、エンジニアカンパニーです。

 

現在、フルリモートでの学生インターン生も募集しているので、気になった方はこちらからどうぞ!

twogate.com

 

スケジュール

スケジュールは以下のように実施しました。

5/1 0日目

前夜祭

ハッカソン開始の前日、自由参加で前夜祭を開催しました!

内容は、TwoGateの会社概要や技術の説明会を行いました。

 

5/2 1日目

開会式

午前10時、ハッカソンがスタートし、開会式が執り行われました。

開会式では全員の自己紹介や、ハッカソンの詳細説明がありました。

f:id:TwoGate-tech:20200703151024p:plain

開会式が終わるとすぐに、チームでの開発に取り掛かります。

 

5/3 2日目

2日目は丸一日、開発に時間を使います。

各チームが昨日出したアイデアに沿って、開発を行います。

各チームにメンターがついているので、技術的なサポートは完璧です。短期間でのハッカソンなので、わからないことがあれば、すぐにメンターが対応して解決に導きます。

 

5/4 最終日

早くも最終日です。午後2時から最終発表会があり、ここで最優秀賞が決まります。

各チームが開発したサービスは以下の通りです。

 

各チームの開発プロダクト

Aチーム「Daily Game」

コロナの影響で生活リズムが崩壊していて、元のリズムになんとしてでも戻したい人を対象にした、タスクが完了しないと罰ゲームが執行されてしまうサービスです。

ToDoにタスクを設定し、そのタスクが完了すればなんともないのですが、タスクを完了できなかった場合、Twitterの表示名が「自分の言ったことすら守れないカス」に勝手に変更されてしまい、さらにツイートまでされてしまうといった罰が与えられます。

f:id:TwoGate-tech:20200703151117p:plain

 

Bチーム「あつまれ!小説の森」

ユーザーが自由にテーマを投稿でき、そのテーマに沿ってリレー小説を書くことができるサービスです。ユーザーは、「誰が」「どこで」「何をした」というテーマを投稿できます。また、小説を書くときには、他のユーザーが投稿したテーマがランダムで選ばれて、それにそって小説を書くことができます。しかし、その小説は一人で完成するものではなく、リレー形式で、他のユーザーが続きを書くことができます。

f:id:TwoGate-tech:20200703151200p:plain

f:id:TwoGate-tech:20200703151212p:plain

 

Cチーム「WAST」

WASTはWork(ワーク)Advice(アドバイス)Share(共有)Task(タスク)の頭文字を取った言葉です。

自粛生活が続く中で、「宿題でわからないところがあるのに聞けない」「みんなの課題の進捗具合がわからない」といった問題が発生している現状があります。

WASTは、クラスや部活動といった複数人で構成されるチームの中で、タスクや仕事を共有できるサービスです。

他のメンバーの進捗具合がわかる「タイムライン機能」と、提出物等のタスクを把握できる「タスク一覧機能」の二つで構成されています。

f:id:TwoGate-tech:20200703151510p:plain

f:id:TwoGate-tech:20200703151544p:plain

f:id:TwoGate-tech:20200703151558p:plain

 

Dチーム「New Album」

思い出の写真を、相手と共有・編集できるサービスです。

コロナ自粛の影響で、人とのつながりが薄くなってしまう懸念があります。そこで共有の思い出写真を見ることで、「Weトーク」ができるようになります。

f:id:TwoGate-tech:20200703151717p:plain

f:id:TwoGate-tech:20200703151741p:plain

f:id:TwoGate-tech:20200703151757p:plain

f:id:TwoGate-tech:20200703151809p:plain

 

Eチーム「スキトーク

自粛生活が続き、さみしくなってしまっている人や、スキを共有できる人が周りにいない人を対象にした、オンライントークルームを作成したり参加できるサービスです。

ユーザーは、話したいことをテーマにルームを作成したり、興味のあるルームに参加することで、そのテーマについて話すことができます。

f:id:TwoGate-tech:20200703151858p:plain

f:id:TwoGate-tech:20200703151912p:plain

f:id:TwoGate-tech:20200703151926p:plain

最優秀賞は、Bチームの「集まれ!小説の森」でした。最優秀賞には賞品として、全員にiPhone11が贈られました。また参加者全員に参加賞として、希望の技術書を一冊プレゼントしました。

 

優勝チームインタビューは高専マガジンの記事で公開されておりますので、こちらをご確認ください!

どのチームも面白いアイデアで、たった3日の開発で作ったとは思えないものばかりでした。

kosen-magazine.com

 

参加者の声

福島高専 新妻さん

メンターがついてくれていたので、技術面をサポートしていただけてよかったです。最初僕たちのチームのアイデアが良くなかったのですが、メンターの方に指摘していただいたおかげで、いい方向に進んだなと思います。

あと、これまでは個人開発がメインだったこともあり、ランダムでチームを組んで開発するような経験はありませんでした。なので今回は、共同開発のやり方とかを教えてもらうことができて、いい経験になりました。

 

苫小牧高専 水野さん

このハッカソンでは、discordでやり取りをすることになっていました。discordでは、誰がオンライン状態で活動しているのかとかがわかりやすくて、オンラインでも他のチームの動きが少し感じられるようになっているので、よく考えられているなと感じました。

これまでハッカソンに参加したことは無かったのですが、本当に参加してよかったと感じました。

 

宇部高専 村上さん

メンターがすごい。技術的なサポートをしっかりしてくれました。でもさらに、チームメンバーがすごい。どんどん加速して開発していけました。

オンラインでも意外とスムーズに開発できるんだなと感じました。でもやっぱり、オフラインのハッカソンに参加したいですね。(笑)

 

熊本高専 川上さん

メンターが一人ついてるのは珍しいですよね。社員さんも高専卒の人だから、気軽に話せました。実際の開発を想定しながら相談に乗っていただけたので、勉強になりました。

あとオンラインで開催という点においても、ありがたいですね。地元から出ていくとなると移動時間もかなりかかってしまうので。オフラインの方が良い点もあるとは思いますが、こういうオンラインでの開発も良いなと感じました。

 

長野高専出身 村田さん

僕たちのチームは、TwoGateインターン生で構成されているチームなので、ハンデとしてメンターがついていません。そこがきついですね。(笑)

オンラインで開発する経験はインターンで経験しているので、他のチームよりはなれていると思います。ですが、オフラインということもあって、他のチームの様子が見にくいので、ちょっと怖い部分もあります。

 

最後に

時期的な問題もあり、オンラインでの開催となってしまった今回の「TwoGate DevCamp 2020 Spring」ですが、無事に終了することができました。

今後もハッカソンを企画しようと考えておりますので、学生の皆さんはぜひ、参加してみてください!

 

 

高専マガジンさんにも、3日間の様子を中心にしたレポートを公開いただいています。

こちらも併せてご覧ください。

https://kosen-magazine.com/twogate-devcamp-2020-spring-report/ 

 

TwoGateでは、高専生向けの長期インターンを随時募集しています!

エントリーをお待ちしています。

https://twogate.com/

 

執筆協力:高専マガジン