にわとりになる日まで

たまごな大学生のブログ

Gocon 2019 Spring に参加してきた話

どうも、うじまるです

4 / 18にあったGocon 2019 Spring にメルカリのスカラシップ枠で参加してきたのでそのことをまとめたいと思います。

gocon.connpass.com

スカラシップに応募した経緯

締切の数日前にメールでお知らせが来たので、せっかくだし応募だけしておこうという結構軽いノリで応募した。 そしたら、受かった。正直、受かると思ってなかったのでびっくりだった。

Gocon前日

前日にメルペイの社員の方とランチということで前日から東京に行っていた。 「ランチ始まる1時間前にGoogleの社員の人たちも一緒にランチすることになったよ!」っと連絡が来て新幹線で震えていた(Goチームの方が3名居て、Keynoteで発表したKatie Hockmanさんやセッション発表していたMichael Matloobさん、Julie Qiuさんでした)

Go2のGenericsの話などGo言語のことをメインで話した(英語が駄目なので雰囲気でした理解できなかった)

Gocon当日

ためになったセッション

Keynote

github.com

Go Proxyのことについてのお話でした。 正直、この日にGo Proxyのことを知った + 英語で1割くらいしか理解できなかったと思います。(英語能力を高めたい・・・)

Case studies of designing developer friendly libraries

developer friendlyなライブラリについてのお話。

  • 郷に入っては郷に従う というようにGoの慣習に従った設計にする。
  • 拡張性を保つため差し替え可能な設計にする。
    • Functional Optionを初めてしった

この2つはどのライブラリ設計にも共通するなーっと思った。

エラー設計について/Designing Errors

docs.google.com

エラー設計の話。

エラーコードを自分たちで定義してそこをハンドリングするようにする、という部分がなるほどと思った。 実際、どの言語でやってもここは大切だと思うので普段の開発でもやっていこうと思った。

Design considerations for container-based Go applications

speakerdeck.com

コンテナベースのアプリケーション設計の話。

2つのガイドラインに沿って

  • Configuration
  • Logging
  • Monitoring

の設計をどうするかや実装の説明もしていて分かりやすかった。

Fuzzy finder as a Go library

speakerdeck.com

Fuzzy finderのLibraryを作ったという話。

以前、CLIを作ったときに使ったライブラリだったのでアルゴリズムの話を聞いてみたい! っと思い聞きました(それが5割で5割くらいは大学の先輩だったので) 自分でも実際実装して見ようと思いました!

懇親会

美味しかったです!!

最後に

Goを初めてまだ半年ほどでしたがとても勉強になるカンファレンスでした! これからGoの勉強をやっていこうというモチベーションに繋がりました!!

最後にスカラシップで参加させていただいたメルカリさん、運営をしていた方々、スポンサーの方々、本当にありがとうございました!!

平成最後にハッカソンに出た話

どうも、うじまるです。 同じ大学で同じハッカソンに出た人たちが次々とブログを書いているので焦って書き始めてます。

内容

サイバーエージェントさん主催の「平成最後のハッカソン」というハッカソンに参加してきました。 開催期間は4 / 19 ~ 4 / 30 と準備期間に約1週間ある余裕のあるハッカソンでした(余裕があると思ってた)

詳しくはこちらから

www.cyberagent.co.jp

参加に至るまで

2月のサポーターズのイベントでちょこっと話は聞いていて、ふんわり出たいなーくらいに思っていてギリギリ忘れそうな頃にTwitterで告知があり、 id:tjmschk と出るぞーって言って同じ研究室の先輩の id:mt_coff さんに声をかけて参加するかーっとふんわりした感じで参加決定しました。

お題発表

4/19 にお題が発表され 「平成生まれの私たちが、平成を楽しく振り返ることができるサービス/モノ」 ということで各自いろいろアイディアを考えてから、翌週月曜日あたりにオンラインで何を作るかを話し合いました。

で、決まったのが

黒歴史を投稿・共有できるサービス

っということに決まり、僕はFirebaseのあたりをいろいろやる人になりました(なんちゃってサーバーサイド)

制作期間

弊チームのメンバー全員がフロントエンドやるマンだったので二人にUI部分を任せて「FirebaseだしAPIとか作るのとか余裕だからゆっくりやるかー」っと呑気にしていました。

そんな中、悲劇
Firebaseできたーって思ってPR出してフロントの進捗見ようとしたらリモートにブランチがない

どうやらできてなさそう

っということでUIの感じはできていたので徹夜で突貫工事をしました。

このあと、チームの人達がいろいろ実装してくれました 🙇‍♂️

当日

4 / 31 の時点で結構な部分ができていてあとはTwitterでの共有の部分だけだなーっとか思っていて、その部分を実装してました。

完成してからはひたすら黒歴史を晒す作業をしてました。

結果

完成したもののリポジトリはこちらです

github.com

実際に動いているものはこちら

ca-dark-history.firebaseapp.com

結果としては賞を取ることはできませんでしたが、他のグループのクオリティの高い作品を見れて「すげー」ってなってました。

懇親会

お寿司とかお肉とかたくさんたべれてしあわせでした
他校の同年代のエンジニアとあまり交流がなかったので近くの席の人といろんな話をできて楽しかったです。(Elmをやってる人がいなかったのが残念だった)

まとめ

  • 進捗確認は頻繁にやろう
  • 発表をするときはきちんと喋ることを決めよう

っと思いました。

久々のハッカソンでとっても楽しかったです。今回主催・準備をしてくれたサイバーエージェントの方々、チームのメンバー、他の参加者の皆さんありがとうございました!

最後に

夏休みにインターンに参加したいです!!

twitter.com

github.com

B2の春休み

どうも、うじまるです。
もうすぐ4月になり新年度になりますね。
春になるのに会津はまだ寒いです。つらい

ブログも更新していなかったのでB2の春休みのことをまとめてみます。いわゆるポエム

やったこと

  • リクルート Webフロントスピードハッカソン
  • サポーターズ 1on1面談イベント
  • 帰省 & 法事
  • WebHack#21 x Indeed: Elm at large & Data Analytics
  • ディズニーシーに行った

春休み前

春休みに入る前に春休みはどっかにインターンに行って 出稼ぎ & 圧倒的成長だ!! と思ってインターンの応募とかしてみた

応募した企業

落ちた企業

全落ちである。夏休みに続いて2度目 ✌
Pixiv, リクルートは面接に行く前の段階で落ちたので実力不足
サイバーエージェントは面接で落ちたので実力不足
面接が苦手すぎる。誰かやり方教えてください。

one dayのハッカソンに受かったのは嬉しかった。
後輩が落ちたインターンに参加したのでしんどかった(実力不足)

リクルート Webフロントスピードハッカソン

はとバスに進められて応募、無事合格して参加することに。
参加者に同じ大学の先輩が二人いてびっくりした。

結果としては最下位だったけどいろいろ学ぶことができたので良かった。
パフォーマンス・チューニングとかやったこと無かったけど気をつけようって思った。

お昼のお寿司が美味しかった

サポーターズ 1on1面談イベント

2月にサポーターズでやってた企業の話を聞く会みたいなのに参加したときに「出ませんか〜」って誘ってくれたので参加した。

の人事&エンジニアの方と1対1で面談する会、いわゆる逆求人イベントです。
周りがすごい大学(語彙力)とか有名企業にインターンに行ってる人たちばかりで一緒に参加してるのがしんどかった。

このときはなぜかサイバーエージェントと面談がなかったけどたくさんの企業とお話できたのでいい機会だった。
自分が今まで作って来たものとかを見せて結構いい反応だったので嬉しかった。
今の所悩んでる

  • WebエンジニアとUnity(xR)エンジニアのどちらで就活をしていくか
  • どのような基準で就活してるのか

を相談できたので良かった。

まだ、インターンの日程が特に決まってないらしく決まったら教えますーって言われた。
会社見学に来てくださいーっと言われた所もあったので行きたい(地方学生はシュッと東京に行けない)

4 / 14にあるやつにも参加するのでもっといい感じに話したいです。

帰省 & 法事

父と祖母の法事があったので実家に帰省した。
父の3回忌だったらしく「もうそんなに経つのかー」っと思った。意外とすぐ時間は立ってしまうね。

帰省して地元の友人と徹夜でしりとりをするという謎の会をやって楽しかった。
実家は自動飯デプロイなのでめちゃくちゃ楽、最高。

WebHack#21 x Indeed: Elm at large & Data Analytics

実家から会津に変えるついでに参加。
Indeedでやっていて会が全部英語だった(聞き取れないところとかあった)
アイスブレイクで当たってしまい、英語力の無さで中学生みたいな英語で自己紹介した(しんどい)

内容は、FPとElmについてと楽天がElmを使ってどんな感じか(たぶん)とData Analyticsについて(集中力が死んでた)でした。
とっても勉強になりました。英語勉強します。

ディズニーシーに行った

いきました。
久々のディズニーで楽しかったです。
トイストーリーマニアめっちゃ面白かった。ゲーセンにおいてほしい
タワーオブテラーに殺されました。死にました。

楽しかったのでまた行きたいです。

まとめ

なんだかんだで週1で東京行ってた気がする。土日に行ってるときが多くて人多くてしんどかった。
ここに書いてないときはアルバイトしたり、趣味でプログラミングしたり、VRChatしてました。

インターンには行けなかったけどそこそこ充実した春休みだったと思います(思いたい)

B3の夏休みはインターンたくさん行くぞー おー
(まじで面接が苦手すぎるのでどうにかしたい、コツをしえてください)

余談

そういえばブログタイトルが「にわとりになる日まで」なのにTwitterのアイコンがにわとりになっちゃいましたね

Hyper.shがいい感じだった話

hyper.sh はサービス停止してしまったみたいです。。。

この記事は Aizu Advent Calendar 2018 の14日目の投稿です。 13日目はtranscode001さんでした。

どうも、うじまるです

半年前からサーバサイドにも興味が出てきてelixir(挫折した)やらgolang(いい感じ!)をやってます。
今までゲームやフロントエンドしかやってなかったので公開するときはgithub.ioでどうにかなってたのですがサーバサイドそうも行かないです。
そこで、いろいろホスティング先を調べててたどりついたhyper.shのことを書きたいと思います。

https://hyper.shhyper.sh

hyper.shとは?

公式サイトには「Hyper = Serverless Container with Docker UX」と書かれてます。
Dockerの使い勝手のままでサーバレスコンテナを扱えるサービスです。

使い方は簡単でdocker run hogehogeをhyper.sh側で実行させたかったらhyper run hogehogeとするだけでできます。もちろんdocker-composeも扱うことができ複数のコンテナを起動させて連携させることもできます。

なんでhyper.sh

AWSGCPを使ってみたいを思ったのですが、それを扱う勉強をしなければならず中々手が出ませんでした。 またDockerを使いたいと個人的に思っていたのでDockerを使えるホスティングサービスを探しました。 まとめると

  • 手早く扱うことができる
  • Dockerをつかえる

という条件にあっていたのがhyper.shでした。

使い方

まじでdockerとほとんど同じなので説明はいらないような気がします。 強いて言うならばhyper pullはDockerHubに上げてないとできないので一旦docker imageにしたものをDockerHubに上げなければいけません。なので、hyper composeyamlファイルにはbuildが使えずfromしか使えません。

cronも設定できるので定期的にプログラムを実行したい!っと言ったこともできます!!

お値段

流石に無料ではないですが、コンテナ単位での値段ではなくコンテナの起動時間で1秒ごとに料金が発生する仕組みで必要なときに起動させて、要らなくなったら気軽にできます。 コンテナのサイズはS1からL3まであり、一番小さいコンテナだと1ヶ月約$1という値段で扱うことができます。

コンテナ以外にかかる値段で大きいところは以下のとおりです。

  • ストレージ10GBで月$1
  • パブリックIP1つに付き$1

他にもちょこちょこ取られるみたいです。

感想

個人的には結構いいなと思いました! ちょっと使った感じだと、APIサーバ用のコンテナ + DB用のコンテナ + DBのボリューム10GB + パブリックIP で大体$4くらいでした。 herokuなど無料でホスティングできるサービスもありますが、一定時間でsleepになってしまうなど限界があるのでサクッとWebサービスを作ってみたいけどsleepにされたくない!っといった場合は使ってみてはどうでしょうか!?

さらに、1ヶ月間は無料で扱えるのでぜひ触って見てください! https://console.hyper.sh/register/invite/eArOD9doyjTKwBAj40m8ipmRDnBnejcr このURLから登録したら$10もらえるみたいです(僕ももらえるので登録してください)

自作キーボードつくった!

どうも、うじまるです

今回は自作キーボードを作ったのでそれのことを書こうかと思います。
(別にアドベントカレンダー前でブログ更新しとこう的なsomethingじゃないです(じゃなくないです))

作ったもの

作ったものはこちら(デデドン)

Helixというキーボードキットで作りました。

yushakobo.jp

このキーボードキットの特徴というと

というところです。

作った経緯

Twitterで先輩が作っているのを見たり、自作キーボードのツイートを見て前々から作りたいと思っていたのですが
ハンダ付けがしんどそう
これがあって中々手が出ませんでした

が、斯く斯く然々で作るに至りました。

「斯く斯く然々」の部分

意外と作れそうと思った

ハンダ付けが中学生のときに授業でちょっとやったくらいなので出来るか心配 & ダイオードとかちっこいやつ付けるのしんどそうっと思ってたのです。 が、ググってみると「失敗してる人もいるけど意外と行けそう・・・!?」とか思ってしまい、キットをポチる一歩手前に来ました。

発送時期がピッタリだった

Helixキットは中々人気で最初に作ろうと思ったときは予約段階でまだ発送がされてませんでした。
しかし、ポチる一歩手前(11月下旬)のときには「11月下旬発送予定」って書いてあるじゃぁないですか。

ポチりました。

作ってしんどかったところ

作る過程は写真を取らなかったのでありません・・・申し訳ないです
しんどかったポイントは

  • ダイオードつけるのがしんどい
  • キースイッチでブリッジするのがしんどい

この2つです。

ダイオードつけるのしんどい

ちっこくてしんどいです。根気よく64個つけましょう。

キースイッチでブリッジするのがしんどい

ブリッジするとそのキーが使えなくなるので慎重にやりましょう。しくじったらハンダ吸い取り線で吸い取ってもっかいやりましょう。
僕はハンダ吸い取り線がうまく使えなく、一回ブリッジしたのにビビってちょこっとしかハンダを付けなかったら 反応が悪いキーが出てきてしまったのでしっかりつけましょう。

おわり

今回の組み立ては全部AizuGeekDojoでやりました!
必要なものが揃ってるので自作キーボードをやりたい会津大学生は気軽に初めていいと思います!

Perlinノイズで地形生成

はじめに

この記事は Aizu Advent Calendar の15日目の記事です。
14日目
15日目

ソースコードここにあります
今回は実装の説明よりはアルゴリズムの説明を中心にするのでソースコードの説明はありません。
要望があったら書くかもしれないです。

Perlinノイズとは

Wikipediaによると

パーリンノイズ(英: Perlin noise)とは、コンピュータグラフィックスのリアリティを増すために使われるテクスチャ作成技法。擬似乱数的な見た目であるが、同時に細部のスケール感が一定である。このため制御が容易であり、各種スケールのパーリンノイズを数式に入力することで多彩なテクスチャを表現できる。パーリンノイズによるテクスチャは、CGIで自然な外観を物に与えるためによく使われる。 Ken Perlin が Mathematical Applications Group, Inc. で勤務しているときに開発した。彼はこの業績により、1997年、映画芸術科学アカデミーからアカデミー科学技術賞(Technical Achivement)を受賞した。
Wikipedia

らしいです。
簡単に言うといい感じにできるノイズです。
画像だとこんな感じ
f:id:uzimaru0601:20171122011503p:plain

このノイズを使ってHightマップを作って地形を作ろうという魂胆です。

実はこのノイズ、1から作ろうとすると結構面倒なのですがUnityでは標準の数学クラス(Mathfクラス)のメソッドとして定義されてます!!
だから、すぐに地形が作れちゃう!!やったね!!Unity最高!!アドベントカレンダー終わり!!









っという訳にはいかないのでいろいろ工夫してみます。

ちょっと工夫してみる

これだけだとノイズが均一で地形っぽくないので何個かノイズを重ねてみます。 その際、重ね合わせるノイズのスケールを大きく・振れ幅を小さくしていきます。

  • 3回重ね合わせる
    f:id:uzimaru0601:20171203023328p:plain + f:id:uzimaru0601:20171203023331p:plain + f:id:uzimaru0601:20171203023334p:plain = f:id:uzimaru0601:20171122011505p:plain
  • 5回重ね合わせる
    f:id:uzimaru0601:20171203023328p:plain + f:id:uzimaru0601:20171203023331p:plain + f:id:uzimaru0601:20171203023334p:plain + f:id:uzimaru0601:20171203023337p:plain + f:id:uzimaru0601:20171203023340p:plain = f:id:uzimaru0601:20171122011832p:plain

いいかんじになった!

もう少し工夫してみる

マスクを書けて見ます

  • 矩形のマスク
    f:id:uzimaru0601:20171122011832p:plain * f:id:uzimaru0601:20171122011508p:plain = f:id:uzimaru0601:20171122011458p:plain
  • 円形のマスク
    f:id:uzimaru0601:20171122011832p:plain * f:id:uzimaru0601:20171122011435p:plain = f:id:uzimaru0601:20171122011450p:plain

もうちょっとだけ工夫してみる

今の感じだと

  • 低い部分はなだらかにしたい!
  • 高い部分は勾配を急にしたい!

と言ったような細かい調整が難しいです。
そこでUnityのAnimationCurvesを使ってうまく調整ができるようにします。
f:id:uzimaru0601:20171122011532p:plain

上の曲線を適応すると f:id:uzimaru0601:20171122011458p:plainf:id:uzimaru0601:20171122011447p:plain になります

HightマップをTerrainで表示してみる

これで地形を作る準備ができたので作ったノイズ(Hightマップ)をTerrainで表示してみます。
今回は8回重ね合わせたノイズ
f:id:uzimaru0601:20171203024032p:plain

f:id:uzimaru0601:20171124123438p:plain
のマスクをかけたHightマップ
f:id:uzimaru0601:20171124123441p:plain
を使って見ます。
これを使うと・・・

f:id:uzimaru0601:20171124123457p:plain





なんか想像してたのと違う・・・

問題はTerrainの最高の高さが高すぎること
今回作ったHightマップは最低が0、最高が1になるため1の地点がTerrainの最高の高さになってしまいます。(デフォルトだと600m)
なので、いい感じの高さに最高値を変更してあげます。(今回は100mにしました)
f:id:uzimaru0601:20171124123459p:plain

それっぽいのでは!?

テクスチャをつける

このままだと真っ白で地形感がないのでテクスチャをつけていきます。
Hightマップの0 ~ 0.2の範囲では草を生やして
0.2 ~ 0.5の範囲では岩と草が混じった感じのテクスチャにして
0.5 ~ 1.0の範囲では岩のテクスチャにします。
そうするとこんな感じ
f:id:uzimaru0601:20171124123502p:plain
だんだん地形っぽくなってきた!!

テクスチャをブレンドする

いまのままだと画像
f:id:uzimaru0601:20171203044545p:plain
のようにテクスチャとテクスチャの境界がキッパリと別れていて自然じゃないです・・・
そこである一定比率で徐々に次のテクスチャに移るようにしてみます。
また、勾配に応じて次のテクスチャをブレンドしてみます。
そうするとこんな感じになります。
f:id:uzimaru0601:20171203044957p:plain
だいぶ自然な感じのテクスチャになったと思います!

さいごに

f:id:uzimaru0601:20171203050023p:plain
これで完成です!!
ただ、近づいて見ると
f:id:uzimaru0601:20171203045110p:plain
画像のようにぜんぜん自然じゃない部分があります・・・
このままだと流石に使えないと思うので
自動生成 ⇒ 手を加える
と言った感じにすれば良いのかなって思います(デザイナーではないので0から地形を作るセンスがないです。。。)

今後の課題はこういう部分をどうするか、川を作ってみる、街を作ってみる、etc...
山のように課題はありますね・・・
もう少し頑張って見ます。

参考

はじめました

ブログはじめました

結構前から作ってはいたんですけど書くこともないなーっと思って書いてませんでした。
ただ、ノリでAizu Advent Calendarに参加してしまったので流石に何か投稿しようと思ったので簡単な自己紹介的な感じのものを書こうかと

自己紹介

  • 誕生日:6月1日
  • 職業:大学生
  • 趣味:料理
  • 出身:秋田県

最近料理してないんですがお菓子とかいろいろ作ったりします。
あと、うちの大学で秋田県出身の人見かけないのでいたら教えて下さい()

今後

学んだ技術系のこととかを忘れないように書いたり、趣味のことを書いたりするかもしれないです。
なるべく投稿できるように頑張ります。。。