読者です 読者をやめる 読者になる 読者になる

TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

WebアプリのUI自動化テストでNightwatch.jsを試す

Titaniumで作ってきたCraftBeerFanですが、Alloyで全面的に書きなおしつつこんな感じ↓でiOS7に対応させる作業を先日終えました ひとまず申請はして、現在Waiting For Reviewになってて、この合間にあまり手を入れてないCraftBeerFanのWebアプリの方を手入れ…

ExcelとOutlook連携なツール作る時にUnderscore.js使ってみた

自分の仕事柄、いろいろな人とアポ調整して、日程確定した段階で、その旨のメールを念のため送る作業が毎日発生します。 これまでは、手作業でやっていたのですが、現状、自分の業務落ち着いてることもあって、前から作ろうと思っていた、Excel & Outlook …

非プログラマーな人向けのプログラミング勉強会の2回目やりました

1回目やった時にブログ書き忘れたので今回はしっかり書いておこうと思います 実施の背景 CoffeeMeetingというサービスを使って色々な方と知り合いになる機会が増えてきたのですが「プログラミング出来るようになりたい」という方が2名いました。しかも2人と…

TitaniumMobileでmustache.js活用できないか試してみた

フロントエンドでHTMLをレンダリングする技術全般を黙々とハックするclient-side templating勉強会というイベントに昨夜参加してきました。完全に場違いであるのは事前にわかっていたけど、行ってみるとすごい人ばかり参加してたのと、知らないことが多く勉…

Ti.Database.open使って情報が読み取れない原因がわかりました

まずは現在困っていることのまとめ うちの会社で運営しているあすなろBLOGのビューワーアプリを作っているのですが、過去エントリについてはRubyで書いたクローラ使って収集済。そのため過去エントリについては、SQLite上にすべて突っ込んでおき、適宜そこか…

Google Fusion Tablesと連携する処理試してみた

TitaniumのAdventCalendarで@kinofumiさんが紹介してたGoogleFusionTablesですが 元となるデータをCSVデータ等からインポート出来るのはもちろん、Webインターフェース上でも入力できる 座標情報を格納するためのLocationというColumnがあり、地図上に手軽に…

はじめようTitanium+JavaScriptでスマホアプリ開発カフェという勉強会をやりました

※今回スイーツタイムにみんなに食べてもらったドーナッツは、nicoドーナツというこんな感じ↑のお店で買いました一昨日にうちの会社のイベントの一環で、Titaniumの勉強会やりました。Webデザイナーな人がもっと参加すると見込んでいたのですが告知手段がよく…

Google Reader用のTitanium モジュールをJavaScriptで作り始めました

タイトルそのままですが、CommonJSなスタイルになれる勉強も兼ねて作り始めました。前回のエントリで assetsフォルダ配下に、com.twitter.h5y1m141.googleaccount.js作ってコードを書く。 ということを書いていましたが、上記のcom.twitter.h5y1m141.googlea…

JavaScriptでTitanium Module作ろうと思ったらbuild.pyエラーになった原因&解決方法

http://d.hatena.ne.jp/kaz_konno/20111124/1322153970:title=という素敵なエントリを読んだのと、来週のTitanium勉強会の資料作成一応終わった段階だったので、試しにJavaScriptでTitanium Module作ろうと思ったらちょっとハマったので、ちょっとメモ build…

勉強会用のサンプルアプリで簡易Webブラウザ作りました

はじめようTitanium+JavaScriptでスマホアプリ開発カフェという形で、全6回にわたる勉強会をやることにしました 勉強会やることにした背景 今回参加者で想定してるのはHTML/CSSはわかるというWebデザイナーな人でこういう方に、少しでもスマフォアプリ開発…

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

書きたいネタはいくつかあったのですが、どうしてもコード書きたい気持ちのほうが強くついつい更新サボってました。"以前書いたエントリ"以降、実際に手を動かしながら色々やっているうちにシングルコンテキストな書き方にも大分なれてきたのと同時に、RSSリ…

tweetaniumのソースコードリーディング:model.js編

@donayamaさんに褒められたのでtweetaniumのソースコードリーディングの続き書くことにしましたwwUI部分についてこれ以上書けるほどのネタがないので、Modelに関連する所ちょっと取り上げようと思います ベースとなるmodel.js 「tweetaniumはTwitterクライ…

tweetaniumのソースコードリーディング

自分が作ってるアプリの参考になるかと思ってtweetaniumのソース読んでいました。全部をくまなく読んだわけではないものの、最終的には自分のアプリで応用するのは難しいかなぁと判断しました。ただせっかく読んだソースなので理解した内容をまとめようかと…

titanium でシングルコンテキストな書き方にチャレンジ

Capistrano勉強しようと決めてたのですが、@kaz_konnoさんが 私が #titanium でシングルコンテキストを使う一番の理由は、名前空間汚染を防ぐ事よりも、メモリ管理面、パフォーマンス面共に優れているからです。 http://twitter.com/#!/kaz_konno/status/118…

もぎゃさんが作ったユニットテストライブラリに変更した

Titanium関連で参考にしている情報源の1つのもぎゃろぐさんのTitaniumの単体テストを読み使いやすそうだったのと、自分が作っているアプリで、いまいち仕様が固まってない所があったのでテスト書きながらそのあたりの仕様を固める意味も含めてちょっと使っ…

画面下部までスクロールしたタイミングでTableViewの情報更新する

RSSリーダーやtwitterクライアント等でよくあるUIとして、画面下部までスクロールしたタイミングで、サーバ(もしくはローカルにキャッシュしてある)情報を追加して読み込むというのがあるかと思います。自分のこれまで作っていたアプリでは、このようなUIを…

ナビバーのボタンクリックで画面遷移出来るようになりました!

前回ブログ書いたすぐ後に TitaniumMobileで、window.animate({transition:xxxx},function(){}); ってやればコールバック関数呼び出せるんだー もっと早くこれに気づいてれば、この1ヶ月こんなに悩むことなかったけどこれで光が見えてきた!! twitterより …

画面遷移で最初・最後のページにたどりついた処理に悩み中

前回のエントリから2週間近く更新滞った理由というのは画面遷移で最初・最後のページにたどりついた処理に悩んでいるから。ButtonBarとして配置したボタンをクリックした時にイベント発火されて、該当のページに遷移するんだけど、そのページの表示が完了し…

051-Stateパターン使って画面遷移のロジック考える

前回の記事をベースにして、Stateパターン適用しようと思い骨格となる部分だけ考えてみました。デバッグし易さを優先したいので、Titanium Mobile固有のAPIを利用せずGoogleChromeの開発ツール上で動作確認してます。 var Page = function(page){ this.event…

マリオでStateパターン! 〜JavaScript編〜

先日書いたエントリで 現在のページ数チェックとどのボタンクリックしたのか判定しているため基本同じようなコードが存在して、スパゲッティコードになりそうなので、この部分の設計をしっかりしておかないと、後々大変になりそうなので、ここはちょっとじっ…

050-エントリ一詳細ページのイベントハンドラの処理その3

Googleの検索で、「Titanium xxxx」みたいな感じで思いつく限りのキーワードを入れて関連しそうな情報をチェックしたり、Githubでお手本になりそうなソースを探したりと色々なことをやってきて、これ以上進展がないかなーと思ってました。そんな状況の中で、…

049-エントリ一詳細ページのイベントハンドラの処理その2

Titanium Mobileで開発初めて、関連するエントリについては001から連番ふってきたけど、あと1つで50エントリ。自分の当初見込みでは30エントリ位でとりあえず形になるものを作る予定だったけど、全然見積もりが甘かったなーさて、ここから本題。先月書いた…

048-エントリ一詳細ページのイベントハンドラの処理

前回のエントリでボタンクリック時のイベントハンドラの処理で実装しないといけない点がいくつかあるとメモしておきました。 一番新しい/一番古いエントリかどうか判定した上で、適切なボタンを配置 エントリ一覧画面生成する際に、Ti.UI.createTableViewRow…

047-各エントリの画面遷移について考える

画面イメージについての考え BylineのようなGoogleReaderクライアントのような画面遷移出来るようなUIをどうにか実現できない考えています。 アプリケーション起動時にはエントリ一覧を表示(※下記画面キャプチャ1) エントリのタイトルをクリックすると、…

046-SQLite活用したJSON形式のファイルの保存・読込処理

SQLiteを活用してJSON形式のデータを保存できるようになったので、今度は読込について考えました。 実装方法に最初はまる SQLiteに保存する時に //省略 var res = this.db.execute( 'INSERT INTO entries (blogger,permalink,title,html_body,post_date) VAL…

045-MVCのControllerの役割を見直すその4

まず現在のJSONフォーマット 以前書いたエントリでは投稿した日付をIDとして活用すればいいかなぁと考えていたものの、何となく処理をやりづらそうな何とも言えないモヤモヤ感がしてました。twitterのAPIで返すJSON形式を眺めていたら、下記のような形式が良…

043-MVCのControllerの役割を見直すその2

今までEntryクラスでエントリ一覧のキャッシュの保存と読み出しをこんな感じするようにしていました Entry = function(){//略}; Entry.prototype = { saveCache:function(json,page_number){ /* ブロガー名+現在のページ数.jsonというファイル名で ローカル…

042-MVCのControllerの役割を見直す

エントリ情報をローカルにキャッシュすることは出来て、これで完成間近・・・と思ったのですが「Aというブロガーは何ページ目まで読み込んだのか誰(=どのクラス)が管理するべき?」という部分で疑問が出てきました。Entryクラスは、エントリ情報を管理す…

041-エントリ情報をローカルにキャッシュする処理実装しました

前回のエントリで下記のようなことを書きました。 ※このブログを書き始めてコード読み返していて気づいたのですが、ローカルのキャッシュ処理する際にブロガー毎にキャッシュするようにしてないから、この部分は別途書きなおす必要が有る。。 Titanium.App.E…

040-insertRowAfterは利用せずTableView.setDataを活用するやり方に切り替えました。

タイトルそのままですが、insertRowAfterにこれ以上固執してもうまくいかない気がしてきたので違うやり方を検討しました。 TableView.setData(data)を活用した処理の流れ 自分はまだ1.5.1使っているのでこのTitanium Mobile のAPIドキュメントを改めて読んで…

039-insertRowAfter使った処理がうまくいかずにはまってます

CreateTableViewのreceive()は、エントリ一覧のオブジェクトに加えて、iPhone上で何ページ目が表示されているのかそのページ数を受取、2ページ目以降ならば、TableViewのinsertRowAfterメソッドを使って、rowを動的に追加しようと考えました。結構簡単にでき…

038-MVC的に分割しはじめました

Titanium Mobile使ってアプリ作るときに、MVC的にクラスをわけるのがどこまで効果があることなのか正直わかっていません。ただ、下記2点を考えると、個人的には「アリ」かなぁと思っています。 今つくっているアプリ以外にも、GoogleReaderとかGitHubリーダ…

037-次のxxx件を読み込む処理の実装は半分完成

実際に実装しはじめると自分のスキルの無さを痛感してます。。。簡単に出来ると思ったけど最後の最後でうまくいかないのでその点についてまとめておきます 処理の流れについて簡単 アプリ起動。5件分のエントリを表示 「次の5件を読み込む」という箇所をクリ…

036-次のxxx件を読み込む機能について考察

RSSリーダーのようなアプリの場合、起動時に数件読み込み、ボタンクリック等のイベントをトリガーにして次のxx件を読み込むというのはよくある処理だと思うのでこれについて考察してみました そもそもaddEventListenerはどこに仕込むのか 自分は最初この部分…

035-iPhone側のページング処理考える前に記事一覧→記事詳細表示の実装を行う

記事一覧から、記事詳細情報を表示する Sinatraで生成したJSONをxhrで読み込み→TableViewで記事一覧生成→clickイベントで、記事詳細情報に画面遷移までやっと出来た! twitterより とtwitterでつぶやいたように下記のような画面遷移する処理までは出来てまし…

Google Readerライブラリ作成中

タイトルそのままですが、Google Readerの情報を簡単に取得できるようなライブラリを勉強をかねて作成してます。出来栄えとしてはまだまだですが、こんな感じでGoogleReaderに登録してあるフィードの一覧がJSON形式で出力できる所まではわかってきたのですが…

Google ReaderもOAuth認証使えそうなので方針変更

nodejsでGoogle Readerにアクセスするサンプル書いたけど、折角なのでこれをベースにしてnode.js or Titanium活用してiPhoneアプリを作ってみようか考えたのですが、コードの見通しが悪く、後々大変になりそうなのでこの数日手直していました。具体的には、T…

node.jsからGoogleReaderにアクセス出来ないか試してみた

GoogleReaderのAPIは公開されているわけではないのですが以前にも何度かお世話になったGoogle Reader APIの叩き方のエントリを読みながら、node.jsからGoogleReaderにアクセス出来ないか試行錯誤しています。 GoogleReaderAPIは以前よりも簡易になった? 非…

ADOの処理を自分好みにしてみた

データ抽出、加工のために個人的に作ったツールがあるんだけど、WSH(JScript)+ADOを使ってDB(Oracle)接続する処理をもっと使い勝手をよくしたいと思って長年勉強していたら、こんな感じのソースが書けるようになってきました。(配列やハッシュの扱いをRub…

データを塊で捉えることが出来るようになった

5年以上前の自分はVBScript/ASPでちょっとしたツール作っていたことがあるのですがDB上のレコード1つ1つという単位でモノゴトを捉えていました。そのため、配列とかDictionaryオブジェクト(ハッシュ)の使い道が全然わからなくって「これはいったいどうい…

WindowsでもGoogleReaderのスターの付いたエントリ→Evernoteの連携出来ないか考えてみた

前に複数のURLの情報を読み取って一気にEvernoteにクリップするAppleScriptという内容を書いていたのをベースにして、会社のブログの方でGoogleReaderでスターを付けたエントリをまとめてEvernoteへ自動クリッピング(ただしMac限定)と書いたらこの類のEver…

デザパタのBuildeパターンの使い方がやっとわかった

はてなのnaoyaさんが書いたprototype.js でデザインパターン - Builderを読んだ当時は、デザインパターンっていうのが正直何なのかがよくわからなかったし、このJavaScriptのソースコードで意図していることがわからなかったので「ふーん、何か便利なんだろ…

何故か急にTDDなやり方がしっくり来るようになった。

早朝6:00頃に家を出て、出社するまで何をしているかっていうと、ひたすらコード(プログラム)を最近書いてます。何故かわからないけど、自分のなかで何かがハジけたっていうか、急に「わかる」ようになった感覚が芽生えて、TDD(テスト駆動開発)なやり方が…

業務用のツール開発にも利用出来そうなjQueryのプラグイン

出社前に、Incsearch.jsというライブラリのソースを読んでいますCommentsAdd Starで書いたけど、日々お会いしてきた人の管理用のツールを開発しているのですが、社内の基幹システムからデータ抽出した結果は単純な表形式にする方向ではいるのですが、「日々…

出社前に、Incsearch.jsというライブラリのソースを読んでいます

自分の本業であるキャリアカウンセリングで面談対応した求職者を、何らかの形でグルーピング化して管理するためのツールをどうにかして開発したいというのが長年の(っていってもここ1,2年の話だけど)テーマ。どういうことか具体例を書くと例えば一口にプロ…

WSH上でPrototype.jsを使って楽しよう

~2013年6月14日追記~ 最近は、Prototype.jsではなく、Underscore.js を使って似たようなことをしています。詳しくはこちら Windows上でちょっとした作業の効率化のために、WSH+JScriptでツール作ったりするのですが、Prototype.jsのパワーを借りてもっと…

今まで冗長なソースの書き方をしていたことを学んだ

今朝もC言語によるはじめてのアルゴリズム入門 改訂第3版のパスカルの三角形というお題にあったCのサンプルソースを読んでJavaScriptでコード書いていたけど今まではこんな感じで書いてました Pascal = function(num) { this.num = num; }; //この後にprotot…

集合知プログラミングをPrototype.js活用してJavaScriptで実装したことをふと思い出した。

お盆休み中は流石に自分の仕事は一段落つける時期で、こんなにゆったりとした気分になるのは昨年の秋口以降味わったことがないので、今週くらいはのんびりと過ごしたいなぁーと思いつつ、こういうタイミングをうまく使って自分の仕事の生産性をより高めるた…

ユークリッドの互除法をJavaScriptで実装した

C言語によるはじめてのアルゴリズム入門で、アルゴリズムの勉強をしはじめたけど、そのままC言語で書くのもあれなのと最近までJavaScriptの勉強していたから、がんばってJSで実装してみた。 Euclid = function(a, b){ this.value1 = a; this.value2 = b; }; …

勉強会の予習を。

会社のブログにも書いたけど、2週間に一度の読書会をしていて、そのための予習をしなければ...と思いつつも、平行して違う勉強会の予習にとりかかってしまいました。そっちの方はうちの会社から仕事していただいてる方に講師をつとめてもらって" target="_b…