ACLをどうにかしたい話(2)

どうにかしたい話(1) がもう4ヶ月前? なかなか先に進まない、というかちょっと気合い入れて手をつけられる時間が取れないと結構しんどい物があって。まあ正月休みはわりといろいろ書きかえたんだけど、基本的には rubocop に怒られまくったところを直して直してという作業でした。

ACL Interpreter Gem

……というようなのをいろいろやってみたあげく、このまま自分の懐で寝かせてしまうには勿体ないかな…と思い始めた(という程度には手をかけた)ので RubyGems.org で公開してみました。

こんなニッチなツールに需要あるんかいなと言う思いをぬぐえませんが、1日1件くらいのダウンロードがある模様です。Gemの情報ってなんかでないのかと思って探してたら BestGems ってサイト見つけたんだけどここおもしろいね。

ACL Validater Web Frontend

まあ公開して思ったわけですが、README みる程度でコレ使おうとかダウンロードしようとかなかなか思わないよなあ、と。もうちょっとサンプルとか何かないと何ものだかさっぱりわからん気がするよね。というのと、

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

を読んでいて Sinatra 面白そうだなあという興味が重なったので、ACL Validator な Web Frontend も作ってみました。

作ってみただけなので((CiscoAclIntp は git head じゃないと動きません…。LOAD_PATHとかいじって開発中のヤツ使うようにしちゃってるので。))まだまだ中身がない…。というか HTML もだいぶ忘れちゃってるし。何をどうしたものやら手探り感満載。

今のところこんな感じになります。単純に cisco_acl_intp/tools/check_acl.rb にガワかけただけっていう状態ですね…。せめて Syntax Error のたぐいがある程度わかりやすく見えないと validator としてはなあ、というのがあってそこはちょっと機能追加してみたりしました。画像は cisco_acl_intp/acl_examples/err-acl.txt を食わせたときの物です。エラーメッセージおよびエラー箇所(赤いところ)がわかるようになってるかと思います。

入力した文字列に対してどこが間違えているのかを確認しながら ACL を編集するというユースケースを想定しているので、繰り返しチェックができるようにしてあります。が、エラーの場所をわかりやすくするってのがなかなかねえ…。根本的な問題として、Parse している都合、ACLヘッダを元にどういったACLオブジェクトを作るかとかが回ってるので、ACL ヘッダが読めないとどうにもならないというのがあります。ACLヘッダのエラーについては、エラーメッセージ見ながら直すしかないです。

名前付きACLの場合、ACLヘッダをミスってるとACL全体がエラーになっちゃうってのがあって、うーんと思ってたんだけど、行単位でヘッダ書く番号指定ACLの方でヘッダエラーがあるとその行がどこのACLの物かとか拾えなくなって宙ぶらりんになるのでそっちの方がアレかな…と思い始めた。名前付きのはまだヘッダ/ボディの範囲がわかりやすい…。

これから

普段テキスト処理な CLI ツールばっかりいじってるもんだからこういうフロントエンド周りの技術が全然無いのでこの辺は時間差がしてもうちょっと見ていきたい。機能的にはもうちょっと中身をいろいろつけたいところ。条件入れてマッチするエントリの検索とかね。という当たりでやりたいことを元に parser 側の機能追加を考えようかと。

まあ作ったところでコレを仕事に使うかとかそういうのはなく、

  • どうせ作るなら(自分以外にも)意味がありそうな物を
  • どうせ作るならいろいろ試せそうな物を
  • どうせ作るなら自分のスキルを広げられそうな物を
  • どうせ作るなら飽きずに継続させられそうな物を(自分以外からの外圧がかかればなおよし)

という条件と合致しているので、プログラミングの勉強の題材としてちょうどいいから…という状態でやってる感じですが、まあもうちょっと続けてみたいと思います。他にも作ってみたい物とかはあれども、なかなか手が出ないんだよなあ……。

こういうアプリ(UI)をもっとイマドキな感じにする Web 系の技術とか誰か教えてくんないかなあ。現状ただの CGI だし。