にわとりになる日まで

たまごな大学生のブログ

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

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

どうも、うじまるです

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

hyper.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日
  • 職業:大学生
  • 趣味:料理
  • 出身:秋田県

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

今後

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