こんにちは、こんにゃく @konnyaku256 です。
はやいもので気がついたら大晦日になっていました。

今年の振り返り、みんな書いてるし便乗するか〜という感じでさくっと書いていきます。

Git駆動開発

Image for post
Image for post
2019年のcontributions

こんにちは、こんにゃく @konnyaku256 です。
この度、2019年12月7日に開催されたUnity Engine Challenge by mixi GROUP #1に参加してきました。
このイベントは今回が初開催で、Unity Engineに関連した技術的な問題が出題され、その得点を競い合いました。

Image for post
Image for post

競技のチュートリルで使用されたリポジトリは公開されているため誰でも見ることができます!

mixiが開催しているチャレンジ系技術イベントは他に

  • git challenge
  • TDD challenge
  • Bug Shooting challenge

があり、以前参加したgit challengeぶりとなりました。

イベントの内容

※出題された問題の詳細は書けないため、ふんわりと紹介します。

競技

まず、1時間ほどShaderに関するチュートリアルがありました。
ここでは、Unityの復習をしながら競技の雰囲気を掴みました。

ウォームアップが済んだところでお昼。

そして、いよいよ約3時間半の競技が始まりました。
2人1組で協力しつつ課題に挑戦しました。

チュートリアルページでも確認できる通り、今回は

  • AR
  • Multi(ネット通信)
  • Shader

のジャンルから出題されて、僕はMultiを担当しました。

WebGLで動く採点システムがあって、解答を入力することができるようになっていました。

体感難易度はAR < Shader << Multiのような感じでした。

解説

競技終了後、Shaderの問題の解説がありました。
注目すべきポイントや解くときの方針など技術的な知見がいっぱいでした。

セッション

解説後、mixiでのUnityを使用した事例紹介がありました。
今回出題された問題に関連した事例の紹介もありました。

結果発表

僕のチームは残念ながら優勝できませんでした。
ARとShaderの問題を解いてくれた相方に感謝!
得点は1位がタイでより速く解いたチームが優勝となりました。

懇親会

えもえもな食べ物を食べながら競技について振り返ったり、技術や会社の内状の話を聞いたりしました。
問題を作った社員さんに直接、作問意図や解法を聞くことができました。

感想

Unity歴はトータルで1年くらいでゲームの制作経験もありますが、単純にゲーム制作しているだけでは解けない問題が多く、今まであまり触れて来なかった部分(特にShader)の勉強になりました。

今回が初開催のイベントだったためどんな競技になるか予想できませんでしたが、解答はフラグを入力するという形式でCTFみがあって面白かったです。

個人的にはUnityのエラー解決やパフォーマンスチューニングを想定していたので次回以降は挑戦できたらいいなと思いました。

担当したMultiの問題はあと一歩のところまではいけたのですが、詰めが甘くて解答には至れず悔しい思いをしました。精進します。

それから、競技中は社員さんがぐるぐる周回していたため、困ったらすぐに助けを呼べてよかったです。

次にいつ開催されるかわかりませんが、興味のある方は参加を検討してみてはいかがでしょうか。
Unityに対する理解が深まるきっかけになると思います。

素晴らしいイベントを開催していただきありがとうございました。


2019年11月20日、21日の2日間にわたって開催されたLINE DEVELOPER DAY 2019に両日参加してきました。イベントの様子や印象に残ったセッションを簡単に紹介したいと思います。

参加するに当たってこちらの学生向け参加支援制度を利用させていただきました。🙏

会場の様子

エモエモな入り口がお出迎えしてくれました。
ロゴがスマホで出来てて色がヌルヌル変化していました。

Image for post
Image for post

受付は顔認証で済ませました。LINEが開発した顔認証の技術が使われていて列に並んだ瞬間に認証が完了する速さでした。

セッション、ショートトラック、ブース、ポスター、ハンズオンと豊富なコンテンツでいっぱいでした。

また、会場内にガチャスポットがあって記念品と交換できるようになっていました。ガチャデバイスにはBluetoothによるLINE Thingsが採用されていて、スマホをかざすとガチャが回るようになっていました。

さらに、お昼になるとお弁当が配られました。ふとっぱらですね。

1日目の夜は懇親会があり、そちらの料理も手が込んでいて懇親が捗りました。

聴講したセッション


この度、2019年10月26日に開催されたKOSENセキュリティコンテスト2019にチーム「バイナリ何キロバイト読める?」として参加してきました。今回が初めてのCTFでした。

コンテストの概要は公式サイトをご覧ください。

問題一覧

05 乗り越えろ binary 100は問題に不備があり、出題中止になりました。

Image for post
Image for post

解いた問題

06 無言のELF binary 100

a.out というファイルが与えられました。

ひとまずファイルの情報を確認してみました。

file ./a.out

Linuxの実行ファイルであることがわかりました。

次にファイル中に含まれる文字列を見てみました。

strings ./a.out

flag{%%…%}みたいな文字列とそれらしきキーワードが見つかりました。

試しに実行してみると

./a.out

何らかの入力を受け取ったあとflagを出力することがわかりました。

そこで、先程のキーワードらしき文字列を入力してみるとflagが出力されました。

20 偉くなりたい web 100

user名[user]、password[p@ssword]でフォームからログインできるけどadminユーザではない、という問題でした。

試しに上記のアカウントでpostしてみるとログインは成功しましたが、Is not admin userみたいに表示されました。

フォームのHTMLを見てみるとpostする部分に

<input type=“hidden” name=“admin” value=“is_not_admin”>

なにやら怪しげな要素が見つかりました。

これはもしやと思ってvalue=”is_admin”と書き換えた状態で上記のアカウントで再postしてみるとflagが出力されました。

解けなかった問題

05 乗り越えろ binary 100

最初に手をつけた問題でした。
a.out というファイルが与えられました。

file、strings、実行、逆アセンブルなどで解析してみたのですが、ヒントっぽいヒントが見つからず解ける気配がありませんでした。
他のチームも全く解けていなかったので、途中で諦めました。

後で質問があり、この問題は出題中止になりました。
いきなりはずれを引いてしまっていたようです。

10 ツートントン misc 100

最後に挑戦し、コンテスト終了まで粘っていた問題です。
モールス信号に関する問題で白黒ドットの怪しげな.pngファイルが与えられました。

白黒ドットが並んでたのでこれがモールス信号に対応しているのではと考えて変換するスクリプトを書きました。

しかし、区切りがどうなっているのかわからずflag特定には至れませんでした。

最終結果

他メンバーの頑張りもあり、最終13位でした。
特に終了2分前の200点問題正解には興奮せずにはいられませんでした。


2019年9月14日、15日の2日間で開催されたAkatsuki GAME JAM 2019に参加してきたのでその参加レポートを書きます。

Akatsuki GAME JAMはAkatsukiが開催しているUnityゲーム開発のハッカソンです。今年で5回目の開催となるそうです。

「カラフル」というテーマに沿って22人7チームがその成果を競い合いました。

イベント全体の振り返りは公式ブログの開催レポートに譲ります。
また、当日の様子は#aktsk_game_jamのハッシュタグで呟かれています。

この投稿では主に自分のチームが作ったものの紹介をしたいと思います。

つくったもの

「Akatsukiの中心でパンツを叫ぶ」という女の子が履いているパンツの色を叫んで当てるゲームを3人で制作しました。

制作物のGitHubリポジトリを公開しているので興味があれば覗いてみてください。但し、有料アセットを使っている関係で3Dモデルやモーションデータは含まれておらず実行形式での配布はしていません。

かなり尖ったネタですが、弊チームとしてはたいへん真剣な気持ちで作りました。(InitializePants()とかいうメソッドがあるのは秘密です)
公式ブログのほうでは諸事情で禁則事項となってしまったようなのでここで供養します。

コンセプト

「カラフル」というテーマから我々はいろとりどりのパンツを連想しました。そこで、パンツの色を叫ぶことで羞恥心とそれに打ち勝ったときの達成感を感じられるようなゲームを目指しました。

ゲームの仕様

8色の候補からこれだと思うものを順に叫んでいくだけです。
何回で当てられたか、叫び声の大きさがスコアに反映されます。
パンツ!と叫ぶとヒントが得られるようなギミックも仕組まれています。
正解するとごほうびシーンが見れます。

主な実装内容

  • ゲームマネージャ、ゲームロジック、シーン遷移、UI
  • 8色のパンツテクスチャ
  • 3Dモデル・モーションを使ったアニメーションスクリプト
  • IBM WatsonのSpeech To Text API(Unity SDK)を使って音声認識
  • Unity Microphoneで音量を取得

私は音声認識と音量取得の部分を担当しました。

手応え・評価

ネタ出しや成果発表では奇抜なアイデアだと思ってもらえたようでした。一応ゲームとして完成させられたのも良かったです。
ただ、試遊時のハードルが高くなかなか体験してもらえなかったのが残念なポイントでした。
ユーザ体験を意識したゲームコンセプトではありましたが、対象とするユーザや導入時の障壁をもっと考慮できればよかったなと思いました。
音声認識も叫びや周囲のノイズによって認識精度が奮わなくなってしまったので、誤認識への対策が求められました。そもそも音声認識は不要で音量だけでいいのでは?といった議論もありました。
また、UI/UXのクオリティアップに手を回せず、完成度を高めきれなかったのも悔しいポイントでした。
それと、当初からVR対応を検討していて、ユーザが取り得る行動の拡張が期待できていたのですが、実装には至れませんでした。
審査員の方々からもその点の指摘がありました。

他のチーム

  • Skeleton Board 優勝
    ラン系のカジュアルゲーム
    背景色がころころ変わることで穴が見えなくなる
    スマホでもプレイできる
  • るつぼロケット 準優勝
    宇宙人をロケットで移住させるゲーム
    宇宙人の色ごとにバランスよく移住させる必要がある
    スマホゲーム

2019年8月19日〜8月30日に開催されたCookpad Summer Internship 2019 10 Day Techに参加してきたのでその参加レポートを書きます。

Cookpadは「毎日の料理を楽しみにする」をミッションに掲げレシピサービスを開発・運営している企業です。

前半5日はCookpadでのサービス開発と実際に使われている技術に関する講義&ハンズオン、後半5日はOJTコース(実務)とPBLコース(デザイナーと2人ペアでサービス開発)に分かれる、というものでした。

公式の開発者ブログでもレポート、資料などが公開されています。

参加したきっかけ

以前の投稿で書いています。

前半

記憶と勉強メモを頼りに印象的だったことを振り返ってみます。

Day 1 Git/GitHub, Ruby, TypeScript

Rubyを書くのは初めてでしたが、わかりやすい講義でした。
Webア …


こんにちは、@konnyaku256です。

夏のITエンジニア系インターンシップの選考が全て終わったのでその結果を共有します。全て国内、東京開催のものに応募しました。
選考を受け始めたのが4月中旬なので、4ヶ月程度選考戦に臨んでいたことになります。学業や個人活動の片手間に挑戦しました。

選考前の活動、選考の対策、応募先の選定、選考の記録など私が今回経験したありとあらゆることをできるだけオープンに書いていきたいと思います。

この投稿が地方高専生、ITエンジニア系インターンを狙う大学生など誰かの参考になれば幸いです。

結果

ひとまず選考結果の一覧を列挙します。
応募するか迷ったけれど結局しなかったものは除外してあります。
5月末にあったpixivの梅雨インターンも一覧に含めました。夏インターンは受けていません。

結構欲張って受けてみました。
とりあえず受けてみるの精神でチャレンジしました。
こうして見返すとほとんど受かってないですね。
合格率は3/15で20%でした。
一時、自分はダメなんじゃないかと挫けそうになりましたが最後まで諦めずに頑張りました …


2019年5月18日に開催されたgit challenge #11に参加してきたのでその参加レポートを書きます。

Image for post
Image for post

「git challenge」とは、gitリポジトリに設けられた難題をチームワークで解決していく競技型技術イベントです。

第11回目となる今回は12チーム24人(1チーム2人でチーム分けは当日発表)が参加となっていました。
交通費は新幹線利用額の約半額が支給されました。

また、git challengeは競技の公平性を保つために問題が非公開で2回目の参加ができないことになっています。
そのため、本参加レポートでは問題内容について書けないことをご了承ください。

参加するまで

TwitterのTLに開催情報が流れてきて知りました。
いつか参加したいと思っていたイベントだったので、この度挑戦してみることにしました。

書類による選考があったのですが、落選してしまいました。😭

git challenge落選して完全敗北したこんにゃく君UC

ところが、GW明けに担当者の方から連絡があり、欠員補充という形で参加させていただくことになりました。😊
お話によると、私はギリギリ落選してしまっていたようでした。

流れ変わったな

予習

以下2つにざっと目を通して予習しておきました。

いつやるの?Git入門

イベント当日

新幹線などを使って会場であるmixi本社へ向かいました。

起床チャレンジ、成功しました。

午前中

社員さんによるGitにまつわるLTが2つ、競技のチュートリアルがありました。

ランチタイム

お弁当を食べながら参加者、チューターの社員さんたちと交流しました。
紐を引っ張ると温まるタイプの豪華なお弁当でした。


2019年4月30日に開催された平成最後のハッカソンに参加してきたのでその参加レポートを書きます。準備期間があり、事前にお題とチームが発表されるタイプのハッカソンでした。

Image for post
Image for post

参加理由

積極的に行動していくぞ!というスタンスで日々鍛錬しているわけですが、ずっと地方にいると狭い世界を見てしまいがちになります。定期的な対外活動は最新のトレンドに敏感であるための良い刺激になります。
そこで、今回のハッカソンに注目しました。
平成最後という記念日に目的を持ってことを成すことでその経験はしっかり記憶に残り、その後の大きな財産になると思いました。また、全国から優秀な方々が集まることになるため、交流を通じて視野を広げ、技術力を高め合うことが期待できました。
そのうえ交通費、宿泊費全額支給と来たらもう参加するほかありません。

準備期間

ハッカソン専用のSlackワークスペースが作られ、連絡事項の確認などが行われました。また、チームごとにprivateチャンネルが作られ、そこで当日までの準備をすることになりました。

お題は「平成生まれの私たちが、平成を楽しく振り返ることができるサービス/モノ」でした。
2〜4人のチームが25(うちCyber Agentの社員㌠が2つ)という規模でした。

応募時にチームを組んで参加することもできましたが、私の場合は知り合いとチームを組んで応募しなかったので個人が集合するタイプのチーム構成となりました。そのため、リモートでのアイデア出し、開発などを行っていく必要がありました。MTGは都合の合う時間を示し合わせる必要があり、進行に苦労しました。学校の友人とチームを組んでいると、その点は有利だったかもしれません。

3日間くらいでアイデア出しは終わりましたが、その後の開発は進捗がほとんどなく当日を迎えることになってしまいました。

イベント当日

前回のKubernetesハンズオンでお邪魔していたのでAbema Towersへ行くのは2回目でした。

最初に簡単な会社説明、アイスブレイクなどがあり、そこからは成果発表までひたすら開発するという流れでした。

準備期間でしっかり開発が進んでいるチームはこの時点でほとんど仕上がっており、クオリティアップに注力できているようでした。

残念ながら私たちのチームはこれから開発!という流れだったので、成果発表までの約5時間で開発することになりました。

作ったもの(作りたかったもの)

平成クイズBot
平成にまつわるクイズを作成、回答できるLINE Botを通して気軽に平成を振り返られるようにすることを目指しました。
Botにメッセージを送信することでクイズを作成することができ、同様にして作成したクイズに回答することができるようにしました。
LINE Messaging APIを用いてLINE Botを作成し、FirebaseのCloud Functionsで動かし、データベースはCloud Firestoreを使用しました。

実際にはクイズの作成と回答機能を統合できておらず、全くの未完成で発表することになってしまいました。
また、アイデア出しでは位置情報を送信することでその場所に関連するクイズを作成・回答できるようにしたいという意見があったのですが、実装には至れませんでした。

成果発表では他のチームの成果物を聞くことができ、実際に触ってみる時間も用意されていて、アイデアのこだわりや技術的に工夫したことについて熱い話をすることができました。
完成度が高いチームが多く、準備期間も含めてしっかり取り組んでいたことがよくわかりました。

発表、お触りが終わってから、それぞれがよかったと思う上位3チームに投票し優勝を決めました。
優勝したチームのみなさんはおめでとうございます!

懇親会ではお洒落な食堂に移動し、美味しい料理(🍣など)とsakeを頂きながら技術の話で盛り上がりました。いろんなバックグラウンドを持っている人がいて広く交流できました。

また、記念品として平成クリアファイルとCyber Agentインターンシップ修了証書(これはハッカソンなのでは?)を頂きました。

感想

平成最後という記念日にハッカソンをして、互いに切磋琢磨できてよかったです。たいへんよい思い出になりました。
ただ、せっかく準備期間があったのでもう少し開発が進んだ状態で当日に望めたらよかったなぁと思いました。アイデアを形にしきれなかったのはかなり悔しく、心残りがあります。今回の失敗は準備期間での準備不足なので次に参加するハッカソンでは対策したいです。また、リモートでも効率よく開発を進めるための知見を得られたのはよかったです。

他のチームはそれぞれアイデアがしっかり固まっていて、それを正しく形にできている、という印象を受けました。
完成度が高いチームが多く、それぞれがもつバックグラウンドをうまく利用できていていいなと思いました。

楽しいハッカソンを開催してくださりありがとうございました!


2019年2月中旬〜3月末までteamLab Inc.でエンジニアアルバイトしてきたのでそのレポートを書きます。最近流行りの退社エントリーです。

teamLabと聞くとよくメディアで取り上げられているデジタルアートのイメージが強いかもしれませんが、事業内容は他にもスマホアプリ、Webサイトの制作など多岐に渡ります。事業形態は受託開発をメインにやっています。いわゆるWeb系ベンチャーと言えると思います。

きっかけ

今から2年くらい前のこの時期、2016年12月〜2017年3月ごろにteamLabのオンラインスキルアップというエンジニア向けのオンラインイベントに参加していました。

おそらく最新の開催情報は下記(2019年3月30日閲覧)

そのときはPHPコースとNode.jsコースの2つがあって、僕はPHPコースに参加していました。
課題がいくつかあって、最終課題では0からWebアプリケーションを1つ作りました。
その名の通りめちゃくちゃスキルアップできたイベントだったので、今でも参加してよかったなと思っています。

月日は流れ早2年、一旦進学することに専念していたため2018年の夏の終わり頃まで技術的なアウトプットがほとんどない状態が続いていてムズムズしていました。受験が終わってからはその「積極的に活動したい!」という思いが爆発し、次の長期休みである春休みの間にエンジニアアルバイトすることにしました。
そこで「実際にエンジニアとして働いてみたい!」という目的のもと、以前のイベントで知って気になっていたteamLabに行ってみることにしました。

それからは人事の方といろいろやりとり、面接などを通して無事採用されました。
開発経験がある、ということでサーバサイドエンジニアとして働くことになりました。

準備

地方勢のため、期間中は滞在先が必要だったのですが、オフィス移転などの影響で利用を想定していた社宅が用意できないという連絡をいただきました。
流石に実費は厳しいので交渉したところ、かなり特殊ですがとある社員さんのお家に居候することになりました。
それなんてエロゲ?
居候するのは僕のほうなので、今回は僕がヒロインですね。

そんなこんなでなんとか滞在先を確保しました。

やる気満々なご様子

やったこと

サーバサイドエンジニア編

2月中旬〜2月末(約2週間)
会社やイベントのWebサイトは自社で開発しているCMSを使って管理・運用されているそうです。OSSを使わない理由はWebサイトのデザインなどにかなりこだわりを持っていて、その部分を柔軟に改修できるようにしたいからだそうです。なるほど。
このチームに配属され、CMSの開発、サイトの改修などを担当しました。

実務経験がなかったので最初は開発フローを理解するのに手間取りましたが、メンターさんにサポートしていただきながら、なんとかお仕事をこなすことができました。プロジェクト管理とか、コードレビューとか、個人開発では体験し難い内容が多くて勉強になりました。
コードは主にPHP、JavaScript、HTML、CSS(正確にはそれらに対応する高水準言語)で書いて、既存のコードをリファクタリングしながら新規機能の実装、バグ修正、テストなどのサイクルをひたすら回していきました。

当初の目的通り、「実際にエンジニアとして働いてみたい!」を実現できてよかったです。

クライアントサイドエンジニア編

3月初め〜3月末(約1か月)
上記のサーバサイドエンジニア編が月末のリリーステストまで無事終了して一区切りついたのですが、せっかくあと1か月あるのだからもっといろいろ経験できたらいいね!というメンターさんのご厚意でチームを異動することになりました。

そこで、ちょうど新しく始まるCODEVSのプロジェクトに参加することになりました。

CODEVSは参加こそしたことがないものの、以前から知っていて、そのプロジェクトの復活の第一歩に関わることができてたいへん光栄でした。
チームの構成は少数精鋭、といった感じで、僕とほぼ同じ時期にインターンシップに来ている方が先に参加されていて、そこに加わる形となりました。
過去に開催したCODEVSも今回のように学生が多く関わって作ってきたという背景があるらしくて歴史、伝統を感じました。
過去コンテストをベースにクライアントアプリケーションの既存コードのリファクタリングをしつつ、ルール改定と合わせて実装を進めていきました。
また、ルール改定ではゲーム開発において重要な「面白い?」ということを考える機会があり、貴重な経験ができました。チームで集まって議論するのがとても楽しかったです。
コードは素のJavaで書かれていて、オブジェクト指向プログラミングをがっつりやったことがなかった身としてはかなりきつかったのですが、いい経験ができました。テストコードを書くという経験もかなりプラスになりました。
前回のお仕事とはかなり毛色が違って、社内でもかなり特殊な案件だったのではないかと感じていて、その分求められるスキルレベルも高かったと思います。直すべきバグや次にやるべきことは自分で見つけていく必要があり、主体的に行動する能力、問題解決能力がとても求められました。その部分での成長を特に感じています。

それと、社員の方々、インターンシップ生の方ともに優秀でめちゃくちゃ勉強になりました。コードデザインなど、どうすればスマートな設計になるのかとそこに至るまでの思考が非常に参考になりました。
正直貢献度はチーム全体の1割いってればいいほうだと思いますが、刺激的な環境、内容で開発経験ができてよかったです。

また、先日体験版という形でリリースにも立ち会うことができて、この上ない達成感を感じることができました。

東京での生活編

全期間(約1か月半)
東京に着くまでは生きていけるか不安しかなかったのですが、着いてからは何故か気持ちが楽になって結果的になんとかなりました。

滞在先はシェアハウス(リビング、キッチン、お風呂などが共有、自室あり)となっており、家主の社員さんの他にもアルバイトの方がいてそれなりに賑やかでした。
賑やかとはいってもほとんど交流はなく、シャイな僕にとってはちょうどいい距離感の生活環境でした。
ただ、会社まで電車で片道30分はかかるのでもう少し近ければさらに嬉しかったかもしれません。

個人的には自炊をけっこう頑張りました。
特にやる気で満ち溢れていた最初の1週間は毎日夕飯を作ってもの思いにふけっていました。

じゃがありご、なんかも作ってみたり。

じゃがありごを作ってみたの図

それと、もうひとつあった目的である「積極的に活動したい!」を達成するべく、土日も極力なんらかのイベントに参加するようにしました。
スケジュール的には休みがなくて、自分で自分の首を絞めているような感じはあったのですが、おかげで有意義に過ごすことができました。

konnyaku256

I love technology.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store