炊きたてのご飯が食べたい

定時に帰れるっていいね。自宅勤務できるっていいね。子どもと炊きたてのご飯が食べられる。アクトインディでは積極的にエンジニアを募集中です。

Android での二度押し防止施策

アクトインディ Advent Calendar 2016 23日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net Kotlin 1.0.…

iOS エンジニアが Android を開発する時のコンポーネントやウィジェットの比較表

アクトインディ Advent Calendar 2016 21日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net 今までは iO…

Kotlin + RecyclerView で OnItemClick を実装する

アクトインディ Advent Calendar 2016 20日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net 本日の記事…

Kotlin + Retrofit2 + Gson で API 通信を実装する

アクトインディ Advent Calendar 2016 18日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net Kotlin 1.0.…

Glide のメソッドをお借りして画像の向き(orientation)を取得する

アクトインディ Advent Calendar 2016 16日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net Kotlin 1.0.…

(Android)動的に変化する TextView にもっと読むボタンを設置する

アクトインディ Advent Calendar 2016 14日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net 今回は Text…

メソッド数調査、エミュレーターのファイルダウンロードなどを楽にする Android プロジェクト用のシェルスクリプト

アクトインディ Advent Calendar 2016 13日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net 今回の記事…

Android プロジェクトでの Basic 認証 とオレオレ証明書対応

アクトインディ Advent Calendar 2016 12日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net 今回は、デ…

Realm InMemory を使って Activity 間でのデータ同期をスムーズに行う

アクトインディ Advent Calendar 2016 9日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^ iko-yo.net Kotlin 1.0.5…

Kotlin で Realm を操作する時に気をつけていること

アクトインディ Advent Calendar 2016 4日目の記事になります。「若者の結婚願望 子供時代、体験多いと強く 」といった記事が日本経済新聞に書かれていました。 www.nikkei.com 子ども時代に家族で沢山思い出を作っていると、将来、結婚して家庭を持ちたいと…

RecyclerView で Section を表示する

アクトインディ Advent Calendar 2016 2日目の記事になります。2015年の11月にアクトインディに入社して 1 年が経ちました。 入社してからは iOS アプリの開発に携わらせてもらい、現在は鋭意 Android アプリの開発をしています。 子どもとのお出かけ先に困…

Swift2 - storyboard で 高さ可変の ScrollView を autolayout で設定する

多くの場面で、高さが可変の ScrollView を作成する事があると思います。むしろ Web と連携するアプリなんかはそのようなケースの方が多いんじゃないでしょうか。極力ストーリーボードの autolayout を使って、高さ可変の ScrollView を設定する方法を紹介し…

Swift2 - Storyboard で指定した AttributedText のフォントサイズが反映されない

テキストの行間を広げたくて storyboard で UILabel の Text のタイプを Plain から Attributed に変えて font size を 12, line spacing を 5 で設定してあげたところ storyboard ではきちんとフォントサイズと行間が効いていたのですがシミュレーターで確…

Swift2 - クラスの継承とプロトコルの適合(採用)の両方の条件を満たす条件をジェネリクスで書く

Swift2.2, Xcode7 modal で呼び出す画面は、どの ViewController からも呼び出される可能性がある為、ページ遷移用の Utility に定義する様にしています。その時に困るのが、 UIViewController を継承して、かつ、モーダルを閉じる delegate ( protocol )を…

Swift2 - Quick + Mockingjay で Alamofire の非同期通信のテストをする

API との通信をテストする時、実際にリクエストを投げてしまうとサーバーへの負荷やテスト時間など、コストが多くかかってしまうので、Alamofire のリクエストを Quick と Mockingjay を使ってスタブする方法を紹介したいと思います。 Quick: RSpec 風に書け…

Swift2 - 画像アップロードと通常のリクエストを分けてユーザー体験を向上させる

リクエスト回数は極力減らした方が良いのでは?といった方針から、画像をアップロードする処理と通常のテキスト情報を送信する処理を一つのリクエストで行っていたのですが、実際に実装してみたところ、リクエストが完了するまで画面にローディングを表示し…

Swift2 - SDWebImage の placeholderImage や失敗時の画像をセットする Utility クラスを作成する

SDWebImage を利用していると、読み込み中に表示する placeholderImage や、取得が失敗したことを表す画像のセットを毎回書くことになるので、アプリ内で共通で利用できる placeholderImage と失敗時の画像を用意して SDWebImage を呼び出すメソッドを定義し…

Swift2 - 円形( circle )の UIImageView と UIButton の作成

円形の UIImageView や UIButton を利用したくなるケースは多いと思うので、カスタムクラスを利用した方法を紹介したいと思います。この方法では storyboard 上で円形にはならないので注意してください。 UIImageView UIImageView を継承した CircleImageVie…

( Swift2 ) Alamofire + ObjectMapper + Realm でリクエストを Realm に自動的に保存する

Swift2.2, Xcode, Realm1.0.0 Alamofire と ObjectMapper を利用して API 通信を行っている場合、リクエストが成功した際のレスポンスをそのまま Realm に突っ込んで保存したいケースがあったりします。前回作成した API クライアント(Swift2 Alamofire + O…

( Swift2 ) Alamofire で有効期限付きの認証用トークンを利用する( refresh token を利用した token 更新)

Alamofire を利用して有効期限付きの token を利用した API call の実装例を紹介したいと思います。 token を http ヘッダーリクエストに含めるのは簡単ですが、トークン の有効期限が切れた際に、リクエストを保持して、リフレッシュトークン を利用してト…

Facebook, Twitter, Line の SNS 連携を取りまとめる LoginModel を作る

Swift2.2, Xcode7 最近は SNS ログインが増えてきたので Facebook, Twitter, Line の各 SNS のログイン処理をプロトコルを使って共通化して書く方法をご紹介します。 Swift でのポリモーフィズムのような実装を Protocol で行う 各 SNS の認証処理を行う Mod…

Swift2 - カメラ、写真のアクセス許可の確認をプロトコルを利用して使いまわす

Swift2.2, Xcode7 カメラ( Camera )や写真(フォトライブラリー)のアクセス許可の設定状況の確認は、複数の ViewController で行いたいケースが多いので、プロトコルで確認するメソッドを定義して、プロトコルを採用した ViewController であれば簡単にア…

Swift2 - textField の値が入力済みかどうかで登録ボタンを押せるようにする

会員登録画面などで nickName を入力したら、登録ボタンを押せるようにして、空だったらボタンを押せなくするような対応です。 isValidated (バリデーション OK )を管理する変数を用意し didSet で saveButton を活性化させたり、非活性にしたりする 前後…

Swift2 - Alamofire のリクエストでネットワークエラーを検知する

swift2.2, Xcode7 API 通信するアプリを開発していると、ネットワークエラーを検知して、アラートを出すといった処理は共通して書きたいものです。 Apple がサンプルとして公開している Reachability を Swift に変換して使うのもアリですが、ネットワーク通…

(Swift2) Alamofire の upload の進捗を通知で受け取ってプログレスバーを表示する

Swift2.2, Xcode7 前回の記事で Alamofire の upload メソッドの API クライアントを作成しました。 (Swift2) Alamofire の upload 用 API クライアントを作成する 今回は upload 用の API クライアントに手を加えて、ファイルのアップロードの進捗をプログ…

(Swift2) Alamofire の upload 用 API クライアントを作成する

前回の記事で Alamofire の request メソッドに対する API クライアントを作成しました。 Swift2 Alamofire + ObjectMapper で API クライアントを作成する この API クライアントを利用すると request は以下のように書くことができます。 API.call(Endpoin…

Google Tag Manager を利用して GoogleAnalytics を導入する

Swift2.2, Xcode7 GoogleAnalytics を iPhone アプリに埋め込むことになり、せっかくだから AB テストとかも行える Google Tag Manager 経由で GoogleAnalytics を導入してみました。導入にあたっては公式ドキュメントがとても参考になりましたが、慣れない…

Enum の switch self がとても便利

Swift2, Xcode7 enum の switch self を使った変数の設定がとても分かりやすく便利でした。以下の例はアプリ内の WebView で表示するアプリのタイトルと URL を enum で定義した例になります。WebView は色々な箇所から呼び出されることが多いので requestUR…

Storyboard で UIButton の規定サイズ以下の大きさを指定する方法 Autolayout 対応

Swift2, Xcode7 UIButton はタップ領域を確保する為、あるサイズ以上に小さくすることができません。ただ、レイアウトの都合上、高さを規定サイズ以下に小さくしたい場合がもしかしたらあるかもしれないので、忘れないように方法をメモしておきます。 Autola…

Storyboard で UIButton に下線を引く方法

Swift2, Xcode7 あまり利用用途はないかもしれませんが「個人情報の取り扱い」や「利用規約」のように UIButton のテキストに下線を引く方法です。 Storyboard のみで対応が可能です。 UIButton を選択して Title を Plain から Attribute に変更 テキストを…

UINavigationController のデフォルトで追加される戻るボタンの文字を消す方法

Swift2, Xcode7 ここのデフォルトで表示される 戻る back を消す方法です。左に BarButtonItem を置いてしまうと、スワイプで戻る操作が無効になってしまいますが、以下の方法では問題なく表示だけ消せました。 let backButton = UIBarButtonItem() backButt…

Swift2 Alamofire + ObjectMapper で API クライアントを作成する

Swift2.2, Xcode7 サーバーと API 通信するアプリの開発に携わることになり、色々な記事を参考 API クライアントを作成しました。 参考にした記事 Swift2.0で作るAPI通信基盤 Alamofire Github Hearst-DD/ObjectMapper Github APIクライアントを作る理由 API…

iOS のライフサイクルと Autolayout の付き合い方

Swift2.2, Xcode7 要素の frame サイズの取得や、タップジェスチャーや Observer の登録など、 iOS のどのライフサイクル時に設定するのが良いか悩むことが多かったので記事にまとめることにしました。Storyboard を利用して Autolayout を設定しているケー…

Swift 言語の特徴

Swift2.2 です。特徴的だと思ったことを社内の勉強会用にまとめていきたいと思います。コードの動作は playground に貼り付けて確認してください。 型 型の制約 異なる型への代入や演算はできない 演算の結果は同じ型 異なる型へのキャスト メソッドによる変…

AWS で WEB サービスを運用する際に知っておいたら少しは役立つこと

どうも アクトインディ Advent Calendar 2015 の 18 日目の記事になります!本日の担当は namikata です。今日は 「AWS で WEB サービスを運用する際に知っておいたら少しは役立つこと」をつらつらと書いて行こうと思います。テーマは大きいのですが、記事の…

三十路からの TDD

どうも アクトインディ Advent Calendar 2015 も 12 日目になりました。本日の担当は namikata です。今日は TDD について記事を書きたいと思います。 皆さんは、仕事とプライベートはきっちりと分けたいタイプですか?僕は、仕事とプライベートはできるだけ…

今更ですが iOS8 で実装された Share Extension を美味しくいただきました

どうも アクトインディ Advent Calendar 2015 の 23 日目の記事になります!本日の担当は namikata です。今日は 「今さら!」って思う人が多いかもしれませんが、iOS8 の新機能としてリリースされた Share Extension について記事を書こうと思います。 Shar…

Mac(El Captain) に Sublime Text3 で Ruby on Rails の開発環境を構築する

今年の11月にアクトインディに入社した namikata です。今年で 31 歳になります。今まで、エンジニアとして仕事はしたことはないのですが(プログラミングはプライベートで独学)、未経験でも頑張ることを約束して、アクトインディで働くことになりました。 …

AWS の MFAキーを紛失するとやばい

仮想MFAキーとして、自前の iPhone で Google の Authenticator を使っているんですが、ふと見た時に、設定がリセットされて、登録していた情報が消えているのに気がつきました。 このままでは AWS アカウントにログインできない為、AWS のカスタマーサポー…

自分だけのランキングが作れる – マイメモランキング

1分で作成できる自分だけのオリジナルランキング ランキングで管理して、いつでもどこでも自分の「お気に入り」をチェック この前作った料理、美味しかったけどレシピが思い出せない あのお店美味しかったけど、お店の名前を忘れてしまった 数え切れないほど…

feature テストで作成されたデータはテスト完了後もDBに残る

spec_helper.rb で config.use_transactional_fixtures = true している場合、テスト中に明示的に commit をしないとデータは DB に保存されず、テスト完了後にロールバックされる。その為、テスト中に作成したデータは、他のテストに干渉することはほぼない…

jpmobile を使っているプロジェクトの Rspec でスマートフォンのアクセスを行う

allow(request).to receive(:smart_phone?).and_return true で request を スマートフォンのアクセスで stub する describe ParentsController do def as_smart_phone_request! allow(request).to receive(:smart_phone?).and_return true end describe "GE…

before(:all) で allow ( stub ) は実行できない

describe "" do before(:all) do allow(object).to receive(:hoge).and_return(‘fuga’) end it {} end こんな風に書くと、ダメです。Rspec では、 before(:all) での stub や mock はサポートされていない為、以下のような例外が出力されます。 RSpec::Mocks…

Mac の imagemagick が sudo をつけないと実行できない

mac:~$ sudo convert -version Version: ImageMagick 6.9.2-7 Q16 x86_64 2015-11-29 http://www.imagemagick.org Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DP…

MAC 環境で mysql56 nginx(80番ポート) unicorn redis を自動起動する

mysql56 設定と確認方法 参考サイト nginx 設定と確認方法 参考リンク unicorn redis 設定と確認方法 参考リンク mysql56 設定と確認方法 mysql が起動していないこと $ ps ax | grep mysql 4060 s002 S+ 0:00.00 grep mysql launchctl に mysql56 を登録 $ …

Mac 環境 の mysql.server start の実行がエラーで失敗する

ERROR! The server quit without updating PID file 解決までにやった事 mysql を brew コマンドでアンインストール。/usr/local/var/mysql フォルダは削除されないので手動で消す。 brew uninstall mysql rm -rf /usr/local/var/mysql mysqlアンインストー…

Mac OS 10.11 El Captain 環境での bundle install で nio4r libv8 therubyracer mysql2 がエラーになる

環境 Mac OS 10.11 El Captain ruby 2.1.0 bundle install --path vendor/bundle で以下のエラー An error occurred while installing nio4r (1.0.0), and Bundler cannot continue. Build Issue on OS X 10.11 and Ruby 2.2.2 Gemfile.lock を見ると listen…

mac に mecab 0.99 を brew コマンドでインストールしようと思ってできなかった話

以下を参考に、 brew コマンドでインストールしようとしたのでですが、上手くいきませんでした。なので、ソースからインストール。他に上手い方法知っていたら教えていただけるとありがたいです>< mecab.rb を checkout しようとしても、コミット履歴が見つ…

Rails プロジェクトでサービス運用する際によく利用されるシステムについて簡単にまとめる

全般 Gem 監視 参考リンク 都度、更新していく記事。 全般 用途 名前 備考 Webサーバー Ngins Rack Webサーバー Unicorn フレームワーク Rails DB MySQL 全文検索エンジン Solr Sunspot のバックグランドで実行されている。 Gem 用途 名前 備考 アプリケーシ…

capstrano の用語辞典

capstrano の用語辞典 set 関連 :bundle_flags :git_shallow_clone :deploy_via, :remote_cache :shared_children run と run_locally の違い deployコマンド deployの順序 set 関連 :bundle_flags "--deployment は、自分が管理権限を持たないサーバに対し…