タグ

ブックマーク / hakobe932.hatenablog.com (29)

  • 近況 - はこべにっき ♨

    これは直接のお知り合いの方に向けた、個人的な近況の報告のための記事です。オープンインターネットを用いるのが最も適切に伝わりやすそうなので、このようにしていますが、関係のない方にはすいません。 新卒として2010年に入社した、はてな退職しました。最終出社は4月26日でした。2008年に参加したインターンシップも含めて数えると10年以上はてなで働いていたことになります。 10年の中で当にたくさんの方にお世話になりました。ずっとにこにこしながら働き続けてこれたのは、これまで出会ったはてなスタッフの皆様のお陰です。大変なこともあったけど、楽しかったな、達成できたな、と思えることのほうがたくさんあります。ありがとうございました。 特に、僕のわがままを聞いていろんなチームに配属してもらい、いろんなメンバーと働かせてもらったこと、チーフエンジニアとしてエンジニアのみんなが楽しく仕事をするサポートを任

    近況 - はこべにっき ♨
    peketamin
    peketamin 2019/04/30
  • grpc-gateway と使われてるProtocolBuffer周辺技術メモ - はこべにっき ♨

    grpc-gatewayはHTTP2+ProtocolBuffer をプロトコルに用いるgRPCのサービスを、HTTP/1.1のRESTfulな JSON APIとして利用できるようにするリバースプロキシを生成してくれるツールだ。 厳密にはProtocolBuffersを処理するコマンドであるprotocのプラグインとして動作し、protocに読み込んだgRPCのサービス定義をもとにGoで記述されたコードを生成する。生成されたコードはHTTPサーバのハンドラになっていて、net/httpに登録して使えるようになっている。 ハンドラはHTTP/1.1でリクエストを受け取ると、リクエストに含まれるJSONを対応するProtocolBufferのメッセージに変換し、プロキシ先のgRPCサービスのメソッドを呼び出す。このgRPCサービスは、元にしたスキーマが同じであればGo以外の言語で実装されてい

    grpc-gateway と使われてるProtocolBuffer周辺技術メモ - はこべにっき ♨
    peketamin
    peketamin 2018/04/22
  • gRPCを学んでいる - はこべにっき ♨

    マイクロサービスや自作ミドルウェアのAPIをメンテナブルにしたいよねっていう文脈で、OpenAPIGraphQLgRPCといった技術が採用されるのを最近よく目にする。 バックエンドを実装しているWebエンジニアとしては、こういう仕組みが整備されつつあるのはありがたい。APIをシステムの外に公開しようとすると、ドキュメンテーション/バリデーション/クライアントの実装など、意外と副次的な作業が必要なので、、汎用化されたツールに頼れるのは助かる。マイクロサービスを用いたアーキテクチャを考えるにあたっても、システム間のアダプタをイメージしやすくなる。 そういう背景で、最近家ではgRPCを調べている。このあとはgRPCについて調べたことのメモや感想のコーナーになっているので、興味があったらどうぞ。 主な情報源 だいたいこのへんを眺めておくと、gRPCの基については抑えることができる。 grpc

    gRPCを学んでいる - はこべにっき ♨
    peketamin
    peketamin 2018/04/05
  • やっていく技術テーマを探す - はこべにっき ♨

    Webエンジニアを8年くらいやっていて、なんとなく、一通りのことはできるようになってきた。ただ、ちょっと得意な分野もあるとはいえ、基的になんでも屋さんとしてやっているので、技術者としてのアピールがいまいちだなーというのが気になっている。そこで、技術者としての自分をアピールできそうな技術テーマを一つ選んで、それにじっくり取り組んで見ようと考えた。 しかし、取り組む技術テーマをうまく選ぶ自信がない。そこで、ちょっと作戦を考えて取り組む技術テーマを見つけようと試行錯誤してみたので紹介してみる。 ステップ1: 指標を考える やっていく技術テーマを見つけるにあたって、テーマの候補をスコアリングしてみることにした。漠然とスコアをつけるのは難しいので、自分が普段技術テーマに取り組むかどうかを考えるときに気にしていることを思い出して、5つの指標に分解してみた。 指標1: 自分の興味 自分がおもしろい、や

    やっていく技術テーマを探す - はこべにっき ♨
    peketamin
    peketamin 2018/03/18
  • ざっとわかるPythonの紹介 - はこべにっき ♨

    普段Perlを書いている自分がざっくりPythonについて調べて発表した時の資料が手元に転がっていたので、せっかくなので公開した。 普段、別の言語でWeb開発している人が、自分の言語のアレはPythonだとコレなのねって雰囲気わかるようになっているといいなと思って作ったけど、見返すとそうでもない気がする。 自分もPython初心者なので、「おいおいまったくまちがっているぜ! 」といったことがあったら教えてほしいです。京都に住んでいるのだけど、関西のPythonコミュニティの雰囲気もよく知らないので情報募集です。 あと資料で紹介しているブログのコードは以下においてある。自分がよくやる感じの薄い設計でかんたんなブログシステムをPythonで書いたらこんな感じかな~ってコードになっている。 github.com

    ざっとわかるPythonの紹介 - はこべにっき ♨
    peketamin
    peketamin 2017/11/04
  • レガシーソフトウェア改善ガイドを読んだ - はこべにっき ♨

    めっちゃ似た名前の"レガシコード改善ガイド"とは別の。レガシーコード改善ガイドは結構前のだけど、このレガシーソフトウェア改善ガイドは去年刊行されたばかりだ。hitodeくんと会話してて気運が高まったので読んだ。 レガシーソフトウェア改善ガイド (Object Oriented Selection) 作者: クリス・バーチャル,吉川邦夫出版社/メーカー: 翔泳社発売日: 2016/11/11メディア: 単行(ソフトカバー)この商品を含むブログを見る このは、レガシーソフトウェアがメインのテーマにしているけれど、古びてどうにもならなくないソフトウェアプロジェクトへの対処のみにフォーカスしているのではなく、普段から開発しているコードをどうやって継続して進化させられるかといった内容が主で、どんなソフトウェアエンジニアにも勧められそう。 このの章の構成をみると、大きくはリファクタリングに関

    レガシーソフトウェア改善ガイドを読んだ - はこべにっき ♨
    peketamin
    peketamin 2017/02/12
  • PythonでWebアプリケーション作る練習をした - はこべにっき ♨

    最近流行っている雰囲気があるPythonだけど、僕も年末にふと気分が高まったので、練習をしてみた。 自分にとってはPerlRubyよりも先に勉強した、初めてのスクリプト言語がPythonだったので、ちょっとだけ思い入れがある。とはいえ、何年も前に初めてのPythonで勉強した後は、稀に使うくらいだったのでPythonならではの良い書き方とか、良いライブラリの知見とかは全然持ってなかった。 そこで、Pythonに入門しなおしてPython流を思い出した後、自分が気になっているWeb開発をやってみてどういうもんなのかを一通りやってみた。 このエントリは、GoでWebアプリケーション作る練習をしたの続編です(さらに続きはないでしょう)。 入門 Python3 を読んだ 入門 Python 3 作者: Bill Lubanovic,斎藤康毅,長尾高弘出版社/メーカー: オライリージャパン発売日:

    PythonでWebアプリケーション作る練習をした - はこべにっき ♨
    peketamin
    peketamin 2017/01/17
  • 次に何を勉強するかを決めるための作戦 - はこべにっき ♨

    Webエンジニアが学ぶべき技術範囲はとても広く、いったい何をどこから勉強していくかは難しい問題です。僕も試行錯誤を繰り返しています。 そんな試行錯誤の中で、新しく何を勉強するか決めるときに使ってる作戦がいくつかありそうだなと思うようになりました。そこでこの記事では、僕が次に勉強すべきテーマに困ったときに使っている作戦を紹介してみようと思います。 各作戦の例のコーナーでは実際に僕がその作戦を使って勉強したトピックなどを紹介しています。 このエントリは、はてなエンジニアアドベントカレンダー2016の20日目の記事で、担当はid:hakobe932です。昨日の担当は id:masayoshi さんでLinuxのARPとL2スイッチのお話という記事でした。 作戦1: 新しいプログラミング言語を学ぶ 新しいプログラミング言語を学ぶのは、比較的手を出しやすい作戦です。プログラミング言語を学ぶことで自分

    次に何を勉強するかを決めるための作戦 - はこべにっき ♨
    peketamin
    peketamin 2016/12/20
  • GoでWebアプリケーション作る練習をした - はこべにっき ♨

    GoでWebアプリケーションを書いてみる練習として RequestBin ぽいものを試しに作ってみた。gomibakoという名前であまりひねりはない。以下のURLで試せます。 https://gomibako.douzemille.net/ ソースコードもGitHubに公開してある。 github.com 何ができるか HTTPリクエストを受け付ける用のURLを作ることができて、そのURLに対するHTTPリクエストのログをWeb上で確認することができる。ちょっとしたWebHookの動きのチェックとかリバースプロキシの設定確認とかに使えて便利。 具体的には以下の様にして使える https://gomibako.douzemille.net/ にアクセスして "New Gomibako" ボタンを押す https://gomibako.douzemille.net/g/deadbeaf123/

    GoでWebアプリケーション作る練習をした - はこべにっき ♨
    peketamin
    peketamin 2016/11/25
  • 今季見るべきアニメを機械学習で推薦する - はこべにっき ♨

    Coursera で機械学習に入門成功できたので応用に挑戦してみました。ちょうど季節の変わり目ということで、過去に見て気にいったアニメの特徴を学習して、未知のアニメを、気にいりそうなアニメと気にいらなそうなアニメに分類するツールを作って、ソフトウェアに今季見るべきアニメを推薦してもらいたいと思います。 アニメの特徴量 あるアニメを気にいるかどうかは、話のおもしろさや、絵柄の感じ、キャラクターの魅力などによって決まりそうです。ただ、話のおもしろさや、絵の美しさ、キャラクターの魅力を特徴量として数値化するのはむずかしいので、アニメの映像を制作しているスタッフや会社、声を当てているキャストにフォーカスすることにしました。 Courseraの機械学習のコースでは、特徴として妥当かどうかを判断するのに、人間が同じ特徴を与えられて分類といったタスクが可能かを考えてみよとアドバイスしていました。アニメ作

    今季見るべきアニメを機械学習で推薦する - はこべにっき ♨
    peketamin
    peketamin 2016/04/15
  • 手を動かして電子工学を学ぶ - はこべにっき ♨

    このエントリは、はてなデベロッパーアドベントカレンダーの20日目のエントリです。昨日の記事は id:aereal さんの連打を支える技術でした。明日の記事は id:astj さんです。 最近はWeb技術以外にもできることを増やそうと考えて、電子工学に入門しています。ほとんど何もしらないところからの入門ですから、理論を学びつつ手を動かして何か作ってみる作戦でいきたいところです。 しかし、自分の場合、手を動かすために丁度良い課題に取り組みたいものの、何をやればまったくわかりませんでした。 こんな風に困ってしまうことは、0から電子工学に学びはじめたい人にとっては、よくあるのではないでしょうか。そこで、このエントリでは、電子工学をはじめる人がとりあえず何か手を動かして学ぶための方法をご紹介したいと思います。 TL;DR Make: Electronics ―作ってわかる電気と電子回路の基礎を読み、

    手を動かして電子工学を学ぶ - はこべにっき ♨
    peketamin
    peketamin 2015/12/20
  • Goによるプライベートネットワークへのアクセスを禁止するHTTPクライアントの実装 - はこべにっき ♨

    クローラのように、ユーザからの入力に応じて任意のURLにHTTPリクエストを発行するソフトウェアは、誤ってプライベートネットワークへのリクエストを処理しないようにする必要があります。悪意のあるユーザが故意にプライベートなネットワークに対してリクエストして、内部情報にアクセスするといった攻撃を行う可能性があるからです。 PerlではLWPx::ParanoidAgentやLWPx::ParanoidHandlerといったモジュールが便利です。これらのモジュールは、リクエスト先のURLをチェックしてプライベートネットワークへのリクエストを禁止してくれます。単にIPアドレスをチェックするだけでなく、ホスト名をDNSで解決して得られたIPアドレスをチェックしたり、リダイレクト先のURLをチェックしたりしてくれます。まさに偏執的です。 このLWPx::ParanoidAgentと同様の機能をもったG

    Goによるプライベートネットワークへのアクセスを禁止するHTTPクライアントの実装 - はこべにっき ♨
    peketamin
    peketamin 2015/08/05
  • golangで書かれたSlack bot でエンジニアに話題提供しよう - はこべにっき ♨

    こんにちは、id:hakobe932 です。はてなエンジニアアドベントカレンダーの18日目として、はてな社内で導入をためしている話題提供Slack botの機能と実装について紹介します。昨日はid:astj による Herokuとwerckerによる継続的インテグレーション・自動デプロイでperlのwebアプリケーションを開発するでした。 #enginnerで技術交換 はてなではメインのチャットツールとしてSlackを活用しています。チームや職種などの単位のたくさんのチャンネルがあり、それぞれのチャンネルでコミュニケーションが行われているのですが、もっぱら技術的な議論を行っているのが #enginner というチャンネルです。#engineer では、チームをまたいだ技術的な相談のほか、新技術や勉強会の紹介など、技術に関わるさまざまな話題で情報交換しています。 もっと技術の話題でわいわいし

    golangで書かれたSlack bot でエンジニアに話題提供しよう - はこべにっき ♨
    peketamin
    peketamin 2014/12/25
  • 社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨

    はてなでは週に一回、社内技術勉強会というのをしています。今週は僕の当番だったのでScalaの入門的な話をしました。 普段使いの言語として、Scalaの便利なところをまとめたというつもりです。とはいえ、他の言語にもある特徴もわりと紹介してるので、もうちょっとScala独自の内容にフォーカスしてもよかった... むずかしい。時間の都合で全部話きれなくて、会が終わった後でimplicitまわりの話とか数人にご紹介したら一番おもしろかったと言う話になったので無念。 あの機能を紹介してないとはけしからんみたいなのがあったら教えて下さい。そうはいってもとりあえず Scalaスケーラブルプログラミング第2版を読むといいです。 ↓ 資料はgist形式でembedしてあります ↓ https://gist.github.com/hakobe/e1aa2501a64e7f801b55 こちらもおすすめ Sca

    社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨
    peketamin
    peketamin 2014/09/19
  • プログラミング言語の基礎概念を学んでる - はこべにっき ♨

    プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト) 作者: 五十嵐淳出版社/メーカー: サイエンス社発売日: 2011/07メディア: 単行購入: 6人 クリック: 60回この商品を含むブログ (12件) を見る このを読んで学んでる。まだ半分くらいで関数の定義とかについて勉強してる。 プログラミング言語の動作を数学的に厳密に記述する方法を順番に教えてくれるという内容で、記述には導出システムが用いられてる。基的な算術式からはじまって、変数の定義や関数の定義、パターンマッチや型システムなど、様々な言語の機能を推論規則によって定義する方法を教えてくれる。与えられた規則が意味的に意図したものを表しているかの証明だけでなく、証明のやり方もくわしく説明されていて丁寧でたすかる。 おもしろいのはこののためのオンラインの演習システムというのがあって、の中で与えられた導出システムに

    プログラミング言語の基礎概念を学んでる - はこべにっき ♨
    peketamin
    peketamin 2014/07/14
  • ScalaでWebアプリケーションのエラー処理を綺麗に書く - はこべにっき ♨

    Play Frameworkにおいて、POSTリクエストから得られたbody中のパラメータをもとに何か処理をするというよくあるコードを、ちょっと整理して見やすくする方法を学んだのでメモがてら御シェアさせていただきます。Playのリクエストハンドラを書くときに頻繁に現れたので、例がPlayのコードになっているけど、内容的にはScala全般的な話だと思う。Scalaプロみたいな人にはまったく新しいことはないと思う。 題と関係ないけど、YAPCScalaの話をするかもしれません。言語自体の話よりかは採用理由とか開発フローの話を、これまでのPerlでのWeb開発を踏まえて話す感じになりそう。Scala In Perl Company : Hatena - YAPC::Asia Tokyo 2014 さて、題ですが、話題の対象になるのは以下の様なPlayFrameworkのコードです。 def

    ScalaでWebアプリケーションのエラー処理を綺麗に書く - はこべにっき ♨
    peketamin
    peketamin 2014/07/12
  • さっき見た夢 - はこべにっき ♨

    風吹きすさぶ海岸にて: かつての生徒: 「先生、僕のこのブランチ。 マージしてくださいませんか...?」 マスター先生: 「...」 刑事: 「先生! もういいでしょう。今が大事なときなんです。どうかこのブランチをマージしてくださいよ。あなただってそうすれば良いことくらい、わかってるんでしょう!?」 マスター先生: 「...」 マスター先生: 「刑事さん、わしゃあいつでも言っているでしょう...」 マスター先生: 「わしのレビューにかなう、最高の品質のコードであれば、いつでもマージすると!!!」 (マスター先生の気迫に、たじろぐ、かつての生徒と刑事) コーディング探偵: 「ふふっ、なるほど、そういうことでしたか。ならばそのブランチ、私が引き受けましょう!」

    さっき見た夢 - はこべにっき ♨
    peketamin
    peketamin 2014/05/17
  • golangで書かれたプログラムのメモリ使用状況を見る - はこべにっき ♨

    golangにはpprof用のプロファイルデータを出力できるライブラリが標準でついてくるので、それらを使うことでメモリの使用状況を調べることができる。中でも、net/http/pprofが手軽で便利だった。 net/http/pprofをプログラムに組み込むことでダイナミックなプロファイル情報をWebブラウザで表示してみることができる。使い方は、ライブラリの解説ページにあるとおりなんだけど、プロファイルを取りたいプログラムで import _ "net/http/pprof" とimportしたあと、main関数などで go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }() と書いておくと良い。 この状態でプログラムをbuildして実行する。プログラムの実行中に、http://localhost:606

    golangで書かれたプログラムのメモリ使用状況を見る - はこべにっき ♨
    peketamin
    peketamin 2014/04/10
  • ボウリングゲーム - はこべにっき ♨

    ひますぎてボウリングゲーム実装してた。 coding-kata-bowling/Game.pm at master · hakobe/coding-kata-bowling · GitHub coding-kata-bowling/Bowring-Game.t at master · hakobe/coding-kata-bowling · GitHub これはCoding Kataの一種で、ボウリングゲームのスコア計算をするのが目的ではない。Coding Kataというのは、達人プログラマー―システム開発の職人から名匠への道などで有名な Dave Thomasさんが提唱した、プログラミングの練習法。このボウリングゲームのKataはアジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技などの著者であるRobert C. MartinさんのWebサイトに詳しいやり方が載

    ボウリングゲーム - はこべにっき ♨
  • ドメイン駆動設計読んだ - はこべにっき ♨

    エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子出版社/メーカー: 翔泳社発売日: 2011/04/09メディア: 大型購入: 19人 クリック: 1,360回この商品を含むブログ (130件) を見る ドメイン駆動設計読み終った。ドメインを中心に据えてソフトウェアを設計するための方法を教えてくれるだった。設計の話なので、抽象度が高く、なかなか読み辛いけど、良い話がたくさんでてくる。こので例にでてくるソフトウェアが経理システムだとか貨物の配送システムなどのエンタープライズよりだったので、はじめは自分のようなWebエンジニアとっては参考にしにくいかと思っていたのだけど、まったくそういうことはなく、たいへん参考になった。 ドメイン駆動設計でいうドメインとはソフトウェアが

    ドメイン駆動設計読んだ - はこべにっき ♨