Hatena::ブログ(Diary)

mitoma_ryoの日記 RSSフィード

2015-04-04

勉強会の資料を作っている

17:35 | 勉強会の資料を作っているを含むブックマーク 勉強会の資料を作っているのブックマークコメント

昨年、会社のブログで「Rails複数DBシステムMySQLからPostgreSQL移行物語」 http://www.techscore.com/blog/2014/12/05/rails_db_migration/ という記事を書いた。

エンジニア的に難易度が高く、かつ評価の難しい案件の後日譚だったため、賛否両論だった。

これについては自分自身が「よくやったよなぁ」「ここまでやる必要があったのかなぁ」みたいな両方の気持ちを持っているので、あの記事を読んだエンジニア達が賛否どちらの意見を持つのも正しいと思っている。

私の上司などは「後からわかった事実でベストはこうだったというのは誰にでも出来ることで、我々は当時自分たちの知りうる知識の範囲で最善と判断した選択をしたことに間違いないし、実際それでうまくいった。なのでこの件についてどのような批判があっても耳を貸す必要はない」という結論に至っており、それはそれで我々の立場として正しいよなぁと思ったりもした。

今度「Railsをのりこなせ!」 https://riding-rails.doorkeeper.jp/events/22793 という、いかにもRailsをのりこなしている猛者どもが話をしそうな勉強会にて、この後日譚を整理して話そうとしている。

私としてはこの記事の内容をそのまま話すだけではブログを読めば済む話だし、どう話を膨らますべきか難しいので悩んでいる。今の本業が Ruby on Rails からちょっと離れてしまっているのもちょっと気後れさせるところではある。

資料を作っている最初の段階でどういう資料を作るべきか悩んでしまったので、気持ちの整理にちょっと日記を書いてしまったというのがこの記事の位置づけである。

2014-04-27

eclipseで長い文字列書くとき

11:38 | eclipseで長い文字列書くときを含むブックマーク eclipseで長い文字列書くときのブックマークコメント

Javaで長めのJSONとかXMLとかSQLの文字列書くとき

String longXml = ""
+ "<body>\n"
+ "  <div>\n"
+ "    <p>こんにちは</p>\n"
+ "  </div>\n"
+ "</body>\n";

とか書いてからeclipseのコードフォーマッタで整形かけたら

String longXml = "" + "<body>\n" + "  <div>\n" + "    <p>こんにちは</p>\n" + "  </div>\n" + "</body>\n";

こんなふうに一行になって発狂します。

String longXml = ""//
+ "<body>\n"//
+ "  <div>\n"//
+ "    <p>こんにちは</p>\n"//
+ "  </div>\n"//
+ "</body>\n";

こんなふうに、コメントでガード入れるとフォーマッタが勝手に一行にしないので心の平穏が保てます。

ただ、実現したい機能と関係ないところにこだわるあまりくだらないテクニックを使ってる自分へのいらだちのようなものが残ります。

また、フォーマッタのためにこんなコメント入れてるのことを理解しない読み手は多いので、みんなでコードを書くときにはやっぱりいい手ではない気もします。


自分の美学とチームのベターが対立するときは、チームのベターに従いましょう。

自分の美学をチームに説明して、みんながいいねといった時にはそれをチームのベターにしましょう。

みんながいいねと言わないのに自分勝手な美学を自分だけ実践してると、不幸が訪れる。


コードを書いてる時にふとしょうもないことが気になると上記のように思考が発散し、目的のコードはなかなか書かれなくなる。無念。

2014-04-06

OpenGLベースのテキストエディタKashiki

23:34 | OpenGLベースのテキストエディタKashikiを含むブックマーク OpenGLベースのテキストエディタKashikiのブックマークコメント

KashikiというOpenGLベースのテキストエディタをかれこれ一年ほどチマチマ開発している。

これが動作画面

f:id:mitoma_ryo:20140406222846p:image

バイナリ置き場のURL(Windows/Linuxで動作確認済みバイナリがあります(Java8のインストールが必要))

http://kashiki.tombo.in/

ソースコードgithubにあります

https://github.com/mitoma/kashiki

ローカルのgitの記録を見たら2013年05月29日が初回コミットだから、本当にチマチマとした開発だ。それなりに実用できて世に出せるレベルになったら公開して…なんて考えていたら全然開発が進まず今まで来てしまった。自分一人でemacsキーバインドの実装を考えたりOpenGLの基礎から調べて…、なんてやってるのだから一年たってもお察しの通りの完成度だ。

30もとうに過ぎたオッサンが一年近くソースをいじくり回して「むずかしいよう」とかつぶやいてるわけだ。つまり、あんまりな感じなのである。このままでは定年になっても完成する気がしない。

なので、途中でもいいから公開してしまって悩めるオッサンにアドバイスをお願いしたいわけだ。

とはいえ、オッサンがどういうテキストエディタを目指しているのかわからないと「vimでええやん」とか「sublime textこそニューエイジ」とか言われて終わってしまうので、このエディタのコンセプトをかいつまんで説明すると以下のようになる。

  1. テキストターミナルのように文字主体UIにもかかわらず
  2. 文字はすべてOpenGLポリゴンで扱われておりでなめらかなアニメーションをする
  3. emacsキーバインド愛する人間が文書入力しやすいエディタ

どうだろう。オッサンとしては一部の人間にはかなりキャッチーなコンセプトだと自負している。

あと、これはコンセプトではないが、Java8 / JOGL で開発しているので Windows/Linux で動作する。多分Macも動作すると思うんだけどMacは持ってないからわからない。

ライセンスMIT。理由は、今一番敵の少ないライセンスだと思うからである。

困っていることややりたいことはこれからIssueに登録していこうと思ってるけど、だいたいこんなものに悩んでます。

  • ドキュメントの横幅が画面に収まるような自動調節機能(座標の簡単な計算方法が思いつかない)
  • でっかいファイル開くとパフォーマンスがアレ
  • IMEの真面目な対応
  • emacsでいうミニバッファ的なUIを作る(今はファイルを開こうとするとSwingダイアログが出る!!)
  • プラグイン機構とか

誰かお助けくだされ〜!!

話は変わって、フィギュアスケート。今季はほんとに町田くんがメインストリームにおどりでてきた感じですね。twitter見てても「俺達の町田」という呼ばれ方で親しまれているようで。

羽生くんは、エキシビジョンでネタプログラムを組めるようになれるかどうかがポイントですね。ネタプログラムができてこそ超一流だと思います。

kjw_junichikjw_junichi 2014/04/18 06:22 こんにちは、Macで動かしてみたら動きました。残念ながら、私の環境では、ことえりとGoogleの日本語入力を試してみましたが、日本語は入力出来ないようでした。
動きが滑らかでびっくりしました。
今後を楽しみにしています!

mitoma_ryomitoma_ryo 2014/04/19 00:10 こんにちは、Macで動かしてみて下さったんですね。ありがとうございます!
残念ながら、こちらでは動作確認はできないので状況はわからないのですがバグ登録しておきました。
IMEの入力周りは改善が必要だと思ってるのでそのあたりの改修でなおるかもしれません
https://github.com/mitoma/kashiki/issues

ゆるゆるとした開発ですが、気長に応援してくださいまし〜。

2014-03-08

Javaで型安全にプロパティファイルにアクセスするには。その3

22:23 | Javaで型安全にプロパティファイルにアクセスするには。その3を含むブックマーク Javaで型安全にプロパティファイルにアクセスするには。その3のブックマークコメント

ponto (https://github.com/mitoma/ponto)の機能をちょっとずつ増やしています。

githubで一人開発をしていると圧倒的な自作自演感があるのですが、これはこれで結構楽しいです。

最近追加した機能は以下2点

プロパティファイルって、環境毎に切り替えたい値って結構ありますよね。DB接続文字列だったりホスト名だったり。

Ruby on Rails ではそういう時、環境変数で RAILS_ENV=production みたいなのを与えてやって、読み込む設定ファイルを切り替えるっていうことをしていて、それが便利なので Ponto にも組み込んでみました。デフォルトでは PONTO_ENV という環境変数によって、プロパティファイルを読み込んで、そのキーに書かれた値を上書きします。

例えば ponto.properties というプロパティファイルを読み込むクラスを生成して PONTO_ENV=production で実行してやると ponto_production.properties というプロパティファイルも読み込み ponto.properties よりも優先してするようになります。

先日追加した、プロパティファイルの値をint, longなどに型変換して取得できる機能の強化です。

今まではプロパティファイルのなかで value._int=hogehoge と記述していたら盛大に実行時エラーになっていたのですが、これじゃやっぱり型安全性に乏しい感あるよなということでコンパイル時に検査をするようにしました。プロパティファイルをクラス生成後に書き換えたり、先の環境変数で読み込んだプロパティファイルで上書きする機能を使うと結局実行時にエラーでるよなという話もあるので、このあたりはどのへんまで検査するかのバランスが難しいです。


あと、コンパイルエラーが出た時mavenだとコンソールにエラーが出ない件が最悪感漂います。うーん。

そもそもいつリリースするか、バージョン 0.0.1 でリリースするか 0.1.0 か 1.0.0 かで悶々しています。

  • その他
    • ウクライナ情勢、調べれば調べるほどロシアあんまり悪くないように思えるし欧米が邪悪な感じする。
    • 高橋選手、怪我で世界選手権欠場。このまま引退となってほしくないですね。
    • 佐村河内先生、ちょっとアウト感漂う会見でしたね。今回、一番割り食ったの高橋選手なのに一言もないのはひどいですね。

2014-02-19

Javaで型安全にプロパティファイルにアクセスするには。その2

21:59 | Javaで型安全にプロパティファイルにアクセスするには。その2を含むブックマーク Javaで型安全にプロパティファイルにアクセスするには。その2のブックマークコメント

先日、Javaで型安全にプロパティファイルにアクセスするアクセサクラスを生成するAPTライブラリを紹介しました。

https://github.com/mitoma/ponto

おかげさまで反響は全くなかったのですが、そもそも型安全というには結局プロパティファイルから取れる値全部Stringだし微妙だなーって感も漂っていたので、

setting.key1=value1
setting.key2._int=123
setting.key3._long=123412341234
setting.key4._float=123.123
setting.key5._double=123123.123123
setting.key6._date=2014-01-01
setting.key7._timestamp=2014-01-01 01:02:03

こんな感じで型を指定したらきちんと文字列以外の型で取ってこれるように機能を追加しました!

これで、「プロパティ名のキー指定間違いをコンパイル時にエラーとして検出できる」という意味での型安全に加えて「プロパティファイルの値を宣言した型のオブジェクトとして取ってこれる」という意味での型安全も追加することができました。

折しも、Twitter上では型安全についてSmalltalkを知る人や関数型を志向している人たちによる、なんかよくわからない型安全性とはなんぞ議論が盛り上がっております。

おっさんは、コンパイル時に問題を検出できりゃそれは型安全だな〜ぐらいの適当な気持ちでこの言葉を使っているので間違っているかもしれません。

あと github に上げただけでまだ public な maven リポジトリに上がってないしバージョンは 0.0.1-SNAPSHOT だし、ペーパーウェア感漂ってる。どうしよう。

話は変わるけど高橋大輔選手、現役最後の演技が佐村河内先生のせいでかなりスルー気味な報道になってるのが無念でならない。

Connection: close