タグ

ブックマーク / ninjinkun.hatenablog.com (29)

  • iPhoneの英語入力キーボードを開発したプログラマーの話『Creative Selection』を読んだ - ninjinkun's diary

    Appleファンとして、プログラマーとして、とても面白く読んだ。 KHTMLをベースにWebKitを作り始める話、iPhoneプロジェクトに入って英語入力キーボード開発のDRI*1になる話など、今自分がMaciPhoneで使っているソフトウェアの話が多く、具体的なイメージを持ちながら楽しむことができた。 Apple社内の雰囲気や体制が垣間見えるエピソードが多く、なるほどこういう環境でWebKitiPhoneは開発されていたのかと産業遺産を見るような気持ちで読んでいた。 とにかくデモを作って見せる文化 上司にデモを見せる、気に入られると段々見せる階層が上がっていって、最後はジョブズにデモを見せるようになる 動くものがなかなか出てこないと不信感を持たれる (特に明言はされていないが)Appleにはコアロジックからアニメーションまで実装できるプログラマーが多数在籍していそうな雰囲気 著者はブ

    iPhoneの英語入力キーボードを開発したプログラマーの話『Creative Selection』を読んだ - ninjinkun's diary
  • iOSアプリ開発者がWebアプリ(PWA)をリリースするまでの流れ - ninjinkun's diary

    先日リリースした個人アプリBlogFeedbackを開発した動機と、開発の時系列、開発してみての感想(ネイティブ開発者から見たPWAとか)を書いていきます。リリースエントリにも書きましたが、このアプリはiOSネイティブアプリからWebアプリへの移植です。 TL;DR BlogFeedbackのケースではWebでもネイティブアプリとほぼ同等の体験を作ることができた ネイティブ歴が長くHTML/CSSに明るくなかったので、まずReact Native for WebでUIを組んでいって、自力でHTML/CSSが書けるようになってから脱React Native for Webした React / TypeScript / create-react-app / styled-components / storybook おすすめ ブログを書いている人はBlogFeedbackを使ってみて欲しい!

    iOSアプリ開発者がWebアプリ(PWA)をリリースするまでの流れ - ninjinkun's diary
    jazzanova
    jazzanova 2019/01/03
  • 就職 - ninjinkun's diary

    6月中旬に株式会社一休に入社した。一休レストランという飲店予約サービスを運営するレストラン事業部で、iOSアプリの開発を行っている(やっていることはコーディングとプロダクトマネジメント的な仕事を半々ずつくらい)。 一休はIT系としては比較的歴史が長い会社だが、 アプリの伸びしろの大きさ 経営陣の面白さ 自分で使って楽しいサービス という点で、総合的に見て面白い経験ができそうと感じて入社を決めた。事前に二週間お試しで働いてみて、一緒に働くメンバーとも楽しく仕事ができそうなのがわかっていた点も大きかった。 元々飲みに行ったり外することは好きだったのだが、一休では自社のサービスを自分で使ってご飯をべに行き、その体験をまた製品にフィードバックして改善できる。自分の生活をサービスに反映できるところが面白い。 他にも、社長(金融工学、CS、コンサル系のバックグラウンド)が検索のおすすめ順やリコメ

    就職 - ninjinkun's diary
    jazzanova
    jazzanova 2017/09/14
  • 結婚退職無職 - ninjinkun's diary

    昨年11月に結婚し、2月に勤めていたFablicを退職して京都で暮らしている。 結婚 3年前に上京して、京都に住んでいる彼女と遠距離恋愛をしていたのだが、昨年末に結婚した。現在は京都で一緒に暮らしている。毎晩一緒にお酒を飲めるのが楽しい。 退職 会社を辞めた理由としては、会社が昨年夏に買収され、自分の中でスタートアップ欲求が一段落付いたというのが一つ。もう一つは仕事が3月まで忙しいことがわかっていたので、せっかく結婚したのだし、しばらく一緒に居る時間を作ってサポートするのも良いんじゃないかと思い、このタイミングになった。 Fablicにはスタートアップの黎明期から拡大期に移るタイミングで入社し、フリルのiOSネイティブ移行、AndroidのMaterial Design対応、RIDEの開発など、様々な楽しいプロジェクトに関わらせて頂いた*1。また、自分のわがままを聞いてもらって、プロダ

    結婚退職無職 - ninjinkun's diary
    jazzanova
    jazzanova 2017/02/24
  • 【翻訳】プロダクトマネジメントトライアングル - ninjinkun's diary

    original: The Product Management Triangle (by Dan Schmidt) (translated by ninjinkun, reviewed by Kosuke) はじめに プロダクトマネジメントは多くのソフトウェア企業が重要だと認識している役割だ。それにもかかわらず、「プロダクトマネジメント」を正確な言葉で定義することは驚くほど難しい。自らを「プロダクトマネージャー」と呼ぶ人々は、企業ごとに全く違うことをやっている。彼らは異なるタイプのプロダクト、異なるタイプのチーム、異なる組織構造の中で働いている。このプロダクトマネジメントの立場の違いは、とても不毛だ。外の立場から見ていると、同じ肩書きの仕事を参照する際に、誤解を引き起こしているように見える。全てのプロダクトマネジメントの仕事を統合して、共通の話題を抽出しようとすると、価値を説明しようとし

    【翻訳】プロダクトマネジメントトライアングル - ninjinkun's diary
  • 影響力の武器を読んだ - ninjinkun's diary

    有名ならしく、同僚から薦められたので読んでみた。人が騙されたり、冷静に行動できなくなる現象を解説したである。セールスやマーケティングで用いられている人間の行動に関する知見が、社会心理学実験の結果を用いて説明される。 確かにとても面白いで、自分は読んで良かったと思うのだが、同時にこんな知見が流通している世界に住んでいたのか…と唖然としたというか、少し辛い気持ちになった。もちろん騙す知見を流通させる目的のではなく、知っていれば騙されるのも防げるというスタンスで、防衛法も書かれている。 プロダクトマネージャーに関心がある自分としては、4章「権威--導かれる服従」に書かれていた、権威や上司には自動的に従ってしまう社会的な特性があるという部分が印象に残った。プロダクトマネージャーは開発チームの上司ではなく、人事権も持っていないことが特徴であると言われている。この知見を元に考えると、プロダクト

    影響力の武器を読んだ - ninjinkun's diary
  • 『チームが機能するとはどういうことか』を読んだ - ninjinkun's diary

    Incrementsの知人が社内で輪講していると言っていて、気になっていたので読んでみた。創造的なチームを作るために気をつけることと、そのために必要になるリーダーシップについて書かれているとのこと。 現代のチームが固定されたメンバー制から専門集団の一時的な集まりになっている(例えば病院、災害救助、スタートアップなど)ことから、チーム構造からチームワーク自体へ注目するという意味で動詞のチーミングが提唱される。 心理的安全 自立的かつ創造的なチームのキーになるのが心理的安全である。 心理的に安全な環境では、何かミスをしても、そのためにほかの人から罰せられたり評価を下げられたりすることはないと思える。手助けや情報を求めても、不快に思われたり恥をかかされたりすることはない、とも思える。そうした信念は、人々が互いに信頼し、尊敬し合っているときに生まれ、それによって、このチームでははっきり意見を言っ

    『チームが機能するとはどういうことか』を読んだ - ninjinkun's diary
    jazzanova
    jazzanova 2016/03/30
  • アプリ開発と状態遷移の管理 - ninjinkun's diary

    このエントリーは読者としてスマートフォンアプリ開発者とWebフロントエンドエンジニアを想定して書いています。 CROSS2016に出るので、最近の自分の考えを整理しておく。 最近ReduxSwift実装であるReSwiftを使って開発している。使った感想なども最後の部分に書いたけれど、このエントリーの題はアプリの状態管理の話。 アプリは大きなシングルトン iOS、Android共にアプリを実装しようと思うと大抵シングルトンが必要になる。各ViewController内をまたがってデータを共有したいというユースケースが多いからだ。例えば ユーザーのログイン情報を集約するUserManager コンテンツへのいいね情報を集めるLikesManager ブックマーク情報を集めるBookmarkManager などなど。もちろんアプリの内容によってこれらの顔ぶれは違ってくると思うけれど、大抵U

    アプリ開発と状態遷移の管理 - ninjinkun's diary
  • 正しい製品を作る / 製品を正しく作る - ninjinkun's diary

    Inspired: 顧客の心を捉える製品の創り方を読み返していて、「第7章: プロダクトマネージャーを管理する」の一節 エンジニアリング部門というのは、基的に、正しい製品を作ることではなく、製品を正しく作ることに専念することになっているからだ。 というところが引っかかったので、思うところを書いてみる。ちなみに「第5章: プロダクトマネジメントとエンジニアリング(実装)」にも「正しい製品を作るのか、それとも、製品を正しく作るのか」というタイトルの章がある。 エンジニアは製品を正しく作る エンジニアは製品をリリースする責任があるので、不確定要素を減らして正しいスケジュールでリリースすることにモチベーションがある。このために、開発が進むほどにエンジニアは保守的になっていく。企画段階では和気藹々とブレストしてアイデアを出していても、最後のリリース前にはしぶい顔で実装を拒んだりする。 エンジニア

    正しい製品を作る / 製品を正しく作る - ninjinkun's diary
    jazzanova
    jazzanova 2015/10/14
  • git-pr-releaseのすすめ - ninjinkun's diary

    Github (含むEnterprise) で開発をしているなら、Github Kaigiでも紹介されていた git-pr-release が便利です。自分の会社ではアプリのリリース前にQAを実施しているのですが、QAを始める前にどの機能がリリースされるのかをリストアップし、それをGoogleスプレッドシートに入力する作業が繁雑でした。 git-pr-release を使うと、これをリリースPull Requestに集約して自動化することができます。リリースPull Requestとは以下のようなものです (スクショはこのツールのPR用に作ったダミー)。 具体的なリリースまでの作業手順は以下のようになります。 開発ブランチにリリースする機能のPull Requestをmergeしていく git-pr-release を実行 merge済みのPull Requestの情報を集めてチェックリス

    git-pr-releaseのすすめ - ninjinkun's diary
  • iOSアプリケーション開発のコードレビューで気をつけていること - ninjinkun's diary

    日常的なコードレビューで気をつけていることリストです。GitHub会議(仮)で発表しようと思っていたのですが、日程の都合で参加できないので、書きためておいたメモを公開します。またどこかで発表するかもしれません。 AutoLayoutにできないか AutoLayout化した方がすっきりしそうならAutoLayout化する AutoLayout化できそうなものでやっていないものは、なぜコードで実装したか質問する 例えばUITableViewCell ちゃんと理由があれば別に良い。コードの方が良いことも多い UIAppearanceで解決できないか 各クラスの中にスタイルの指定が入るより、UIAppearanceでスタイル指定を分離して別クラスに書く方がデザイナーも弄りやすくて良い 3.5インチ端末が考慮されているか レイアウトが決め打ちだとここで問題が出ることが多い 着信ステータスバーが考慮さ

    iOSアプリケーション開発のコードレビューで気をつけていること - ninjinkun's diary
  • 未読数バッジの実装 - ninjinkun's diary

    アプリの未読数バッジを実装していてこんがらかってきたので、自分の方針をメモしておきます。バッジを消してるつもりなのに消えないとか、また復活していたりするとイライラしますよね。 いつ消すか 通知欄を見た瞬間に消える タイムラインの投稿、自分へのいいね等 大抵のものはこちらでOK 未読の部分まで読んだら消える チャット等のメッセージ 重要なお知らせ アイコンのバッジは種類に関わらず起動時には消す その後新しい通知が来るまで復活しないように Pushのみで数字を更新する場合は起動時に0にするだけ Push以外でアイコンバッジを更新することがあれば、最後にバッジを消した際の通知オブジェクトIDもしくは未読数を記録するという面倒な方法で実現する 複数クライアントがある場合は他のクライアントにもPushを送って0クリアしてあげると良さそう。あまりやってるのは見ないけど どこまで読んだかを記憶する 最後

    未読数バッジの実装 - ninjinkun's diary
  • はてなを退職しました - ninjinkun's diary

    昨年末に株式会社はてな退職しました。2008年の京都移転直後のインターンに参加し、2009年に新卒入社したので、5年くらいはてなに関わっていたことになります。 このエントリでは、自分がはてなでやったことと、エンジニアとしてのロールモデルを持つことができたこと、コミュニティ活動ついて、そして今後について書きます。 はてなでやったこと 最近ではスマートフォン系の仕事が多かったのですが、入社当初は運用を担当していました。たくさんのサービスを担当しているチームで、ここで様々なコードに触れた経験が今振り返ってみるとすごく良かったと思います。とにかくコードをたくさん読みました。 同期入社には既に実績がある人が何人もいて焦る一方、自分はテストを書いているつもりがDBのデータを消していたり、社内のメールを止めたりとひどいミスを連発していて、今思い出しても冷や汗が出ます。 その後 はてなキーワードフィーチ

    はてなを退職しました - ninjinkun's diary
  • iOS 7前夜 - ninjinkun's diary

    今夜からiOS 7が配信されそうな気配ですね。まだ実際にリリースされていないので、適当に予言を書いておきます。 自分はこのアップデート歴史的に類を見ないくらい面白いことになるのではないかと思っています。それはスマートフォンをコンピューターだと思っていない、OSという概念を持たない普通の人たちが使う携帯電話が、短時間のうちに劇的にUI変更をするからです。 FacebookなどのよくUIを変えてくるWebサービスと違い、電話の画面がほぼ全部書き換わってしまうという体験はそんなにないはずです。アップデートのボタンをほいほい押してしまったばかりに、突然全てが真っ白でフラットな世界に放り込まれて唖然とする姿が想像できます。 実のところiOS 7は使い勝手はほとんど変わらないので、使ってみるとそんなに混乱はないと思います。少し時間が経てばみんな慣れてしまうでしょう。 それでも見た目の変更が大きいので

    iOS 7前夜 - ninjinkun's diary
  • UIWebViewにプログレスバーを出すためのモジュールを作りました - ninjinkun's diary

    ninjinkun/NJKWebViewProgress · GitHub UIWebViewにはロードのプログレスを取れるインターフェイスがありません。恐らく内蔵ブラウザを抱えるアプリを作る開発者はみんな困っているはず。少なくとも自分はずっと困っています。いつか実装されるかなと気長に待っていたのですが、いい加減しびれを切らしたので作りました。iOS 7で追加されて速効ゴミになる可能性もありますが…。 なお、このモジュールはプログレスを返すインターフェイスだけを提供するので、画面に表示するにはUIProgressViewなりを使う必要があります。 プログレスバーはユーザーに進捗をほどよくフィードバックするためのものですが、この辺りの機微が結構難しかったです。*1 最終的にはWebKitの実装を参考にパラメータを決定しました。ロードしたbyte数が取れるWebKitとは違い、ロードが完了した

    UIWebViewにプログレスバーを出すためのモジュールを作りました - ninjinkun's diary
  • 国際化したStoryboardを一つにまとめる - ninjinkun's diary

    これまでiOSプロジェクトを国際化する際にはStoryboardファイルは対応言語分複数作る必要がありましたが、iOS6からは一つにまとめて、他の言語は.stringファイルで管理することが可能になります。これにより、Storyboardを変更した際もGUIによるレイアウトの変更は一回で良くなります。 ただしこれをやるとiOS5で動かなくなるので注意が必要です。 やり方 Use Base Internationalizationにチェックを入れる BaseにするStoryboardを選ぶ 僕のアプリは日語主体で設計していたので、日語を選択しています。英語の方が主体なら英語を選択した方が良いと思われます。 Localizeされたファイルができる この状態だとstoryboardが2つある従来の状態と一緒です。 .stringファイルを生成する Localizable Stringを選択す

    国際化したStoryboardを一つにまとめる - ninjinkun's diary
  • AppStoreレビューを促すイラッとするダイアログを出すライブラリiRateの使い方 - ninjinkun's diary

    アプリを起動した直後に「AppStoreにレビューを書いてくれませんか」という感じのダイアログが出て、若干イラッとしたことはありませんか?iRateはそのイラッとするダイアログを出すためのライブラリです。 https://github.com/nicklockwood/iRate しかしイライラとした人をレビュー欄に誘導しても、あまり良い評価をつけてくれそうにはありません。このためには、アプリを気に入ってくれた人にイラッとさせないタイミングでレビューをお願いする必要があります。 iRateは、アクティブ率が高いユーザーにのみダイアログを出すことで、良い評価をつけてくれそうな人にできるだけ穏便にレビューをお願いするという、かなり空気を読んだ設計になっています。 使い方 呼び出す際は以下のメソッドを呼んで、AppStore IDを入れるだけです。これで初期化が完了されます。 [iRate sh

    AppStoreレビューを促すイラッとするダイアログを出すライブラリiRateの使い方 - ninjinkun's diary
  • ブログについたTwitterやはてブの反響を可視化するiPhoneアプリ、『Feedback』をリリースしました - ninjinkun's diary

    ブログに付いたTwiter, Facebook, はてブ等、ソーシャルボタンの数を記録し、可視化するiPhoneアプリ、『Feedback』をリリースしました。 Feedback iPhone App - Visualize your blog's impact 渾身のブログエントリーを書いた後、ブクマの数が気になってひたすらページをリロードし続けた経験はないでしょうか。僕自身が毎回そんなことをしているのに気づいて、iPhoneアプリにしてみました。 このアプリに自分のブログを登録しておくと、RSSを読み込んで最新の記事のソーシャルボタンの数を集計してくれます。集計した数値はiPhoneアプリDBに記録されるので、増えていく数をグラフ化したり、前回との差分を表示することができます。 自分でも毎日使っています。時たまブクマがたくさんついたときはもちろん嬉しいですが、何気ないエントリにスター

    ブログについたTwitterやはてブの反響を可視化するiPhoneアプリ、『Feedback』をリリースしました - ninjinkun's diary
    jazzanova
    jazzanova 2012/11/21
  • iOS6から使えるアプリの状態復元UIStateRestoration - ninjinkun's diary

    iOSアプリを起動する際、ユーザが最後に開いた画面を表示できると利便性は高まります。しかしバックグラウンドに移ったアプリは、メモリが逼迫してくると強制的に終了させられて、最初からやり直しです。この終了状態から、あたかも直前まで動いていたかのように状態を復元するUIStateRestorationがiOS6から導入されました。 追加の実装は必要ですが、自前でやるよりは楽に状態の保存と復元が可能になります。 以下の内容は最新のiOSアプリケーションプログラミングガイド(既に日語訳出てる!)を参照しながら実装してみたものなので、詳細を知りたければそちらを参照するのがおすすめです。 はじめに この機能で保存、復元されるものは以下の通りです。 ViewControllerとViewController Container UINavigationViewControllerのスタックも復元 Vie

    iOS6から使えるアプリの状態復元UIStateRestoration - ninjinkun's diary
  • iOS組み込みのキャッシュモジュールNSCacheについて発表しました - ninjinkun's diary

    NSCacheというキャッシュモジュールについて第43回Cocoa関西で発表してきました。 NSCacheの特徴 スレッドセーフ NSDictionaryのように手動でロックする必要がない 格納オブジェクトの上限を決められる 溢れたら自動破棄 iOSのようなメモリ制約の厳しい環境に最適 NSDictionaryに似たインターフェイス Mac OS 10.6 / iOS 4.0以上で使える 具体例としては、ダウンロードした画像をオンメモリにキャッシュする際等にとても有用だと思います。同じような機能を提供してくれるOSSのモジュールは見たことがあるのですが(例えばnimbusに含まれているNIMemoryCache)こちらはOS組み込みなので手軽に使えます。 発表資料 サンプルコード Twitter及びInstagramの画像をロードしてデモするサンプルコードは以下です。それぞれの機能を動かす

    iOS組み込みのキャッシュモジュールNSCacheについて発表しました - ninjinkun's diary
    jazzanova
    jazzanova 2012/03/26