petitviolet_blog

@petitviolet blog

2019年度振り返り

社会人5年目の振り返り。 昨年度の。 転職した 大きなイベントとしてはまずこれ。 4年ちょっと在籍したFringe81株式会社からトレジャーデータ株式会社に。 現状、何とか死なずに済んでいるという状態。 入社してしばらくは無力感に打ちひしがれていたものの9…

RstructuralにOptionとEitherを追加した

前にRstructuralというGemを作ったという記事を書いた。 それの続編としてOptionとEitherを実装した、というだけの話。 Option Scalaやってる人にはOption、HaskellとかならMaybeで伝わるはず。 「要素があるかも知れないし無いかも知れない」を表現するため…

リッチなデータ構造を扱うためのGemを作ってみた

以前、StructをRubyで実装するというのをやった。 じゃあ次は、ということでEnumとAlgebraic Data Type(ADT)に相当するようなものが欲しいな〜と思ってGemとして作ってみた。 EnumはRuby言語標準としては用意されていないが、RailsにはActiveRecord::Enumと…

RubyのStructをRubyで実装する

RubyのStructはこういうやつ。 $ irb irb(main):001:0> Point = Struct.new(:x, :y) irb(main):002:0> Point.new(1, 2) => #<struct Point x=1, y=2> irb(main):003:0> Point.class => Class Structという名前だけあり、データを持たせておくのに便利なクラスを作ることができる。 </struct>…

RailsとReact hookでGistみたいなWebアプリを作りかけた

Ruby(Rails)の練習がてらGistみたいなやつを作ろうとしていた(過去形)。 https://github.com/petitviolet/acoder モチベーションはこの辺 Ruby on Rails 6を触ってみたかった ActionTextとか React hooks触ってみたかった TypeScript RubyでもGraphQLやって…

Railsでdevise_token_auth使ってトークン認証する

Railsで認証を実装するのに有名なGemであるplataformatec/deviseを使ってトークン認証を実装するためのGemであるlynndylanhurley/devise_token_authを使ってトークンによる認証を実装する。 +αで少しカスタマイズする方法も書く。 ちなみにdeviseにもかつて…

HTTPリクエスト/レスポンスを記録してリプレイするためのruby gem作った

RubyGem作ってみよう、Rackミドルウェア書いてみよう、の習作。 RackミドルウェアがHTTPリクエストとレスポンスを記録 Rack::Rreplay Rubyスクリプトで記録されたリクエストをリプレイしてレスポンスを突き合わせる bin/rreplay みたいな使い方。 実用上は、…

ReactからAceEditorを使ってリッチなエディタを表示する

これはなに リッチなエディタとしてajaxorg/aceというものがあり、Reactから使おうとするとsecuringsincity/react-aceが便利。 react-aceが提供するコンポーネントをラップするような独自のコンポーネントを実装する。 具体的には、以下の三点。 ファイルタ…

react-routerで同じComponentにLinkで遷移したときにstateがリフレッシュされない

まとめ Routeに異なるkeyを設定する <Route exact key={'new'} path={'/posts/new'} component={EditPostComponent} /> <Route exact key={'edit'} path={'/posts/:id/edit'} component={EditPostComponent} /> <li>などでリストを表示したときにkeyを設定してないとwarningが表示されるが、それと同じことが起きていると思えばよい。 https://reactjs.org/docs/lists-and-keys.html#keys サ…</li></route></route>

Reactのカスタムhookで作るフォーム

何番煎じかわからないが実装してみたから残しておく。 やりたいこと Reactのカスタムhookとして実装する フォームのバリデーションをする フォームをなるべく共通化する onSubmitとかonChangeについては共通化する JSXやスタイルについては共通化せず個別に…

近況

2019/07/01にArm Treasure Data株式会社に入社していました。 シュッ pic.twitter.com/jX9qq54Ygs— こむ (@petitviolet) 2019年7月1日 丸4ヶ月経ったところです。 経緯とか 転職を考えていた頃にタイミングよくスカウトメールが来てオッてなって応募してみたら受…

fzfで快適なターミナルライフ

以前こんなエントリを書いた。 petitviolet.hatenablog.com が、最近はpecoからfzfに大体を移行している。 主な理由はfzfについているpreview機能が気に入ったからで、ファイルやGitをインタラクティブに選択する際にpreviewが出来ると助かることが多いため…

近況

2019/06/30を持ってFringe81株式会社を退職します。 最終出社でした。ありがとうございました! pic.twitter.com/YRvrLUhBXn— こむ (@petitviolet) May 24, 2019 2015/04/01で新卒入社したので4年と3ヶ月の在籍ということになりました。 お世話になった方々…

ScalaMatsuri2019で発表してきました

「ピュアなドメインを支える技術」というタイトルで発表してきました。 2019.scalamatsuri.org ScalaMatsuriは2017で発表して以来だったので楽しみにしてました。 petitviolet.hatenablog.com 資料 内容としては関数型プログラミング + CQRSという感じでDDD…

いい感じにオブジェクトのdiffを取るライブラリ作った

Scalaのオブジェクト同士を比較する際に、==を使って比較することは出来るが、同値かそうでないかしかわからない。 そこで、具体的に何がどう変わったのかをジェネリックに取得するライブラリを作ってみた。 こんな雰囲気で使える。 $ amm Loading... Welcom…

2018年度の振り返り

社会人4年目の振り返り。 昨年度のはこれ。 petitviolet.hatenablog.com エンジニアとして 相変わらずサーバサイドでScalaを書くことがほとんど。 GraphQLを実戦投入出来たし、FPとかDDDらへんも深めることが出来た感覚。 GraphQLについてはGraphQLナイトとS…

ポートフォリオサイトをGatsbyで作り直した

自分のポートフォリオ的なWebサイトとしてhttps://www.petitviolet.netを作っている。 www.petitviolet.net もともとはHTMLべた書き + Bootstrapで作っていたが、GatsbyJSを使って作り直してみた。 www.gatsbyjs.org たいして更新することもないので静的サイ…

「小さく始めるクラウドネイティブ」というタイトルで発表した

2019/02/21にMicrosoft品川オフィスで発表してきました。 イベントページはこちら。 microsoft-events.connpass.com 今発に携わっているプロジェクトでMicrosoft Azureを使っていることもあり、お声がけいただいてセッションしてきました。 ありがとうござい…

Kubernetesと12factor appについて話した

昨年11月と今年1月に社内勉強会でKubernetesと12factor appについて話した資料があるのでそれをはるだけのポスト。 Kubernetesを知る いま開発しているプロダクトではKubernetesを採用していて旗振り役っぽいところもあったのでチーム向けにハンズオンやった…

Scala関西サミット2018で発表してきた #scala_ks

去年に引き続いて幸運にもCFPに応募したトークが採択されたので発表してきました。 運営の皆さまをはじめとして、ありがとうございました! 資料 サンプルコードはGithubに上げました。 発表の振り返り セッションのトリで裏番組が非常に豪華だったにも関わ…

ISUCON8予選に参加して敗退した #isucon

2018/09/15(土)に開催されたisucon8予選に参加した。 isucon.net 去年と同じメンバー3人で出た。 petitviolet.hatenablog.com 結果はタイトル通り敗退で、再起動試験でどんなスコアだったかはわからないが、自分たちで確認できたスコアは26,000点台だったの…

Scala関西サミット2018に採択された

Scala関西サミット2018に出したCfPが幸運にも採択された。 2018.scala-kansai.org Scala関西は2017に続いて2年連続参加できるので嬉しい限り。 petitviolet.hatenablog.com 発表のタイトルは「実践GraphQL on Scala」で45分枠。 しっかり準備して業務でやっ…

GraphQLナイトで発表してきた #gqnight

2018/06/28にGraphQLナイトというイベントに参加して「GraphQL on Scala」というタイトルでLTしてきました。 connpass.com 発表資料はこちら。 speakerdeck.com 業務でGraphQLなAPIの開發を最近やっていて色々とネタが溜まってきていてどこか勉強会で話せな…

de:code2018に参加してきた

Microsoftが主催するde:code2018に参加してきた。 https://www.microsoft.com/ja-jp/events/decode/2018/ 普通に業務で2日間フルで参加して2日間直行直帰していい体験だった。 セッションのメモはここには書かないが、メインで聞いたセッションはこの辺り。 …

2017年度の振り返り

社会人3年目の振り返り。 昨年度のはこれ petitviolet.hatenablog.com エンジニアとして 仕事では2017年度に引き続きサーバサイドエンジニアとしてScalaでのプロダクト開発をメインにやっていた。 そう言えば一部分Golang使ったりもしたけど。 Scala的な大き…

Scalaで実装したバッチをGAEでいい感じに動かすアーキテクチャについて発表した

GCP使った新規事業開発、みたいなイベントを弊社で主催した。 その時のブログがこれ。 fringeneer.hatenablog.com 対外向けに発表したので自分のブログにも残しておく。 発表資料はこれ。 speakerdeck.com GAEでScala動かしていることもGAEでバッチ動かして…

自宅にセイルチェアを購入した

タイトル通り、セイルチェアを購入した。 ハーマンミラー セイルチェア サスペンションMバック 高さ調節アーム ブラックベース/ブラックフレーム サスペンションブラック アームブラック 座ノアール AS1YA23HA N2 BK BB BK BK 9115出版社/メーカー: HermanMi…

Web APIの設計について話した

社内の大新年勉強会で「Web APIのこれまでとこれから」というタイトルで発表した。 資料 リポジトリ gRPCとGraphQLについてはサンプルでコード書いた。 感想 最近GraphQLが盛り上がっているのでキャッチアップしておくか〜と思って調べ始めたらめっちゃ良か…

isucon7予選に参加したメモ #isucon

10月21日(土)にisucon7予選に参加した。 ずいぶんと日が経ってしまったが、メモ程度に残しておく。 会社の先輩方と3人チーム。 結果 ベストスコアは10万点を少し超えたあたりだったが、記録なしで終わってしまった悲しい。 開始前 前日までにはあまりちゃん…

Scala関西サミット2017で発表してきた #scala_ks

Scala関西サミット2017は以下。 そして、こちらの後日談。 「メタプログラミングScala」というタイトルでCFP通ったので発表してきました。 ScalaMatsuriに引き続き僥倖というやつです。 発表資料はこちら。 170ページという長大なアレです。 社外の技術勉強…