Amarronの日記

iOSやMac、Web系の記事を書きます。

iPhone simロック 解除 - au から UQモバイル -

f:id:Amarron:20171213220928p:plain

  • au から UQモバイルsimフリーに変更したので個人用のメモ
  • 率直な感想としては、simフリーに切り替えるのは良かったが、切り替えるのは au 回線ではなく docomo 回線を使っている キャリアにしとけば良かった
  • 内容について
    1. 動機
    2. 変更内容
    3. 変更の流れ
    4. 感想

1. 動機

  • simフリーに変更したい理由
    • 一番の理由は、料金が安い
      • 毎月9,000円くらい払っているのがプラン
    • 海外旅行に行ったときに、海外simフリーを入れ替えて使えるのが良い(実際は端末の問題らしいので特に関係なさそう。。。)
  • UQモバイルを選んだ理由
    • auの回線と同じ回線を使っていたため(au回線で困ったことがなかった)

2. 変更内容

内容 変更前 変更後
端末 iPhone6 iPhoneX
キャリア au UQモバイル
料金/月  9,000円 2,980円(プランM)

3. 変更の流れ

個人で行ったことなので正式な手続きではなく、無駄な手順がありますが記録ように書いています。

  1. simロック解除方法を調べる
  2. iPhoneX を購入
    • Apple Store で iphoneX を購入
    • iPhone6のsimをiphoneXに入れ替えるが、そのままでは使えない
    • au へ問い合わせる(simの入れ替えについて)
      • iPhone6とiPhoneXでは使えるsimが違うので契約の変更が必要
      • その手続きは店舗でないとできないと言われる
  3. simの変更
  4. simロック解除方法を調べる
    • My ausimロック解除が可能か調べる
      • 解除不可判定
    • au へ電話で問い合わせる(解除不可判定について)
      • 店舗でsimロック解除の手続きが追加(¥3,000)で必要と言われる
        • 前回店舗での手続きでは、iphonexへの移行手続きだけしかされていない
        • au以外から購入した場合、問い合わせでのsimロック解除を受け付けていないので再度店舗で手続きしてほしい
        • auで購入した端末は101日以上経過していないとsimロック解除できない、appleにも同じような規約があるかもしれないので確認した方が良い
    • appleへ問い合わせる
      • iphonexは全てsimロック解除対象の端末であり最低利用期間など設けていない
  5. UQモバイルへ申し込む
  6. simを変更する

4. 感想

  • 変更作業についての感想
    • 手順が多い(切り替え自体(「5. UQモバイルへ申し込む」以降)は楽に進んだ)
    • Apple Storeで買わないとau側でsimロック解除期間があるし、Apple Storeで購入するとsimロック解除auでの問い合わせで出来ないといわるなど、色々解約されないように不便にしているように感じた
    • 2年縛りや、simロック解除期間や、端末でsimロック解除対象外やで色々不自由
    • なんやかんやで切り替えに金がかかる
      • au:iphone6からiphonexへのsim変更3,000円+2年縛りの違約金3,000+mnp手数料3000
      • uq:sim3,000円強(これは3000円分のQUOカードが貰えるのでトータルは殆どなし)
    • 「3.変更の流れ」の「3. simの変更」がやらなくても問題なかったかも
  • UQモバイルの不満点
    • テザリングができない
      • uqモバイルではテザリングがiPhone7からできないらしく、外でネットを使うにはwi2300を使うのが便利そうだと思った
    • wi2 300 が現実的には無料で使えない
      • wi2 300 が使えるのでテザリングできなくても問題ないと考えていたが現実的には無料ではない
      • uqモバイルを契約するとwi2 300という公共無線LANのサービスのサービスが利用できる(wi2 300へ登録は別途必要)
      • 対応エリアも広く自分が良く行く喫茶店やファミレスでも対応エリアだったから、テザリングが使えなくても問題ないように感じていたが、実際は対応エリアではあるがオプションを追加しないと使えないエリアだった
      • つまり、無料では使えない(周知内容が姑息な気がして au 系列に失望する)
    • 6Gプランだが3Gまでしか設定されていないので、6G使うには毎月3Gは購入する手続きを行う必要がある
  • 使ってみた感想

SOFT SKILLS ソフトウェア開発者の人生マニュアル 感想

f:id:Amarron:20170630131517j:plain

概要

  • 「SOFT SKILLS」を読んだので次の内容を備忘録
    • 本の概要
    • 印象的な文のピックアップ
    • 紹介されたサービス一覧
    • 感想
  • 本の特徴(個人的な感覚)
    • 語りかけるような文体で書かれている(読みやすい)
    • 各章の文末に「まとめ」や「やってみよう」の項目があり親切
    • 技術的な内容ではなく、働き方に重きを置いている
    • 中盤以降は仕事全般的な話が多め(投資や健康の話などもあり)

本の概要

著者:ジョン・ソンメズ

ソフトウエア開発者専用に、「より良い人生」を送るためのノウハウ・スキルを網羅した、生き方バイブル本です。プログラマーが良い人生を送るためには、技術習得法やキャリア構築法といったノウハウに加え、対人的な交渉・指導・意思疎通などをうまく行える能力や知恵、すなわちソフトスキルが不可欠です!本書では、キャリアの築き方、自分の売り込み方、技術習得法、生産性の高め方といった仕事で成功する方法だけでなく、財産の築き方、心身の鍛え方、恋愛で成功する方法など、「人生全般をより良く生きる方法」を具体的に説明します。

印象的な文のピックアップ

専門特化

  • 専門特化の法則・・・専門性が高ければ高いほど、チャンスの数は減るが、その反面、チャンスを獲得する可能性は高くなる
  • クライアントになる可能性のある会社は非常に少ないが、非常に高い時給を要求できる
  • 専門領域
  • 専門分野の選択方法
    • 会社で感じた大きなペインポイントは何か?そのペインポイントを解決することを専門とする人間になれるか?
    • 誰もがやりたがらない仕事やスキルのある人がいない仕事はあるか?
    • カンファレンスやユーザグループでよく話題になるテーマはどのようなものか?
    • 同僚相手にあるいは「StackOverflow」などの開発者向けサイトであなたがよく答える質問はどのようなものか

プロであること

  • プロであるということは、自らの姿を見せ続け、仕事を進め、逆境に負けないことだ
  • プロは毎日いつでも基準を守ってくれると当てにすることができる
  • プロになるには
    • 良い習慣を身につける(時間を計画して守る)
    • 正しいことをする
    • 品質の追求と自己研鑽

うまくやり遂げるまではできたふりをする

  • 次の事柄についてうまくやり遂げるまではできたふりをする
    • 必要なスキルと能力をすでに持っているふり
    • なりたいと思っているタイプの人間になっているふり
    • 勝者になっているふり(試行を重ね続ければいずれ克服できることを深く理解しているため、まるで、戦闘はすでに終わっているイメージ)
    • 経験者のふり(これから通ろうとしている未知の道をすでに何度も通ったことがあるかのようなイメージ)

自分のマーケティングするにはどうすればいいのか

  • 自分のマーケティングは、個人ブランドから始まる
    • ブランドとは、あなたが表現するものだ
  • 自分が何になりたいか、そのイメージを世界にどのように見せたいか、ということを意識的に決める
  • 人と触れ合うときや、あなたが複数回に渡って何かをするときに親しみを感じさせるのにブランディングは役に立つ
  • ブランドを作るためのステップ
    • メッセージを定義する
    • ニッチを選ぶ
    • キャッチフレーズを作る
    • エレベーターピッチを作る
    • ビジュアルを作る

学習の10ステップ(7~10は繰り返す)

  1. 全体像をつかむ
  2. スコープを決める
  3. 成功の基準を決める
  4. 参考資料を見つける
  5. 学習プランを作る
  6. リソースをフィルターにかける
  7. 使い始められるようにする方法を学ぶ
  8. 遊びまわる
  9. 役に立つことができるところまで学ぶ
  10. 教える

引退とは逆算で働くこと

  • 引退のためのプランニングで大切なこと
    • 毎月生活するために必要な額を正確に計算する
    • 受動的収入を確保する方法を確立する(少し余裕を持たせられるだけの額)
    • 毎月生活費と受動的収入を考え逆算で働く

紹介されたサービス一覧

分類 サービス名 概要 備考
開発 GitHub ホスティングサービス
開発 WordPress CMS
開発 Blogger CMS
開発 Buffer SNS予約投稿サービス
管理 Trello タスク管理サービス
管理 Kanbanflow タスク管理サービス
管理 RescueTime 作業時間の可視化
QA Stack Overflow Q&A
ビジネス Fiverr クラウド・ソーシング $5でロゴが作れる
ビジネス oDesk クラウド・ソーシング
ビジネス Leanpub Markdownテキストを本にして販売してくるサービス
ビジネス Smashwords 本を流通させてくれるサービス
ビジネス Bookbaby 本を流通させてくれるサービス
ミートアップ トーストマスターズ スピーチを通じてコミュニケーション、話し方、リーダーシップスキルの上達を目指す非営利教育団体
ミートアップ Clarity コーチやメンターを探せる 時間料金制
ミートアップ meetup.com ミートアップ

※フィットネス関連は除外しています

感想

  • @HigeponJaさんがオススメしていたので読んだが、積読せずにもっと早く読めば良かった
  • ソフトウェア開発者が働くということを網羅的に書かれていて考えの整理や仕事への全体像の見晴らしが良くなった気がする
  • 「報酬にランダム性があると習慣が強くなり、カジノに中毒性があるのもそのためだ」というのは面白かった
    • 習慣にしたい事柄の報酬をランダムにして、中毒にしたら、自分をハックしている感じで面白いかも
  • 生産性に対して、かなりストイックな内容で仕事のために生きていると思っていない人には全部きっちりやるのは少し厳しい内容だと思った
    • 自分はそこまでストイックではないが、やっていたこと(ポモドーロやクォータなど)が何個か出てきて共感しやすかった
    • おそらくこの本に書かれていること全部を自分はやることはないと思うが、一部はやっていきたい
      • やること:ブログを毎週書く、専門分野を伸ばす、自分のマーケティング、ルーチンをしっかり守る、預金を投資にまわす
  • 自分の改善したい部分が幾つか見つかった
    • 学習の10ステップで、「スコープを決める」「成功の基準を決める」を結構適当にやっていた
      • 課題がはっきりしていないときにダラダラと本を最初から最後まで読んでしまって、結局浅い知識で何を学んだのか覚えていないときが多かった
    • 今までの自分の独学の手順が非効率だったかも
      • 「遊びながら行動を起こし、本を読んで学ぶと吸収も早く、その成果を遊びに活かす、自分が学んだことを誰かほかの人に教えて知識をセメントで封印しておこう」が独学の手順として効率的らしい
      • 自分はスピード感が遅かったりや途中で諦めてしまうことが多いが、その原因は本を読みながら学習しそれをブログに書くなどをやっているからなのかも知れない
      • 手順を「調査と出力」を同時に進行するのではなく、「遊び→行動→調査→出力」の流れに変えたら効率があがりそうな気がした
  • 読んでいて少しひっかかる部分もあった
    • 「うまくやり遂げるまではできたふりをする」は、しったかぶりや、なんでも出来ますで無理な受注を受けて、周りに嫌われたりしないだろうか
    • この本と同じことをやっても、ある程度能力が高くないと大きな成功はつかめないと思った
  • こういう自己啓発系の本を読むと毎回人生のテーマとか自分は何をしたくてどうなりたいかなどをあらためて考える機会が作れて、自律的で前向きになれる良い本だと思った

Pokemon Go API メモ

f:id:Amarron:20160822191210p:plain

ポケモンGOAPIについて、少し調べたので残します。
自分用のメモなので間違っていたらごめんなさい。(コメントとか頂けると嬉しいです)

  1. APIについて
  2. 非公式サービスのポケモン情報の取得方法について

なお、URLの「reddit」を「れでぃっと」と記載しています。(Bad Requestのため)

from20020516.hatenablog.com

1. APIについて

Guide to Pokemon Go Server Responses
I’ll be updating this post as I figure more things out

Things needed (incomplete list):

  • A way to MITM/intercept responses (Charles with SSL Proxy via Wifi)
  • ProtoBuf 3 (protoc on the command line)

The second response

After the initial handshakes with pgorelease.nianticlabs.com/plfe/rpc you’ll get a response from the server that has three parts:

  • Player
  • Inventory
  • Settings

In order to parse these, you’ll need to need to separate them - they each have overlapping messages, which makes it difficult to handle with one file.

If you’re looking at your .bin (binary file), look for the hex seq a206020801 - this marks the end of the Player section, and you split the file after this seq. The next split is at the last a206 - this marks the beginning of the Settings section, and you can make the split before this seq.

Player

You can use this .proto file to decode your player binary with protoc –decode Holoholo.Rpc.Player player.proto < player.bin. There’s not a whole lot of information there yet.

Inventory

You can use this .proto file to decode your inventory binary with protoc –decode Holoholo.Rpc.Inventory inventory.proto < inventory.bin. This has the most information of the response, detailing all of your items and pokemon.

Settings

You can use this .proto file to decode your inventory binary with protoc –decode Holoholo.Rpc.Final settings.proto < settings.bin. This has the most information of the response, detailing all of your items and pokemon (sorry for the inconsistent naming).

Map Response

After you’ve been talking to server a while, you’ll send up your lat/long at some point to request map cell information. The response can be decoded with this .proto file and protoc –decode Holoholo.Rpc.Map map.proto < response.bin. This is a pretty interesting response which includes nearby pokemon, wild pokemon, forts, spawn points, etc.

Conclusion/comments

It’s interesting that the nearby pokemon return distances, and not points on the map. It should be reasonably easy to triangulate their position with three sets of data (assuming they don’t move - I don’t think they do). I’m not sure if their EncounterId is unique (doesn’t decode correctly right now), which might make it difficult to sort to triangulate.

Once the pokemon are close enough to you, it looks like a MapPokemon/WildPokemon gets returned, at which point you can see their exact point on the map, along with their expiration time and spawn id - I’m not sure why both Map and Wild are needed. Maybe it’s related to them being able to be captured/visible?

The settings provide some interest info (in case you’re unable to decode):

Settings {
  Sha1: “”
  Values {
    FortSettings {
      InteractionRangeMeters: 40
      MaxTotalDeployedPokemon: 10
      MaxPlayerDeployedPokemon: 1
      DeployStaminaMultiplier: 2
      FarInteractionRangeMeters: 1000
    }
    MapSettings {
      PokemonVisibleRange: 100
      PokeNavRangeMeters: 200
      EncounterRangeMeters: 50
      GetMapObjectsMinRefreshSeconds: 5
      GetMapObjectsMaxRefreshSeconds: 30
      GetMapObjectsMinDistanceMeters: 10
      GoogleMapsApiKey: “”
    }
    InventorySettings {
      MaxPokemon: 1000
      MaxBagItems: 1000
      BasePokemon: 250
      BaseBagItems: 350
      BaseEggs: 9
    }
    MinimumClientVersion: “0.29.0”
  }
}

Some of these things were confirmed earlier, but it’s neat to see them as actual variables from the server, rather than hard-coded into the game.

Here’s a sample Inventory Pokemon (sorry for censoring - idk how unique these are):

    Pokemon {
      PokemonId: 98
      Cp: 19
      Stamina: 29
      MaxStamina: 29
      Move1: 216
      Move2: 20
      HeightM: 0.42
      WeightKg: 7.
      IndividualAttack: 14
      IndividualDefense: 9
      IndividualStamina: 13
      CpMultiplier: 0.39
      Pokeball: 2
      CapturedS2CellId: 
      CreationTimeMs: 1468154******
    }

Here are some NearbyPokemon examples:

NearbyPokemon {
  PokedexNumber: 19
  DistanceMeters: 107.49982
}
NearbyPokemon {
  PokedexNumber: 46
  DistanceMeters: 48.262047
}
NearbyPokemon {
  PokedexNumber: 19
  DistanceMeters: 105.36407
}
NearbyPokemon {
  PokedexNumber: 10
  DistanceMeters: 191.24013
}

There’s still quite a few requests to get through - if anyone is doing something similar, feel free to post them here, or ask questions.

Please don’t ask me how to set mitm/protobuf/other things up.

https://www.れでぃっと.com/r/pokemongodev/comments/4svl1o/guide_to_pokemon_go_server_responses/ より抜粋

2. 非公式サービスのポケモン情報の取得方法について

  • 多数の非公式サービスは、「pokevision」や「catch that」などから無許可でAPIを利用しているよう(niantic -> pokevisionやcatch that -> 多数サービス)

pokevision

  • サービス停止中(7月31日くらい〜)

↓FAQです。(nianticapiを使っているらしいです)

Find all Pokemon near you (or a selected target location) in real time for Pokemon Go. Pokemon nearby will be marked along with their appearance timer on the map. These are real time Pokemon locations, meaning they are currently live and can be found exactly at the marked spots.

What is Pokevision?

Pokevision is a Pokemon tracker/locator for the mobile game Pokemon Go. It uses the Niantic API to grab the location of all Pokemon near your (or your selected location) and display them on the map in real-time; this means if it is displayed on the map, you can go out and catch them! Note: Rarer pokemons have a shorter appearance time so they might despawn; make sure to be quick and keep an eye on their timers!

How do I track Pokemon using Pokevision?

There are a few methods to scan for the location of Pokemon:

  1. Click anywhere on the map to drop a location marker. After placing a marker, press scan to reveal Pokemon nearby.
  2. Use the Search Bar to enter your location (or a location you wish to scan) and hit enter. You can then click Scan. If there are Pokemon nearby, they will display on the map along with their appearance time.

Are the Pokemon displayed actually there?

Yes - as long as the timer has not reached 0, the Pokemon are actually there and in real time.

How come I see some Pokemon in game but not on your map?

Pokemon that spawn due to lure/incense are not visible on our map since those pokemon are visible to only you.

Can I scan anywhere?

As long as it is an area where Pokemon Go is serviced, yes. Please keep in mind we have a small delay between scans so that requests do not spam the servers. Scans take around 5-15 seconds depending on the density of the area.

I am receiving an error. Help!

The Pokemon Go servers are very overloaded during peak hours of the day, this also affects the API and results may take longer or stall. Please be patient and try again!

What map provider are you using?

We are grateful to be provided map tiles and geocoding services by the folks over at Esri .

How do I contact you guys regarding suggestions, feedback, or business inquiries?

You may reach us via the contact us page.

https://pokevision.com/faqより抜粋

catch that(SkipLagged)

  • 8月22日時点では利用出来ている(日本はサービス対象外?)
  • SKIPLAGGEDのトラップストリート?をやっている
  • メイン事業は、旅行関連のサービスっぽい

↓色々他社サービスにAPIを無断で利用されているようです。

Shame shame shame

So a while back, we built an api endpoint that instantly provides live positions of wild pokemon. It was meant for use by our services and personal use by anyone (who agrees not to abuse, of course).

Not surprisingly people have been abusing this, to the point where lots of websites and mobile apps are calling it directly.

As such, we figured trolling is only fair:

http://i.imgur.com/SJaUXpF.jpg

http://i.imgur.com/qU3RApd.jpg

http://i.imgur.com/zSHcLfH.jpg

http://i.imgur.com/WvcVNvL.jpg

http://i.imgur.com/LQgyzsa.png

http://i.imgur.com/cU54C4L.png

http://i.imgur.com/K3bigJ1.jpg

https://na.cx/i/T7K84g.png (thanks to /u/mlc130104, https://www.れでぃっと.com/r/pokemongodev/comments/4yheff/pokefast_isnt_the_only_api_sending_bogus_pokemon/

C'mon folks, servers are expensive. Especially when processing tens of thousands of searches per second..

Press:

http://did2memo.net/2016/08/19/pokemon-go-p-go-search-data-source-skiplagged/

http://i.imgur.com/8tgm6UD.png

https://www.れでぃっと.com/r/pokemongodev/comments/4yhpk0/shame_shame_shame/ より抜粋

その他

Swift PDF Download Export 実装方法

f:id:Amarron:20151129162938p:plain:w350

概要

PDFのDownload

  • NSURLSessionDownloadDelegateを利用してダウンロードします
  • 以下のプログラムは「download」ボタン押下で、指定したURLからPDFをダウンロードするよう書いてあります
// NSURLSessionDownloadDelegateを追加
class YourClass:UIViewController, NSURLSessionDownloadDelegate {
    // PDF保存先のディレクトリを定義
    let dir = NSSearchPathForDirectoriesInDomains(
        .DocumentDirectory,
        .UserDomainMask, true)

    @IBAction func download(sender: AnyObject) {
        // ダウンロードしたいPDFのURLを指定
        let url = NSURL(string: "http://www.indire.it/wp-content/uploads/2015/08/pdf-sample.pdf")
        
        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: config,
            delegate: self,
            delegateQueue: NSOperationQueue.mainQueue())
        // PDFのダウンロード
        let task = session.downloadTaskWithURL(url!)
        task.resume()
    }
    
    // MARK: - NSURLSessionDownloadDelegate
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL){
        let data = NSData(contentsOfURL: location)!
        if data.length > 0 {
            let path =
            NSURL(fileURLWithPath: self.dir[0]).URLByAppendingPathComponent("ファイル名.pdf").path
            // PDFの書込み
            data.writeToFile(path!, atomically: true)
        }
    }
    
    func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
        if error == nil{
            session.finishTasksAndInvalidate()
        } else {
            session.invalidateAndCancel()
        }
    }
}

参考:SwiftでPDFをDL、保存して良さ気な見た目で表示しよう (分かりやすいのとプログレスバーがステキです)

PDFのExport

  • 「UIDocumentInteractionController」を使って出力します
  • 「UIDocumentInteractionController」は、メソッド内に書くとメモリが開放されてクラッシュするのでクラス変数で定義した方が良いと思います
  • 以下のプログラムは「export」ボタン押下で、指定したURLからPDFをダウンロードするよう書いてあります
    • プロジェクト内のファイルを出力したい場合、「NSBundle.mainBundle().URLForResource().path」で出力できます
class YourClass:UIViewController {
    // ※クラス変数で定義(メソッド内の場合、メモリが解放されてしまう)
    var dic:UIDocumentInteractionController? 

    @IBAction func export(sender: AnyObject) {
         // プロジェクト内のファイルを指定したい時
         // if let path = NSBundle.mainBundle().URLForResource("ファイル名", withExtension: "pdf").path! {
        if let path = NSURL(fileURLWithPath: self.dir[0]).URLByAppendingPathComponent("ファイル名.pdf").path {
            dic = UIDocumentInteractionController(URL: NSURL(fileURLWithPath: path))
            dic?.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: true)
        }
    }
}

サンプルコード

サンプルコードを作りました。ご参考までに。

github.com

機能

  • PDFのダウンロード
  • ダウンロードしたPDFの一覧表示
  • ダウンロードしたPDFの削除
  • PDFをエクスポート

使い方

  1. ダウンロードしたいPDFのURLをテキストエリアにペースト
  2. ダウンロードボタン押下でPDFをダウンロード
  3. テーブルにダウンロードしたPDFファイル名が追加されて表示
  4. エクスポートしたいファイル名を選択するとエクスポート先が表示
  5. エクスポート先でPDFが表示
  6. ダウンロードしたPDFを削除したい場合は対象のファイル名を右へスワイプ

f:id:Amarron:20151129163036j:plain:w350 f:id:Amarron:20151129163047j:plain:w350

新 TestFlight 内部テスター 手順

概要

  • TestFlightの設定〜使い方手順の自分用メモです(内部テスターを追加する方法)
  • 簡単な手順は次のような流れ
  • 外部テスターを追加する場合、AppleStoreの審査があります(私は審査に1日かかりました)

前提条件

  • iOS8以上
  • iTunes Connectにアプリをアップロードできる状態

手順

  1. iPhone: TestFlightアプリをダウンロード
  2. iTunes Connect: iTunes Connectでユーザと役割にAppleID(メールアドレス)追加
    • f:id:Amarron:20150904214636p:plain
  3. iPhone: AppleID(メールアドレス)に承認メールが届くのでクリック→クリックするとiTunes Connectの画面が開くのでログイン
  4. iTunes Connect:TestFlightベータ版テスターにAppleID(メールアドレス)が追加されるのでチェックを付けてテスターにする
    • f:id:Amarron:20150904214649p:plain
  5. Xcode: 対象のアプリをiTunes Connectにアップロード
  6. iTunes Connect:対象のアプリ(マイ App->プレスリリース->内部テスター)を選択しテスターに追加する
    • f:id:Amarron:20150904214702p:plain
  7. iPhone:AppleID(メールアドレス)にアプリ招待メールが届くのでクリック→TestFlightを開かれ対象のアプリが表示されるのでAcceptで招待を受ける -f:id:Amarron:20150904214714p:plain
  8. iPhone:TestFlightで対象のアプリをダウンロードする

その他

  • 内部テスターでiTunes Connectにログインすると、次のような項目が閲覧・変更できます f:id:Amarron:20150916193927p:plain

参考URL

グロースハッカー 感想

f:id:Amarron:20150824225943j:plain

  • 「グロースハッカー」という本を2年位前に読んでいて、その時の自分用のメモがあったので残します。
  • 各ステップの印象的な部分の抜粋と感想が書いてあります。
  • グロースハックの概要を軽く抑えるのに役立てたら嬉しいです。

ステップ1 まずは人が欲しがるものを作れ

マーケターは長年パッとしない製品を売り込むことを仕事にしてきたが、誰も欲しがらないものを売ろうとすることは絶対にやってはいけない。
PMFを目指す。(プロダクト・マーケット・フィット・・・サービスと顧客のニーズが完全にシンクする状態) フィードバックを受け入れろ。
ソクラテス式文等方式を行え。(誰のための製品なのか?なぜユーザーがこの製品を使うのか?なぜ私はこの製品を使うのか?→この質問をユーザーにもしてみよう)

ステップ2 自分なりのグロースハックを探して

すべての人ではなく、ふさわしい人へ。

  • 潜在ユーザーが訪問しそうなウェブサイトへメールする。自己紹介し、製品について説明し、そのサイトで製品を紹介すべき理由を説明する。
  • 自分でハッカーニュース、クオラ、レディットなどに投稿する。
  • 話題になっているトピックについて記事を自社サイトのブログに掲載し、間接的に読者を製品に導く。
  • クラウドファンディングサービスのキックスターターでプロジェクトを立ち上げ、潜在ユーザーに受けそうな特典を用意する(これなら同時に潜在ユーザーとチャットできる)。
  • 潜在ユーザーを一人ずつ見つけ出し、無料あるいは特典付きでサービスに招待する。

個々の例

  • 招待制にしてプレミアム感を醸し出す(メールボックス
  • サービスが実際より人気と活気があるように見せるために、数百の偽プロフィールを作る。人だかりは人だかりをよぶものだから(レディット)
  • 製品を使えるサービスを一つに絞り、そのサービスの成長に便乗する(PayPalはイーベイに便乗)
  • サービス上でクールなイベントを開催して最初のユーザーを巻き込む(マイスペース、イェルプ、ユーデイミー)
  • 影響力のあるアドバイザーや投資家を引き込んで、その財力ではなく支持者や名声を利用する(アバウトミー、トリッピー)

大事なのは、何人に認識されるかではなく何人がサインナップするかだ!

ステップ3 クチコミを巻き起こせ

クチコミを成り行き任せにしない。
ブランディングのために金を払ったりしない。
(その代わりに、ソーシャルカレンシー(社会的通過)を無料で獲得する方法を考える)(アップルがイヤホンを白にしたことやドロップボックスが紹介で容量を増やしたりすることが無料のブランディングであり、非常にグロースハックに効果的)
ゴーバイラルしたければ、クチコミの種を製品の中に仕込む必要がある。

ステップ4 掴んだユーザーを手放すな

企業はサービスそのものの改善に投資する必要がある。ユーザーがそのサービスから離れられなくなるまで改善しよう。
ビジネスでもっとも重要になることは、新しいユーザーを集めるより既存のユーザーを定着させたり、最適に改善することが重要。
グロースハックはROIの最大化を目指すものだ。最も重要な事柄に全力をつくすべきだ。
サービスに無関心のユーザーを追いかけるよりも、すでにいるユーザーの個人情報をより引き出し、アマゾンやフェイスブックがやっているようにサービスへの愛着を増やすことをするべき。

感想

全体的に共感が持てる。 目新しいことではなく、結構知っている内容。
Airbnbなど自分が好きなサービスが紹介されていて少しうれしくなった。

キーワードに「マインドセット」という言葉が頻繁に出てくる。
「マインドセット」とは、具体的なテクニックというよりは考え方。
大事なのは、自分たちのサービスの現在の利用者、将来の利用者が自分たちに何を求めているかを正しく理解し、施策を繰り返し実施していくこと。

派手なことより地道な繰り返しを好む自分には近い考え方だと思う。また、科学的な根拠を元に成長させる部分も自分のサービスへの考えと近い。 作ったシステムを少しずつ趣味程度に進めて、それが将来大きな資産へ成長したら嬉しいなって思いました!

YAPC::Asia 2015 行ってきました

f:id:Amarron:20150823005500p:plain

  • 行ってきた系のブログは書かないのですが、ブログを書くまでがYAPCらしいので書きます!
  • 自分が聞いたトークの感想をサラッと書きました
  • slideshareとか動画で内容が詳しくかいてあるのを見つけたら追記します

YAPC概要

yapcasia.org

speakerdeck.com

www.slideshare.net

www.slideshare.net

全体の感想

  • とても楽しかった!(Perl全然使ったことないけど)
  • 話が面白くて、技術を題材にしたお笑いを見ているかのごとく笑えました(ライトニングトークが特に面白かった)
  • 技術的に真面目な話も多く、技術者として触発されました
  • ベストトーク賞に選ばれた人のトークを聞いてなかったのが心残り...

自分が聞いたトーク

  • 1日目(2015.08.21)
    • Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN/Yusuke Wada
    • Lightning Talks Day 1
  • 2日目(2015.08.22)
    • サーバーサイドエンジニア(特にPerl)のためのiOSアプリ開発入門/Daisuke Murase
    • ランチセッションA/株式会社Fusic
    • Adventures in Refactoring/Ben Lavender
    • Lightning Talks Day 2

Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN/Yusuke Wada

f:id:Amarron:20150821155124j:plain

  • 個人的に和田祐介さんのファンなので参加しました
  • Podcastをやっているからかトークの盛り上げ方がすごいなって思いました

内容

www.slideshare.net

  • エンジニアもコンテンツ配信したい
  • 配信できるメディアも多様化してきた
  • Podcastプラットフォームに依存しない
    1. Media RSS拡張されたRSSフィード
    2. mp3メディアファイルの配信
  • 配信するための3編更生
    1. システム編
    2. コンテンツ編
    3. オーディオ編
  • Poscastやってどう→楽しい
  • まとめ
    • 確かに手作り感がある
    • Apple/Googleには金を払っていない

サーバーサイドエンジニア(特にPerl)のためのiOSアプリ開発入門/Daisuke Murase

  • 私はiOSエンジニアなので外せないと思って参加しました
  • 立ち見の人も多く、立ち見でも見れない人がいるほど大人気(私も立ち見だったのでメモ少なめです。。。)
  • iOS未経験者向けの内容

内容

  • perlとswiftの似ている部分
    • メモリ管理
      • weak
      • optional(if let)
    • ライブラリ管理ツール
      • cocoapods(cpanm curlと同じ?)
  • デモで作る
    • forsqueaのapiを使ってチェックインアプリを作る

ランチセッションA/株式会社Fusic

f:id:Amarron:20150822121808j:plain

  • お弁当を食しながらトークを聞く
    • 社内システムの残るシステムと消えるシステムについて
    • botになった人の話
  • 社内システムを積極的に作っている会社は技術者が生き生きしてそうな印象を受けました
  • お弁当美味しかった

Adventures in Refactoring/Ben Lavender

f:id:Amarron:20150822130007j:plain

github.com

内容

Refactoring

Reason

  1. Developer Happiness(開発者が楽しいか)
  2. (性能向上)
  3. Gain Confidence for Future Work(将来の作業の削減)←一番重要
  4. Developer Education(開発者の教育)

Techniques

  1. Develop
    • get a styleguide(スタイルガイドが正しいかではなく、スタイルガイドがあるのが良い事だ)
  2. Tyoes for Verbs
  3. add user Abstractions
  4. remove unsed Abstractions

Proble

Refactoringをする上での問題がある

  1. Existing Bugs(既存バグ)
  2. Performance Changes
  3. Context

Breaking it down

  1. Deprecate
  2. Back 前のプログラム(前のプログラムをユーザが使える)

Tools

  • Backscatter
  • cience(このツールは使いやすい)
    • 古いプログラムと新しいプログラムを同時に実行できる(同じ振る舞いになるか確認出来る)

最後に

f:id:Amarron:20150822175346j:plain

  • YAPCみたいなカンファレンスは楽しいし刺激的でした(スピーカーに憧れる)
  • 最後になってしまうのがとてもさびしいです
  • 他にこのようなカンファレンスがあれば誰か教えてください!!