40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

雛形を自動生成するRubyスクリプト書いた

書きたいネタはいくつかあったのですが、どうしてもコード書きたい気持ちのほうが強くついつい更新サボってました。

"以前書いたエントリ"以降、実際に手を動かしながら色々やっているうちにシングルコンテキストな書き方にも大分なれてきたのと同時に、RSSリーダーのようなビューワー的アプリをTitaniumで作る時の自分なりのフレームワークのようなものがボンヤリと見えてきたので、ちょっとまとめて見ました。

MVC的にファイルを分ける

以前からMVC的にファイル分割する方法は模索して、現時点でこんな感じに落ち着きました

  • app.js
  • /action
  • /ui
  • /model

app.jsは名前空間定義したり、action,model,uiのそれぞれのファイルをincludeするだけの処理に留める形で考えてます

Controller的な役割をactionディレクトリ配下にあるファイルに役割を担わせるようかと思っていて、ui,modelは名前そのままの役割を担うようにしています

雛形とあるディレクトリ、ファイルを自動生成する

必要なディレクトリ作成して、(function(){}).call(this)...とタイプするのが面倒なのと、「TitaniumMobileを使って15分で作るiPhoneアプリ」というデモを社内で行う都合もあって雛形とあるディレクトリ、ファイルを自動生成するRubyスクリプトを書きました

#init.rb
base_dir = Dir::pwd
dir_name = ["action","ui","model"]

js_template = ""
js_template << "(function(){\n"
js_template << "  //\n"
js_template << "}).call(this);\n"
js_template << "\n"
js_template << "Ti.include()\n"

dir_name.each do |dir|
  Dir::mkdir(base_dir + "/" +dir)
  if(dir=="action")
     fname = "main"
   else
     fname = dir
   end
  f = File.open(base_dir + "/" +  dir + "/" + fname + ".js", "w")
  f.write(js_template)
  f.close
end

使い方としては、TitaniumプロジェクトのResourcesディレクトリに移動してターミナルで

ruby init.rb

とすれば必要なファイルが自動生成されます。

すでにディレクトリが存在しているかどうか等の細かいエラーチェックを入れてないし、JavaScriptのtemplateとなる部分は別ファイルにしておいてそこから読み込むみたいな形にすればより使い勝手あがりそうな感じだけど、折角作ったのでコード晒しておくことにしました