iCloudをサインアウトする前にApple IDを変えてしまうとつらい

家族の携帯キャリアをIIJmioに統一し、iPhone4からiPhone6sへ機種変した。

LINEの過去トークを含めてすべてのデータをとっておきたいとのことで、

  • iPhone4をiTunes経由でMacにバックアップ(LINEのトーク移行には暗号化をONにするのがポイントらしい)
  • 買ってきたばかりのまったく新しいiPhone6sをiPhone4のバックアップから復元

という手順で移行する計画で進めた。

このとき、移行後のiPhone6sでiCloudがサインアウト出来ずにつらかった話。

Apple IDを変えた

今回、Apple IDがキャリアメールアドレスだったのでApple ID自体をgmailのアドレスに変える必要があった(hoge@carrier.example.netから、hoge@examle.comへ変更するものとするイメージ)。

Apple IDを変更したのでiPhone側のiTunesの設定とiCloudをサインアウトし、サインインしなおすことになる。このときiCloudで「iPhoneを探す」設定をしていると面倒くさい。

Apple ID変更前にiCloudをサインアウトしていれば、何の問題もないが、先にiCloudのサインアウトするのを忘れているとつらい。

iCloudからサインアウト出来ない

Apple IDを変えた後でも、iTunesは難なくサインアウト出来る。んが、iCloudをサインアウトしようとすると

「iPhoneを探す」をオフにするには、現在設定しているhoge@carrier.example.netのパスワードを入力してね

的なことを言われる。しかし、すでにAppleIDをhoge@carrier.example.netからhoge@example.comへ変更しているので自分のAppleIDを入力しても「そのIDはロックされています」と言われてどうにもならない。初期化しようとしても「iPhoneを探す」をオフにする過程で同じ状況。セキュリティ意識が高い!

解決策

(2015年11月29日現在はこの手順が有効だった)

解決策は、AppleのウェブサイトからAppleIDを一時的に前のアドレスに戻す こと。戻した際に確認のメールアドレスを送信云々表示されるが無視する。ていうか、無視したくなくてももうそのキャリアアドレスは受け取れないので無視せざるをえないので若干不安な気持ちになるが強い心で先へ進む。

この状態で、iCloudをサインアウトしようとすると先ほどと同じように

「iPhoneを探す」をオフにするには、現在設定しているhoge@carrier.example.netのパスワードを入力してね

と言われるので、パスワードを入力すると「iPhoneを探す」をオフに出来て、iCloudからもサインアウト出来る。

そして、ウェブサイトからAppleIDをまたhoge@example.comへ変更する。今度はこのメール宛の確認メールは踏んでおく。

こうして、ようやくiTunesとiCloudからサインアウト出来たので、一旦iPhone6sを初期化する。

サインアウトさえ出来れば計画通りの作業が可能となるので、iPhone4でも同じ手順で両方サインアウトして、バックアップを再取得し、iPhone6sを初期化して初めからやりなおして、うまくいった。

途中で諦めそうになった

これはApple IDのバグ?いや、仕様だと思い、もうiPhoneを交換するしか無いかとまで思ったが、ココで諦めてはいかん!という謎のモチベーションにより問題を解決できたの良かった。

なんせ、

SIMフリー版iPhoneをAppleで交換したらSIMロックが掛かっちゃって…もう大変さ。 | Tools 4 Hack

こういう話を知っていたので、SIMフリーiPhoneの交換はコミュニケーションミスが怖くてやりたくなかったのだ。とにかく解決してよかった。

Apple IDを変える際には事前に全デバイスのiCloudをサインアウトするんだ!

YAPC ASIA 2015の1日目に行ってきた。 #yapcasia

本日は、去年のYAPC::Asia Tokyo 2014 前夜祭に引き続き私にとっての2回目のYAPC、YAPC::Asia Tokyo 2015に参加して来ました。

参加したセッション

謎の写真です

f:id:naoto5959:20150821230425j:plain

旅行券、当たるかな?

esa.io - 趣味から育てたWebサービスで生きていく

さて、本日のお目当てのプログラムです。

esa.ioは「情報を育てる」という視点で作られた、 自律的なチームのためのドキュメント共有サービスです。

f:id:naoto5959:20150821230429j:plain

  • 今回は、界隈の仲間の発表ということで最前列で観ました。
  • イロイロ試すのは確かに大事。URLを持ち誰からもアクセスすることによってフィードバックをもらえるという点に激しく同意しました。
  • 仕事の後にこれだけのものを開発するパッションとスキルに尊敬の念を抱かずにはいられません。
  • サービスがイケるかも?と言ったタイミングで「責任をもつという意思表示のために会社を作る」という所にesa社の2人の覚悟と責任感を感じました。
  • 自分たちが楽しく開発することがユーザーに届ける価値を最大化する という点は私も大事にしている点です。楽しくない開発はどんなにがんばっても最高のパフォーマンスは出せません。楽しむことが何よりも大事だと思います。
  • Bug Fixタイムアタックに関しては、楽しむ為の工夫として素晴らしいなと感じます。
  • We're Not Hiringという方針を掲げる理由が「ユーザーサポートを作っている人たちがやることの強さ」を維持するためというあたりがクールです。
  • 開発スケジュールを決めない!!というのも私の大事にしている点で激しい同意で鼻血が出そうでした。モチベーションの赴くままやるのが最終的に効率がいいのです。モチベーションが全てです。デザインスプリントのようなあえて期限を決めることで自身を追い込む事は大事ですが、そこは 自身で追い込むことが大事 で、スケジュールを他者に握られないというのはすごい大事だと思います。
  • ふりかえりを壇上の上で行い、5年前の想いを実現している姿は素晴らしかったです。

胸を張って、趣味から育てたサービスで生きていく。誰にでも出来る事ではありません。謙虚な姿勢とふりかえりによる結果だと想いました。そしてあの2人だからこそ、という感じがします。esaはツイートの内容などゆふわな雰囲気がありますが、その雰囲気とは裏腹に確固たる信念の元、開発運営されているのでおいそれと真似できないなーと思いますが憧れますねこのチーム。とにかく今回の発表は、とても刺激を受けました。

fukayatsu氏の発表スライドはこちらです。

面白かったツイート

最後に

久々にカンファレンスに参加することで、大変刺激を受けました。自分のやりたいことと、世の中の人の役に立つことが一致させることがエンジニアとしての幸せなのかなと考えさせられる充実した1日でした。

YAPC::Asia Tokyo 2015のスタッフの皆様、運営ありがとうございました。

React.jsを使いたいRailsおじさんがJavaScriptライブラリをそれっぽく管理しながら入門する

Sendagaya.rb #114に来たので、目標のブログ記事を書いてた。

今日は、React.jsの会なので、RailsからReact.jsをざっくり使って見る準備をしてみます。

目指すもの

  • sprocketsのままとりあえず進む
  • jsのライブラリをnpmで管理したい
  • React.jsをES6で書きたいし、JSX書きたい
  • herokuで動かすぞ!
  • react-railsは使いたくない

方針

sprocketsと共存するために、browserify-railsを利用し、ES6はBabelを利用します。ライブラリはそのまま、npmで管理します。

npmを入れます

もし入っていなければnpmを入れましょうね。

brew install npm

package.jsonの準備

browserify-railsにある例のまま記載します。

package.json

{
  "name": "sendagayarb",
  "dependencies" : {
    "browserify": "~> 10.2.4",
    "browserify-incremental": "^3.0.1"
  },
  "license": "MIT",
  "engines": {
    "node": ">= 0.10"
  }
}
npm install --save

更に今回は、babelifyreactを入れます。

npm install babelify --save
npm install react --save

するとこんな感じの、package.jsonになりますね。

package.json

{
  "name": "sendagayarb",
  "dependencies": {
    "babelify": "^6.1.3",
    "browserify": "~> 10.2.4",
    "browserify-incremental": "^3.0.1",
    "react": "^0.13.3"
  },
  "license": "MIT",
  "engines": {
    "node": ">= 0.10"
  }
}

.gitignoreの設定

node_modulesディレクトリをgit管理対象外とします。

.gitignore

node_modules

browserify-railsを入れる

Gemfile

gem 'browserify-rails'

browserify-railsの設定を入れます。今回は、babelifyを使ってます。

config/application.rb

  config.browserify_rails.commandline_options = '-t babelify --extensions .es6'

herokuの準備

Gemfile

group :production, :staging do
  gem 'rails_12factor'
en
heroku create sendagayarb

node.jsとrubyを利用するために、multi buildpackの設定をします。

.buildpacks

https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-ruby

herokuへpush

git push heroku master

React.jsのサンプル

ホント意味ないほどのサンプルです。

app/javascripts/application.js

//= require jquery
//= require jquery_ujs

window.onload = function() {
  require('./top.es6');
};

jquery_ujsは、railsのヘルパー使いたいシーンもあるので置いてあります。

app/javascripts/top.es6

import React from 'react'
React.render(
  <div>hoge</div>,
  document.getElementById('target')
)

app/views/pages/top.html.erb

<div id="target"></div>

app/controllers/pages_controller.rb

class PagesController < ApplicationController
end

config/routes.rb

Rails.application.routes.draw do
  root to: 'pages#top'
end

ソースとか

まとめ

とりあえず出来たぞ!