Manimって言う数学アニメーションエンジンが巷では流行ってる件

はじめに

最近、実務でコード書くことであったりコミュニケーションでほとんどの時間を消費してしまって勉強が疎かに...

まぁそんなこともあって久しぶりにトレンドであったり知っていけたらなと! そこでとりあえず Github Trending の方を覗いたのでそのときの様子を簡単にまとめられたらなと思います

f:id:Doppon:20200331083230p:plain

実際に覗いてみると、なんか1つだけめちゃくちゃスター数が着いてて異色な雰囲気があったののが manim と言う数学アニメーションエンジンでした。

詳細情報

github.com

  • 解説ムービー

www.youtube.com

コメント

正直、本当にすぐ知りたいのであれば解説ムービーを見るのがおすすめです。 そこに実際には

  • 作者の紹介 ( Grant Sanderson / 3Blue1Brown )

  • 実際のサンプル( 数式が変形していったりとか / グラフぬるぬる動いたりとか / 譜面とか )

  • pythonがどう言う普通にしてアニメーションを作ってるのか説明( 触りだけ )

  • 特徴の説明( 特別な知識とか必要ないんだよ!ってところとか / 簡単に使えるよ!っとか )

自分はGithub見てそれだけではどう言う普通に実現されているのかであったり、どう言うことがそもそも実現可能なのかパッと分からなかったので解説ムービー見てから実際のサンプルコード流し読みしました。

もし、どこかで時間があれば少しサンプルを拡張したなにかを上げられたら嬉しいです

ログ監視のための Paper Trail のRspecの書き方

Paper Trail

github.com

概要

バージョン管理ツールのPaper TrailのテストコードをRspecでコーディングするにはざっくりと2つの手順だけで済みます。

  1. rspecで用いられるヘルパーでPaper Trailsのテストフレームワークをインポートする
  2. テストコードを書く

だけです。

手順1 ( ヘルパーの設定 )

# spec/rails_helper.rb
...
require 'paper_trail/frameworks/rspec'

手順2 ( spec の追加 )

describe 'RSpec test group' do
  it 'by default, PaperTrail will be turned off' do
    expect(PaperTrail).to_not be_enabled
  end

  with_versioning do
    it 'within a `with_versioning` block it will be turned on' do
      expect(PaperTrail).to be_enabled
    end
  end

  it 'can be turned on at the `it` or `describe` level', versioning: true do
    expect(PaperTrail).to be_enabled
  end
end

基本的には上記の記述でテストコードが書けます。 また with_versioning で括ることで簡単にバージョン管理が行えているかテストをかけます。

例えば、paper-trail を用いてバージョンが1つしか存在しないことを確認するテストは以下のように記述できます。

with_versioning do
  it 'バージョンが1つのみ存在する' do
    expect(sample_model.versions.length).to eq 1
  end
end

Web API The Good Parts を読み始めてみた

Web API: The Good Parts

Web API: The Good Parts

はじめに

継続的に本を読み進めるのってなかなか難しいですよね、、w

実はサイバージェントのインターンで Web API に触れることもあったからか Web API The Good Parts を購入していました。しかしそれでも断片的にしか読めてなく読書をしながら勉強するのはやはり難しいなと実感する日々です。

Doppon on Twitter: "インターン中はWebAPIにどっぷり浸かっていたので熱が冷めないうちに更に深い理解に至りたい所存です。 https://t.co/6KHkKcacTT… "

やっぱり仕事中に遭遇する問題であったりは仕事中にやれちゃうので良いんですけどそれ以外の新しい知的開拓をするのはそう簡単じゃないなと. ( ※こう言うところで差がつくんやぞワイ

今回はそんな怠慢を克服すべく読み進めながらブログに書き起こしていこうと思います!

導入

まずこの本はオライリージャパンから出版されており、著者は水野貴明さんです。 以下にインタビュー記事なんかも一応載せておきますね。

type.jp

実力派のエンジニアで今は海外にいるんですかね? そこまで詳しくはないですが、それでもどんな人が書いてくださったのか知るのも面白いですよね。

「はじめに」の要約

この本では以下の2点について書かれてます。

  • どのような設計にすれば良いのか
  • どのような点に気をつけて開発を行えば良いのか

この本は企画の立ち上がりから2年間もの年月がかかってしまったらしいです。 そして、当然ながらも技術を取り巻く変化の流れはとても早くその間に Web API に関するサービスを提供する

などが登場し、それだけでなく APIcon のような API 関連のカンファレンスも頻繁に開かれるようになっていたみたいです。 つまりそれだけ API を作り公開することの重要性の高まりであったり注目度が盛なときだったと言えますね。

この本ではそんな中、日本人として生活しているとどうしても Web API の開発で届かない部分を少しても貢献しようと言う目的のもと記されたようです。

対象読者

  • Web API を設計、開発しようとしてる。あるいは運用、改修をしているソフトウェア開発

本書の構成

  • 1章 Web API とは何か

  • 2章 エンドポイントの設計とリクエストの形式

  • 3章 レスポンスデータの設計

  • 4章 HTTP の仕様を最大限利用する

  • 5章 設計変更をしやすい Web API を作る

  • 6章 堅牢な Web API を作る

  • 付録 A Web API を公開する際にできること

  • 付録 B Web API チェックリスト

おわりに

今回は、ここまでにして次回からはだいたい1章づつぐらい?wマイペースにアウトプットできたらなと思います!

もしかしたら1章を前半と後半で分けるぐらいにしていくかも知れません。

サイバーエージェントインターン戦記

この記事は一本読んで完結するような内容にしようと思うので自分の自己紹介から軽くして 実際にサイバーエージェントの方ではいつ、どこで、どう言うことをしたのか。 そしてそこで何を感じたのかを伝わる記事に仕上げようと思ってます。

それではよろしお願い致します!

自己紹介

現在、芝浦工業大学で学部4年からもう一回学部4年をする予定の Doppon です。

最近はParchieって最近できたスタートアップで開発指揮を取り、なんとかインフルエンサー型ECである レコショ をサービスリリースさせるところまで駆けつけることができました。 これはこれで大学生生活おそらく一番か二番を争うほど過酷な戦いだったので別で紹介させてくださいw

最近は golang に関する開発が楽しいと思っていて特にWeb APIに対する理解( 設計もそう、認証方法もそう )することが趣味です。

いつインターンをしたのか

2020年2月6日 ~ 28日 までしてました。

6日の初日のブログがこちらにありますね。

doppon.hatenablog.com

実際にどう言うチームに配属されたの?

一番キラキラなAbemaTV開発本部ってところに配属されました。 自分はクラウドプラットフォームチームの鬼メンターである通称ナーガさんにメンターとしてついてもらいました。

以下のスライドを公開している方ですね。

GKEで半年運用してみた | PPT

チームの様子

まぁ何が鬼かって、普通にレビューも厳しく細かいとこまでのレビューがある中でちゃんとベストプラクティスの選択の実装方法を行うのは当然であり当初見えていなかったけど仕様として追加した方が良いところは全部やりきらなきゃ意味が無いとバッサリ切り捨てる感じでした。

初日にタスクの難易度を

ナーガさん「Easy Hardどっちが良い^^ニコニコ」

わい「Hardでお願いします><」

ナーガさん「おお!Hardか!!^^」

...( そうこれが悪夢の始まりとはこのときまだ知らなかったのであった... )

って感じで結果どうなったかと言うどうなったかと言うと(´・ω・`)

既存の状態の問題解決となるサービス設計仕様APIの選定・調査ドキュメント整備初めてのgolang開発Abemaで利用されているインフラ基盤への繋ぎこみ、etc...)

もはや途中からベリーハードかエクストリームモードの選択の間違いだったのでは無いだろうかと錯覚を覚えるように、、w

タスク内容( 話して大丈夫そうな範囲で )

社内VPNアカウントの管理をする Slack Botgolangで書くことにしました。

VPNの管理ツールにはOSSPritunl を使っておりここのコードをweb側もclient側もかなり読むことになりました。

課題

既存の問題としてはアカウントの発行であったりを管理者が手動でいじっていたのでヒューマンエラーがたまに起こってしまっていたり、運用に少しストレスがある( 管理者の時間が取られる )ってことでここら辺をハックすることになりました。

ソリューション

そもそも本番環境であったり開発環境ごとに色々と誰が権限が持っているかをPritunlが組織と言う単位でしていて、その組織構成がややこしくなっているので全く新しい粒度で切り分けることによって運用を楽にする方針にしました。

また、これは少し運がよかったのですがその移行に関してもダウンタイムなしでの移行可能な設計として実装まで行えました。

余談

色々とSlack Botをいじったりとかしていると2月中にちょうどおきたSlack側のトークンに関する扱い方のアップデートがあったりしてハマったりもしました。 また golang 開発でSlackのクライアントがレポジトリごと引越したりするとかちょうど変化することがあったりすることもあってそれは雑にQiitaにメモを載せておいたりとかもしました。

qiita.com

っと最終的にはどうだったん?

上記のこと、全てナーガさんと一緒に駆け抜け最終的な発表で成果物は本当に評価される結果となりました。

そのときの様子↓

https://twitter.com/Doppo1033/status/1233364274157776896?s=20

まぁこの成果物はと言うのは実は本当に最後の最後までコードをリファクタリングしたり、動作確認したりドキュメントを手直ししていたりして 全然発表資料をつくれてなかったと言うのがあり、最後は必死にドキュメントを見せデモを見せ頑張ったんやと訴えるだけの発表になってましたw

今回なんか人事の人に感謝してるとかって言ってなかったっけ?

そうなんです!w

いや、実は本当に良かったのがめちゃくちゃ人に合わせてもらえたというところです。

まずこちらの写真から見ていただきたい。( 人事向けの成果発表会で使ったスライド )

構成的に半分メンターさんのナーガさんに連れてってもらったときの写真でもう半分ぐらいが人事の方々がセッティングしてくださったりして実現できたランチ会だったりします。 最近サービスリリースした koely のエンジニアさんであったり、子会社社長の役員の方とランチをセッティングしてくださったり、同期との絡む機会を組んでくださったりと本当に率先して動いてくださって良くしつこいぐらいに色々してくるって言われてる感じがしますが笑

自分にとってはそれだけアツく、サポートをしてくれてるって言うことが素直に嬉しかったです。

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

さいごに

実はこのインターンでは欲張りに Abema でチーム開発もできたらしたいと思いサブでもう一人メンターさんがそのためについてくださっていたのですが 実際には精一杯、クラウドプラットフォームチームの方でタスクを完遂することで手一杯になってしまったのでお時間を色々と取らせてしまって申し訳なかったです、、

でもそのメンターさんとはちょうど良い距離感で色々技術的な相談であったり、就活の相談、会社の話などできてすごい楽しかったです。

ありがとうございました!

あと、こんなこと言う人じゃないのになんか最後泣かせること言ってきててその日は一人でヤケ酒した。

https://twitter.com/na_ga/status/1233390463056371712?s=20

CATechJOBの初出社からサイバーな件

はじめに

こんにちは!こんばんは!

本日の2月6日(木)からサイバーエージェント恒例のCATechJobに参加してきました! 自分の場合はAbemaTVの本部にお邪魔させていただくことになりました!

昨日、ツイッターにブログをかくと宣言しておいたのでザックリ体力が尽きる前にメモ程度に残しておこうと思います!

午前

午前中は基本的に会社説明会を受けました。 そこでは派遣社員であったり、インターン生だけでなく2月から入社するって人たちがいてなんかこれからインターンをするって雰囲気とはまた違い面白かったです!

会社説明会が終わると移動して社内見学をさせていただきました!

ちなみに社内見学する前に恒例のバルーンとの邂逅がありました!! それがこれです!!

f:id:Doppon:20200206231412p:plain

めちゃくちゃ可愛い(´;ω;`)笑笑笑

これは本当にテンション上がりましたし、まさかこんな高レベルなクオリティーなものだと思ってなかったんで普通にはしゃいでました← ( 名前はもうそもそも珍しいのでオープンにして行くスタイルで.. )

オフィス見学しながら友達もできてとても有意義な時間でした。 その人はReactNativeのベテランらしく色々話を聞いていて面白かったです!

iOSとかのスマホよりの開発はからっきしやらないので深く話せなかったのがとても残念でした..勉強せねば

ランチタイム

ランチタイムは叙々苑か美味しいお寿司( なだ万 )を選べるってことで迷わずお寿司に🍣 と言うのも実は経験があると分かると思うんですが、叙々苑弁当は冷めるとお肉が固っちゃって味が落ちちゃうんですよね、、

なので冷めていても美味しそうなお寿司を取りに!

ちなみにこの中でかぼちゃがめちゃくちゃ美味しかったです笑 ボリューミーで甘みもあって食感もいい具合で謎に印象的でしたw

f:id:Doppon:20200206231815j:plain

午後

午後からはやっと業務に入っていきますね! コード書くのに飢えてるのでこの時間が待ち遠しいかったです!

まずは当然PCのセットアップから入ります。

ざっくりですが

  • Git周りのセットアップ
  • Slackの参加
  • 社内ツールへの参加
  • esaへの参加

だったりとほぼほぼアカツキでやったこととおんなじでした! こう言うインターンは初期化されたMacBookをポンと渡されて「はい、じゃあ初めて」って感じなのでどれだけ自分の中でどこらへんをカスタマイズしようってイメージを持ててるかとか大事な気がしてます。

具体的に自分の場合はPCを渡されてやっとことは

システム設定周りでは

  • マウスの移動速度変更(高速に)
  • 連打時の速度変更(高速に)

アプリケーションのインストールに関しては

を速攻でやりました。おかげでかなり手が馴染む感じになって来てはじまったんだなと言う感覚が出てきました笑

あとターミナル部分

も早いうちにやりました。 これでもうだいたいコードを書く準備ができた実感もあり気持ちよかったです。

おかげで実際に本日、初日ながらFirst Commit を達成することもできたので悪くない走り出しかなと。

これから触れる業務内容に関しては可能な範囲で明日以降の記事で触れていこうと思います。

そして夜

初日からめっちゃ飲みました😇。。。

ただ思ったことはAbemaは最高です。笑

f:id:Doppon:20200206234310j:plain