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

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

javascript

AngularでRxJSが使われる理由がわからず色々調べたら腹落ちした

はじめに ここ半年ほど、とあるWebサービスの管理機能をAngular6/7系で書いてます。 AngularでサーバーサイドのWebAPIと連携する処理を書く時に以下のようなロジックになるかと思います。 import { Injectable } from '@angular/core'; import { Observable …

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…