にゃみかんてっくろぐ

猫か百合を見守る壁になりたい

変数名などの命名のお供に.Webサービス "Zenrei" を公開しました

Webサービス "Zenrei" を公開しました. GitHubのスター数上位のリポジトリから,クラス名・メソッド名・変数名の使用実績を検索できるサービスです.悩ましい命名のお供にご活用ください.

機能

  • 使用実績GitHubスター数上位リポジトリから,入力したクラス名/メソッド名/変数名の使用頻度・使用箇所を表示
  • 類語 … "calculate" - "estimate" のように,各単語の類語を表示
  • betaにつきRubyのみ対応

API

活用例

"calculate" にするか "calc" にするか

f:id:no_clock:20190302164834p:plain

"data" が複数形なので、 "datas" は使われていない

f:id:no_clock:20190302165148p:plain

ソースコード

GitHubに公開しています.あまり綺麗ではないです.

技術要素

言語・フレームワーク

  • フロントエンド: Vue.js + Bootstrap
  • サーバサイド: Go (Echo framework)
  • データベース: MongoDB, SQLite3(日本語WordNetのみ)
  • その他: Docker, Ruby(データ解析)

Vue.jsとGoは初でしたが,意外とすんなり出来ました.

クラス名/メソッド名/変数名の解析

ripperライブラリを使用しました.Ruby標準ライブラリで,ソースコードを与えるとS式にして返却してくれたりします.

類語の検索

日本語 WordNetを使用しました.SQLiteデータベースとして配布されており,synset(概念)というグループ化によって,類似する単語を探し当てることが出来ます.

なお,複数形・過去形などは原形(lemma)に戻して類語を調べています.これにはgolemライブラリを使用しました(GitHub: aaaton/golem).当初はwink-lemmatizerを用いてフロントエンド側で対応する予定でしたが,辞書サイズが大きくjsファイルが肥大化するためサーバサイドで対処しました.

細かいUI/UX

  • APIリクエストには一定の遅延時間を設定し,リクエスト数が過大とならないようにしました(lodashで実現).
  • APIリクエスト中はスピナーを表示させ,処理中であることを可視化しました.
  • レスポンシブデザインで環境が違っても大きく崩れないようにしました.