サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
ponpoko1968.hatenablog.com
新しい技術に挑戦するとき、検索エンジンとかでその技術について書かれたページを探して、ブラウザでたくさん開いていきますよね。調べているうち、タブがいっぱいになってしまって、ブックマークしようにもページがいっぱいで重要な情報がどれだか分からなくなってしまったり、そもそも1ページごとにブックマークを記録するのは面倒で、結局忘れてしまったりすることもありがちです。 そこでChrome拡張のOneTabを使った情報の整理と保存の方法を紹介します。 chrome.google.com OneTabはそのブラウザのウインドウで開いているタブをすべて閉じて、1つのページのリンク集にまとめてくれるChrome拡張です。 OneTabをインストールすると、漏斗の形のアイコンがツールバーに追加されます。 このボタンを押すと、そのウインドウ上のタブへのリンクが一枚のページにまとめられます。 このページではリンクの
先日のブログ記事でも紹介しましたが、加藤耕太氏(id:mi_kattun)の著した「Python クローリング&スクレイピング」という本のレビューをお手伝いさせていただきました。この本のご紹介をしてみたいと思います。 Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者:加藤 耕太技術評論社Amazon 日々ITの仕事していると、定型的なデータを提供するためのサイトにもかかわらず、データそのものが単なるWebページとして表現されていることに出くわします。 エンジニアとしては、 「なんでもっとマシンリーダブルな形式でデータを公開してくれないんだろう?」 と思うものですが、嘆いたところでこうしたページがすぐになくなるわけではありません。 本書はこうしたサイトを巡回(クローリング)してWebページを取得し、そこから定型処理可能な状態として取り出す(スクレイピ
この記事は「フリーランス残酷物語 Advent Calendar 2016」 16日目の記事です。 独立してかれこれ3年になりますが、おかげさまでお客様にも恵まれ、実際のところそんなに残酷な目に遭ったことはないです。このエントリもどっちかというとフリーランス残酷物語と言うより、フリーランスから見た「成長し損ねてただの零細企業になっちゃったベンチャー企業あるある」みたいな話ですけど、フリーランスに限らず、エンジニア人生と会社の関係について考えさせられる出来事があったので、書きます。 単なる愚痴・悪口やポエムにならないよう、残念なエピソードからも出来るだけ前向きな教訓を伝えられるよう、荒い言葉を使わずエンジニアになって日が浅い人の役に立てばと思って書きました。特定の個人や団体を誹謗するつもりは毛頭ありません。参考になれば幸いです。 (まあ、波風は立てたくないんですけど、たまにはアカンものはアカ
今日のiOSアプリ開発では、アプリのプロトタイピングを何度も繰り返し、UIの使いやすさを練ってから開発することが一般的です。 スタートアップなんかだと、こうしたプロトタイピングのサイクルを高速で回すために、プロトタイプのデモにはPrott、InVision、デザインはSketchやZeplinで受け渡したりして、企画・デザイナー・エンジニア間のコミュニケーションコストを下げるのはあたりまえのように行われています。 (Photo by Samuel Mann on Flickr) しかし、上記のようなモダンなツールが導入出来ない現場のほうがいまだ多数を占めると思います。 とはいえ、プロトタイピングをせずに机上の設計だけで作られたアプリなど、ロクなものにはなりません。 そこで、上記のような態勢がくめない開発案件で、プロトタイピングを開発プロセスに取り入れたい場合は、Storyboardを使って
QuickPaymoとは? 以前のエントリーでご紹介したように、筆者は日々のタスク時間の記録・集計に、Paymoというサービスを使っています。 ponpoko1968.hatenablog.com www.paymoapp.com Paymoにはもともと計時用のデスクトップアプリが用意されています。 しかし、定期的に測定するタスクの計時を始める場合、すべてのプロジェクトとタスクの中から毎回選択する必要があり煩雑に感じていました。 そこで、あらかじめよく使うタスクだけをリストアップして、こまめに計時できるようなアプリを作ってみました。 github.com 使いかた paymoに登録しているメールアドレスとパスワードでログインします。 ログインしたら、このアプリのメイン画面である、登録したタスクの一覧画面が表示されます。 左端の「▶」ボタンを押すと、計時が始まり、下の画面のように、画面の下部
昨年5月末で会社を退職し、一年が経とうとしています。 おかげさまで複数の会社からお声がけいただき、iOSアプリの開発を中心にお手伝いしている状況です。 一方で案件が一部同時並行することもあり、プロジェクト進行にまつわる諸々の情報を整理する必要が出てきました。 試行錯誤しましたが、一年間クラウドサービスを使った情報管理を試みてみて、割とうまくいく形が見つかったように思うのでご紹介したいとおもいます。 プロジェクト管理ルール まず最初に、GTD的な意味で「プロジェクト」とみなせるもの(お客様からの依頼、自分が個人的に進めていること、成果物を伴う技術調査)をすべて列挙し、番号を振って管理することにしました。 ソースコード、メール、資料などプロジェクトにまつわる情報はそれら番号に基づいて各種クラウドサービスで管理しています。 プロジェクト一覧はgoogle spreadsheetという表計算アプリ
はじめに 私にはエンジニアとして大きな影響を受けた人がいます。今日はその人、Iさんの話をします。 出会い 新人研修がおわって、私は当時世間で話題となっていた、人工知能・エキスパートシステム関連の案件を扱う部署に配属されました。 ponpoko1968.hatenablog.com もともと毛色の変わった言語や珍しい機種のコンピュータに触れたいと志望していたので、希望を叶えてもらった形の配属でした。 そこで出会ったのがIさんでした。Iさんは契約社員という形で会社と直接契約し、机をもらって常駐しているエンジニアでした。 僕はIさんの隣の席に座ることになりました。 出会った当時、IさんはPC-9801で動く自社プロダクトの開発を担当していました。Iさんは社交的な性格で、時折若いエンジニアがIさんの机にやってきて、DOSに関する技術的な質問やら、世間話をしていきました。 私が本を読むのが好きだとい
以前、このブログではClangのコード補完機能を使ったEmacsの自動補完機能を紹介しました。 ponpoko1968.hatenablog.com 時は流れ、時代はSwiftです。 XcodeでSwiftを書く際、XcodeはXPCという仕組みを用いて、sourcekitdというデーモンと通信することで、コード補完などのプログラミング支援を行っています。 sourcekitdとの通信内容は非公開*1ですが、JP SimardさんというRealmの開発者の方が、sourcekitdをリバースエンジニアリングして一部プロトコルの解明を行い、sourcekittenというCLIを開発されました。 このソフトを使うことで、Xcode以外のソフトウェアからもsourcekitdの機能を使うことが出来るようになりました。 github.com Emacsでこの機能を使えるように、sourcekitt
HabitRPGとは HabitRPGは、ロールプレイングゲーム感覚でタスクを管理するWebサービスです。 タスクを実行すると経験値やゲーム内通貨がもらえて、アイテムを買ったりしてキャラクターを育てていくゲーミフィケーション要素がそなわっています。 Habitica - Gamify Your Life www.lifehacker.jp こういう発想で作られたサービスは機能が中途半端であまり実用的でない印象もあるかと思いますがタイトル通り、私の用途には結構あっていて習慣化できたようなので、紹介してみたいと思います。 導入手順・チュートリアルの説明をまとめてくださっている方がいらっしゃいます。 nkn-memo.hateblo.jp タスクが習慣、日課、やるべきことに分かれている HabitRPGの良い点は、タスクが習慣・日課・Todoの3種類に分かれていることです。 これらの違いを下表に
以前、UIWebViewを使ったアプリで、ユーザーが行うページ遷移操作を制御する方法について記事を書きました。 iOS8から、WebKit Frameworkが導入され、UIWebViewよりも細かな制御が出来るようになりました。 WebKit Frameworkでは、WKNavigationDelegateというプロトコルが導入され、リクエスト発行前と、レスポンス受信後にページ遷移するかどうかを決めることが出来るようになりました。 上の記事と同様のことは、当然WebKit Frameworkでも可能です。 WKWebViewのインスタンスにnavigationDelegateとというプロパティがあるので、 -(void)loadView { [super loadView]; self.webView = [[WKWebView alloc] initWithFrame:self.vie
Facebookでつながっている近しい人たちには共有していたのですが、本年の5月末日をもってKLab株式会社を退職していました。 今年の4月に会社の名前を冠して本を出させてもらったり、KLabの社員で退職エントリーを書いたひとを見かけないのでどうしようか悩んだ*1んですが、退職から実質6ヶ月も経ち、一生に何回もあることでもないし、一つの区切りと思い退職エントリーを書いてみようと思い立ちました。 入社の経緯など 以前勤めていた会社はエンジニアが大半の20名そこそこの小さな会社で、自社でプロダクトを持っていたこともあり、おつきあいする会社も特定の業界に限られていました。扱う技術もかなり特殊な用途に限られていて、しかもプロプラエタリなプロダクト関連だったりしたので、このまま働き続けることに、エンジニアとしてのスキルセットの面で不安を感じていました。また、詳しいことは書きませんが、技術以外の部分の
フォント情報から文字コードを得る方法です。 まず、Font情報はそのフォントを使用するページのResourceとして登録されているので、その情報を取り出します。 CGPDFPageRef page; // page ページオブジェクトを取得。。。 CGPDFDictionaryRef pageDict = CGPDFPageGetDictionary(page); CGPDFDictionaryRef resourceDict = NULL; CGPDFDictionaryRef fontDict = NULL; // フォント辞書をスキャン if(CGPDFDictionaryGetDictionary(pageDict, "Resources", &resourceDict ) ) { if(CGPDFDictionaryGetDictionary(resourceDict, "Fon
当ブログのアクセスログを見ていると、shouldStartLoadWithRequestについて書いた「UIWebView内の画面遷移をフックする」が圧倒的に人気コンテンツであるようです。 そこで、応用編として、アプリ内のUIWebView画面で、webサイト上のファイルへのダウンロードリンクをクリックするとそのアプリのドキュメントフォルダに直接DLするような仕組みを作ってみます。 アイデアとしては、shouldStartLoadWithRequestのrequestパラメータに含まれ るURLを抽出し、事前にそのURLに対してHEADリクエストを送って、DL可能なファイルへのURLかどうか先読みし、DL可能ならそのままDLし、DL対象でない普通のhtmlページリンクの場合はUIWebViewに制御を返すというものです。 リンク先の先読みとDLには、おなじみASIHttpRequestを使
タイトルはかなり誇張が含まれますw 人様にお説教をできるほどの技術者とは胸をはって言えない私ですが、プログラマの定年と呼ばれる年齢をずいぶん過ぎてもなんとか今日までやってこれました。 これまでの自分の経験を振り返ってみて、やって良かったことをあげてみることにます。 original update by Howard Chalkley こういう種類の記事はいろんな人がいろんなことを言っていて、それぞれなるほどなと思うことがあるのですが、あまり他の人が書いていないようなことで、ROIの高い順に、プラクティスをあげてみます。 なお、ここであげるプラクティスは、それ自体で直接的に仕事に役立ったりするような即効性のあるものではありません。しかし実践したあと、自分にとって、今までより見晴らしの良い場所に立つことができるようになったことを実感できたものです。 プログラミング言語を自作する どんな文法・仕
職場の技術発表会でiOS開発関連で発表したところ、Objective-Cでの開発に対して高いハードルを感じている人が多いようだったので、少しでもiOS開発に興味を持ってもらえるようFAQを書いてみました。 Original Update by nickcastonguay Q. 何が必要? XcodeというIDEを使って開発するので、Xcodeの動作環境となるMacOSXが動作するMacは必要になっちゃいます。ちなみにMacの現行機種ならどれでも快適に開発できると思います。使いでが良さそうなものを選びましょう。 あと、実機で動作確認したり、全世界でアプリを売るために、iOS Developer Programに加入する必要があります。これは年会費8400円で加入できます。(価格は2012年6月19日現在) Q. C言語の知識ないとダメ? さすがにゼロだと厳しいと思いますが、Objectiv
前回の続きです。 ponpoko1968.hatenablog.com PDFの文字列描画命令は、TJ、Tj演算子のオペランド文字列のエンコードとキャラクタセットは、先だって実行されたTmオペレータのフォントの指定に従っています。 たとえば、 /C2_0 1 Tf 0 Tc 4.093 0 Td <0DFA0F6703D303E903B703BF03B1029406120370037703C3029403BB069E0F17037708370996053D>Tj みたいな感じ。 1行目のTfオペレータでフォントを指定し、 2行目で文字のスペーシングとテキストの位置を指定 3行目で文字列描画 で、Tfオペレータで指定されている"/C2_0"という名前がフォントの指定なので、この名前をたぐって、文字列のエンコードを得ます。 ちなみに、たいていのPDFではエディタで直接PDFを開いてもこういうコ
私は、iOS/Objective-Cのコーディングには専らEmacsを使っています。下記ブログのおかげでかなり快適なObjective-Cのコーディング環境が手に入りました。 (1) Emacs で iPhone アプリ開発を快適にするための設定 ただ若干気になるところとして、auto-complete-modeの補完候補の精度がXcodeのそれと比べて若干落ちることがあります。 Xcodeだと、たとえば、 Foo a; [a xx クラスFooのaオブジェクトのメソッド呼び出しの文脈では、Fooが実装する"xx"で始まるメソッドの候補をサジェストしてくれます。emacsでも文脈に応じた補完を実現したいものです。 そこで、Google先生に聞いてみたところ、 (2) Clang Completion Source for AutoComplete in Emacs というのを見つけました。
iPhoneアプリにおいて、画像の閲覧など、ナビゲーションバーとステータスバーを隠したい場合があります。さらに、ナビゲーションバーとステータスバーを表示しているときも、黒っぽいスモークがかかった透明なスタイルを設定して、画面一杯に画像などコンテンツを表示したい場合が多いと思います。 まず透明化を実現するには、このビューの表示の開始タイミングViewWillAppearの中などで、 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; self.navigationController.navigationBar.barStyle = UIBarStyleDefault; と書けばOKです。 ステータスバーとナビゲーションバーを隠すには、 [[UIApplication sharedApplic
初めに 筆者は20年来のEmacsユーザですが、ここ数年はカスタマイズもせず、昔ながらの使い方しかしてきていませんでした。しかし最近XCodeとEmacsを行ったり来たりするのにうんざりして、この記事のようなカスタマイズをしたことを皮切りに、いろいろなパッケージを試し始めました。 なかでも自分の仕事の生産性向上に大きく寄与したのがorg-modeです。org-modeには多彩な機能がありますが、私は専らタスク管理のツールとして、使っています。 org-modeはあまりにも多機能で、自由度が高いが故に、なかなか使いこなすには至りませんでしたが、自分なりのベストプラクティスを編み出したので紹介してみます。 なお、この方法に比較的向く人は、下記のような人かと思うので、事前にあげておきます。 仕事は終日、少なくとも8割方PCの前に向かって作業する人 コーディングその他作業は出来るだけEmacsで行
先日見かけたアプリで、UITableViewのヘッダ部分をタッチすると、そのヘッダに属するセルが伸び縮みするという動作がありました。 どうやってやるのか調べてみて、どうやら下の動画のような動きを実装できたので、共有します。 https://dl.dropboxusercontent.com/u/6579646/2010-10-03_1451.swf まず、ヘッダのタッチを検出する必要があります。UITableViewの派生クラスを作って、 touchesEnded:withEvent:をオーバーライドします。今回のサンプルでは、 UITableViewのデータソースとデリゲートは同一クラスとしています。 各セクションのヘッダの領域は、UITableView#rectForHeaderInSection:で取得できます。 UITableViewDatasourceプロトコルのnumberOf
常時ネット接続を前提とした今日のスマートフォンであるところのiPhoneでは、サーバと通信することが前提のアプリを作ることが多い。 多くのRSSリーダのように、アプリケーション内部で非同期にサーバと通信して情報を取得し、iPhoneのネイティブのUIを使って情報を表示することも多いが、UIWebViewをつかってアプリ内部にWebブラウザ機能を用意し、HTML画面を表示して直接Webサーバとユーザが対話することも可能だ。 この場合問題になるのは、UIWebViewに制御がある間、ユーザの挙動やWeb画面の遷移はアプリがあまり把握できないことだ。 もちろん、ナビゲーションバーなどにボタンを付けておけば、ユーザはアプリの任意の画面に遷移することは可能だ。しかし、その遷移のタイミングをサーバ側で制御したい場合もある。具体的にはWebブラウザ画面上で、特定のリンクをクリックしたら、iPhoneアプ
このページを最初にブックマークしてみませんか?
『ponpoko1968.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く