Go言語

形態素解析器 Sudachi の辞書が手に入ったので Go で遊んでみた

はじめに Sudachi はワークスアプリケーションズが絶賛開発中の形態素解析器で,Java で書かれています. 今一番新しい注目すべき形態素解析器で,次のような機能が特徴としてあげられています. 複数の分割単位の併用 必要に応じて切り替え 形態素解析と固…

goa tips : v1.3 で追加された HashOf のバリデーションを使う

はじめに goa のこと書くのずいぶん久しぶりになってしまいました. 仕事でも使ってて安定して動いていて,あんまり目新しいこともなくなってきて, API はこれで書くのが当たり前になりつつあり・・・. まぁ,そんな言い訳はどうでもいいんですが, うかう…

ANTLR のターゲットに Go が追加されたので Gogland とあわせて遊んでみる

概要 ANTLR ってのは,いわゆるパーサジェネレーターです. 去年の年末に出たバージョン 4.6 からターゲットに Go が追加されました . かなり昔に使ったことあったんですが,v4 になってだいぶ整理されて洗練された感じになってました. この記事は結構適…

Tips: goa で Consumes 指定したときはデフォルトの Content-Type タイプが読み込まれなくなるので注意

goa はデフォルトで json / xml / gob を受け付けてデコードしてくれるようになっているので特に意識することないと思うのですが,'application/x-www-form-urlencoded' とか,独自のデコーダー作りたいときとかには,Consumes 関数を API の中に書いて指定…

goa で Type と MediaType を混ぜないでうまく再利用する

概要 goa では レスポンスの形式を MediaType で定義します.一方,Type は Payload の形式などを定義します. MediaType は Type の特殊な形で,Veiw とか Link が増えたやつなので,Type の代わりに使えるんですけど, Type の代わりに使うと振る舞いが微…

vaaaaanquishさんの名前を間違えると指摘してくれる slack bot を goa で書く

概要 この記事は Go(その3) Advent Calendar の19日目に間に合わなかった今更ながらの記事です。 goa の紹介のために,slack の Outgoing-Webhooks を使って mattn さんの書かれた 「deeeetさんの名前を間違えると指摘してくれるbot」を goa で書くつもりで…

goa tips: 小ネタ (swaggerドキュメントの抑制とパラメータ必須要素について)

概要 goa のちょっとしたネタです. swagger ドキュメントに出したくない要素を抑制する swagger ドキュメントに出したくない要素を Metadata() を利用して抑制することができるようになりました. 特定の Resource を出力したくなければ Resource() の下で …

goa tips: swagger-ui がサービスできないときのドキュメントどうする問題

概要 goa は swagger ドキュメントを生成してくれるので,これを swagger-ui をつかってサービスしてやると API が分かりやすく,お試しも出来てかなりいいかんじになります.しかし,環境によってはサービスを立ち上げることが出来ないとか,ドキュメントを…

goa の controller を実装する

概要 goa のデザインが出来たら goagen でコードを生成しましょう. コードが生成できたら,次にコントローラ部分を書いていく必要があります.これはビジネスロジックにあたる部分です. というか,goa はデザインを書いて,goagen してコード生成後は,こ…

形態素解析器 kagome を Google App Engine で動かす

概要 kagome を GAE で動かしたいってのをチラホラ耳にしてたのですが,先日ついに issue が投げられたので対応してみました. 正確には UniDic をあきらめて IPADic だけ対応してる kagome.ipadic で動かせることを確認しました. 何が問題なのか? golang …

goa tips : swagger-ui を使って手っ取り早く API を試す

はじめに 折角 API を作ったら,簡単に試して,仕様も俯瞰的に確認したいものです. そんなわけで,今回は開発環境で使える swagger-ui の tips です. swagger-ui は swagger ドキュメントを閲覧するためのサービスを提供してくれます. しかも API コンソ…

goa tips : Type と MediaType を使い分けよう

はじめに MediaType と Type の意味を理解してを適切に使い分けましょう(自戒. よく間違えます.github の issue とか goa の slack channel にもよく質問が上がってます. MediaType はレスポンスの形式 MediaType は Type としても利用できますが,本来…

goa tips : Attribute と Param と Member は同じもの

はじめに API デザインの書き方を一通り説明したので,コントローラーの実装の説明する前に, goa の tips をいくつか取り上げたいと思います. という訳で,Attribute も Param も Member も,すべて Attribute のエイリアス関数で同じものなんです.という…

goa の API デザインの書き方 後編 (Resource と Payload)

概要 goa の API デザインについて,デザインを定義する4つの要素の概要説明の後半です. ✓ API … API サーバの定義 ✓ MediaType … レスポンスデータの定義 Resource … APIが管理するデータへのアクセス方法 / エンドポイントなどを定義 Payload … API に送…

goa の API デザインの書き方 前編 (API と MediaType)

はじめに goa の API デザインについて,デザインを定義する4つの要素について概要を説明します. API … API サーバの定義 MediaType … レスポンスデータの定義 Resource … APIが管理するデータへのアクセス方法 / エンドポイントなどを定義 Payload … API …

goa のインストールと実行

概要 goa は DSL で書かれた API デザインを goa のツールで変換してコードを生成します. そのコード生成ツールは goagen です.まずはこれをインストールして,実際に動かしてみるところまで説明します. 生成されるファイルとか,利用する API デザインに…

goa をはじめよう

はじめに goa ってのは golang で APIデザインを書くと,そこから API サーバのモックとかクライアントとかドキュメントとか一通り生成してくれるマイクロサービス用のフレームワークのことです. とてもすばらしいプロダクトなのですが,goa という名前のグ…

golang: goa勉強会を開催しました

connpass.com goa って何? goa ってのは golang で APIデザインを書くと,そこから API サーバのモックとかクライアントとかドキュメントとか一通り生成してくれるマイクロサービス用のフレームワークのことです. goa は golang のソースとして DSL が書け…

それはたぶんあなたの欲しかった名詞ではない

概要 形態素解析してテキストの中から名詞っぽいところだけを抜き出したい.ってのはよくある話だと思うのですが,単純にやるといろいろ混じってます. ( '-`).oO( そもそも抜き出してるのは名詞の形態素であって,名詞句じゃないもんな・・・. 名詞を抜き…

kagomeでNeologdを無理矢理つかう

概要 サポートしてるわけでもないし,テストしてるわけでもないんだけど,Hackしてくれるひとがいるみたいだからメモ.なにかあったらフィードバックしてくれるとうれしいです. 個人的な考えですけど,今時点でneologdをサポートするのはちょっと躊躇してま…

callbackでiteratorっぽくcommon-prefix search を直したらちょっとパフォーマンスが改善した

はじめに ikawaha.hateblo.jp これの続編です.callback関数を使うようにして,返値でヒープを使わないようにしたらパフォーマンスもちょっと改善しました. 背景 common-prefix search(共通接頭辞検索)とは「電気」「電気通信」「電気通信大学」というキ…

細かすぎて伝わらない「形態素解析器 kagome のメモリ周りの話」を pprof で調べる

はじめに きっかけは形態素解析器 kagome にいただいた Issue です. github.com 端的に言うと, 入力文字列に対して,前から1文字ずつずらしながら辞書引きを繰り返して,可能性のある形態素をすべて洗い出すんですが,その際に辞書を CommonPrefixSearch …

golang で形態素解析を並列実行させて Word Count する

はじめに kagome は goroutine セーフに作ってあるんですが,あんまり並列実行的なサンプルとか書いてないなと思って並列実行でテキストに出てくる名詞を引っこ抜いて数えるサンプルを作りました. あと,昨日 suzuken =san が 形態素解析をした後の品詞が取…

形態素解析結果のグラフをスッキリさせてみた

mecabって「フォード・モーター」を「フォード ・ モーター」(3token)にしたり「フォード・モーター」(1token)にしたりするのねこれは文依存なのか?? 文字(フォードとか)依存なのか??— はせがわ (@shunhase12) 2016年2月25日 こんなつぶやきを見つけた. …

golang で neologd の正規化処理を書いてみた(けどダメだった)

TL;DR neologd を使う前にしておいた方がいい入力の前処理があります. 今回はこれを golang でささっと書いてみようと思ってはまって投げ出した話です. neologd の wiki を参考に必要とされている正規化処理を順に見ていきます. Regexp.ja · neologd/meca…

kagome で UniDic を使えるようにするまでの紆余曲折

相変わらずコツコツ作ってる Pure golang な形態素解析器 kagome ですが,これまで IPA 辞書しか使えなかったんですけど,UniDic も使えるようになりました. バイナリサイズは若干大きくなりますが,辞書内包にしているので,「使ってる辞書何だったけ?案…

heroku に pure golang な形態素解析サーバをあげてみた

はじめに とりあえずやってみたという内容です.heroku 使うのも初めてなので,用語とか理解とかが違うところもあるかもしれませんが,作業ログがなにかの役に立てば幸いです.ツッコミあればお願いします! 前準備 heroku のアカウントをつくっておく必要が…

golang で勝手にさだベントカレンダー

はじめに これは,さだまさし x IT Advent Calendar 2015 - Qiita の17日目の記事ではありません. とても盛り上がってたので,golang で何かして投稿しようと思ったら,すでに埋まってしまっていました orz. そんなわけで勝手に「さだベントカレンダー」で…

golang で正規表現の必須要素を抽出してみる

はじめに この記事は Go Advent Calendar 2015 14日の記事です. 正規表現の必須要素の抽出についてお話ししたいと思います.古典的な話題ですし,鋭い方は golang と別に関係ないんじゃないの?と思われるかもしれませんが,最後に Russ Cox 氏の素晴らしい…

golangで bufio.Scanner を使うだけで日本語の文を1文ずつそれとなく切り出す

日本語のテキストから文ぽいところを抜き出すためのプログラムを作りました. いつも1行ずつ文字列を切り出すときに bufio.Scanner を使っていると思いますが, Scanner は区切りの方法をいろいろ変えることが出来る(標準でもスペースで切り分けられた単語…