タグ

ブックマーク / blog.monochromegane.com (10)

  • ペパボに入って4年が経った

    ペパボに入社したのは確か2012年の10月だったと思うので、かれこれ丸4年が経ったことになる。 転職のきっかけは、新卒で入社した地元の会社での業務の出張の多さと技術面の軽視が自分の考える働き方と合わなくなったからだった。とにかく技術でやっていきたいんだという気持ちはありながらも、その気持ちを消化できる企業がどんなものか分からず、悶々と転職サイトを見ていた気がする。ある日、福岡 おもしろい it 会社 みたいに思考停止甚だしい検索をして、まとめサイトに辿り着き、自社でWebサービスを運営している会社への転職というのが視野に入った。今にして思えばもっとよい探し方があったと思うが、新卒で1社しか見てないあの頃はとにかく世界が狭かった気がする。ともかくそのまとめサイトにあるおもしろい会社を上から順に調べていって当時のpaperboy&co.に行き着いた。 当時、福岡基盤チームを立ち上げていく時期で

    ペパボに入って4年が経った
    hfmgarden
    hfmgarden 2016/10/30
  • mrubyからSidekiqに非同期ジョブを登録するmrbgemをつくった

    ngx_mrubyでHTTPリクエストに対して非同期処理をしたかったので、mruby-sidekiq-clientという mrbgem をつくりました。 mrubyからSidekiqのジョブ形式でRedisに非同期ジョブを登録し、別途用意したSidekiqのサーバーが登録されたジョブを捌いていくという方式です。これにより、非同期処理は通常のRailsやCRubyのコードで書くことができ、mruby側の処理はシンプルに保つことができます。 使い方 RailsなどでSidekiqを使っている方にはお馴染みのやり方です。 1. 非同期ジョブにしたいWorkerクラスを定義します

    mrubyからSidekiqに非同期ジョブを登録するmrbgemをつくった
    hfmgarden
    hfmgarden 2016/01/31
  • 2015年のふりかえり

    仕事 今年は7月頃に2年ほど携わっていたチームから異動して新しい環境になったのが一番大きな変化だった。異動前にPHPバージョンアップを成すことができたし、新しいチームでは新機能開発しながらも技術的な課題がサービスの発展を妨げることのないよう、継続的な改善ができる体制を取ることができた。今のチームは最高で、お互いに敬意を払いながらも得意領域で活躍し、不足しているところを補い合えているんじゃないかと思う。ただ、チームとしての成熟は変化に反応するための柔軟性を失う可能性も含んでいるので、新しい目標、例えば新しい技術への挑戦とか持っている技術の深掘りとかお互いを刺激し合える環境というのをつくっていきたいなあと思う。 技術 2014年から引き続きGo言語一色の年になった。Top Go GitHub developers in Japanで3位に位置付けられてるのは素直に喜びたい。当たるか当たらないか

    2015年のふりかえり
    hfmgarden
    hfmgarden 2015/12/31
  • Goのデプロイを「もっと」簡単にする。ビルドプロキシCargo。改めTorokko。

    Goアプリのデプロイはバイナリをひとつ配布して完了なのでとても楽なのですが、バイナリ自体をどこで管理するかについては意外と頭を悩ませることになります。 Goを使うにあたって、コードさえあればあとはバイナリも簡単に配布できる状態というのが望ましいと思い、仕組みを作ってみました。 2015/08/16追記: CargoRustのパッケージマネージャーと名前がかぶってたのでTorokko(トロッコ)に改名しました! TorokkoはGoアプリのビルドと成果物ダウンロード用のAPIを提供するビルドプロキシです。 リクエストのURLで対象リポジトリ、GOOS、GOARCH、バージョンを指定します。 ビルドはDockerコンテナを用いて行い、バックエンドストレージに成果物が保存され、ビルドリクエストと同じURLでダウンロードを行うことができます。 Docker Hub の Automated Bui

    Goのデプロイを「もっと」簡単にする。ビルドプロキシCargo。改めTorokko。
    hfmgarden
    hfmgarden 2015/08/16
    デプロイ周り、こういう仕組みで集約出来ると便利そうだなー
  • Go言語での構造体実装パターン

    Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造

    Go言語での構造体実装パターン
  • Go言語でコマンドラインオプションをさくっと設定ファイル対応させるライブラリをつくった

    Goでコマンドラインオプションのあるツールを提供していると設定ファイルに定義できるようにしてほしいという要望が来ますが、意外とオプションと設定ファイルで定義が冗長になったりして煩わしいのでライブラリにしてみました。 conf+flagでconflagです。 いつものコードに 3行 追加するだけでコマンドラインオプションを設定ファイルに書いておけるようになります。 使い方 以下のような感じで、flag.Parse()を実行する前に、設定ファイルからflagに設定する値を呼び出すコードを追加します。 // フラグを定義します var procs int flag.IntVar(&procs, "procs", runtime.NumCPU(), "GOMAXPROCS") // コマンドラインオプションを解析する前に設定ファイルからフラグに値を設定します if args, err := con

    Go言語でコマンドラインオプションをさくっと設定ファイル対応させるライブラリをつくった
  • CSVテキストをMarkdown形式のテーブルに変換するツールをつくった

    Markdown形式のテーブル記法をいつまでたってもうろ覚えで、毎回検索したり、変換サイトにアクセスするのが面倒だったのでツールをつくりました。嘘です。Go書きたかっただけです。 使い方 CSVテキストを標準入力から受け取って整形済みのMarkdown形式テーブルを出力します。 $ mdt < hoge.csv | headerA | headerB | | ------- | ---------------------- | | short | very very long content | 連携 コマンドラインツールなので、pbpasteやAutomatorと組み合わせて好きなように使えます。 以下は、Automatorのサービスとして登録したmdtをGitHubのIssue作成時に呼び出している様子です。 便利っぽい。 機能 CSV/TSVに対応 タブ区切りにも対応しているのでエク

    CSVテキストをMarkdown形式のテーブルに変換するツールをつくった
    hfmgarden
    hfmgarden 2015/05/18
    便利
  • すべてが╭( ・ㅂ・)و ̑̑ グッ ! になる - Jenkinsビルドパイプライン結果をプルリクエストに表示する

    Jenkinsのジョブ結果をプルリクエストに表示するときはGitHub pull request builder pluginを使ってますが、単体のジョブでしか利用できなかったので、複数ジョブ(ビルドパイプライン構成)のときに結果を表示する方法をまとめておきます。 ビルドパイプラインの構成 今回のビルドパイプラインはこんな感じを想定しています。 プルリクエストへの更新やコメントをトリガーにジョブが起動し、単体テスト、回帰テストを実行します。 あわせて、実行中、失敗、成功の状態がプルリクエストに表示されます。 成功したらプルリクエストに ╭( ・ㅂ・)و ̑̑ グッ ! って出ます。グッ ! って。 これを満たす以下のジョブをつくっていきます。 ジョブの結果をプルリクエストに表示する 複数のジョブをビルドパイプラインとして実行する GitHub pull request builder

    すべてが╭( ・ㅂ・)و ̑̑ グッ ! になる - Jenkinsビルドパイプライン結果をプルリクエストに表示する
    hfmgarden
    hfmgarden 2014/11/10
  • Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。

    いまや高速パターン検索といえばag(The Silver Searcher)ですが、検索対象がUTF-8のテキストを前提としているため、EUC-JPやShift-JISといったファイルを検索するのに課題があります。 これまで、それらの日語文字セットを検索できるようにするため、色々とagの改造、公開を行っていました。 ag(The Silver Searcher)でEUC-JP/Shift-JISのファイルも検索できるようにしてみた 日語圏特化型ag -白金- の配備が完了しました しかし、特定の国の文字コードだけに特化した修正というのをmasterに取り込んでもらうわけにもいかず、派生ブランチとして追随するのも、やはり面倒… そこで年始にGo言語を触ったのをきっかけに、Go言語でパターン検索ツールをつくってみました。 せっかくなのでポストagを目指して、プラチナサーチャー(The Pl

    Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。
  • 日本語圏特化型ag -白金- の配備が完了しました

    かねてより開発を続けていたパターンマッチ検索sg (日語圏特化型ag) の配備が完了したので、その経緯と仕様を以下に記す。 開発経緯 パターンマッチ戦線に鳴り物入りで配備されたUTF8連合の誇るagだったが、極東戦線において、旧式日語文字セットを散りばめ潜伏するEUC-JP/Shift-JIS軍の極東迷彩の前に、その索敵機能を充分に発揮できないことが判明するや一気に劣勢化。戦線から離脱しつつあった。 事態を重く見たUTF8連合極東支部開発主任は、UTF8ディテクション機能を応用したEUC-JP/Shift-JISディテクション機能を追加、日語圏仕様の改良型を開発した。[開発コード legacy-0.1] 戦線投入のため、同支局によりHomeBrew化が加えられるも、入出力機構が従来型のため活躍の範囲は限定された。 後に入出力機構にiconvを組み込み、旧式日語文字セットの自動検出に

    日本語圏特化型ag -白金- の配備が完了しました
  • 1