近況+DroidKaigiの名札生成スクリプトを書いた話や裏話

こちらは ex-mixi Advent Calendar 2017 の6日目の記事です。
プログラミング以外の話が多くなったので、qiitaではなく自分のblogに書きます。
 
(注:昨日の記事で女性エンジニアの話を書いてますが、そこでの「会社」はミクシィのことではありません!新卒で入った、地元の古い体質の会社のことです。ミクシィは大変良い人達ばかりだったので誤解なきよう。)
 

自分と近況

@wiroha です。mixiでの名前はガジラです。
2010年10月〜2014年1月と在籍し、日記やつぶやき、カレンダー、プロフィール、通知などを担当しました。

ミクシィ卒業後、最近までは女性ターゲットのアプリを担当し、ディレクションやマネジメントなど何でも屋さんでした。
複数のプロダクトを持ち、合計100万人以上のユーザへ届く機能を自分の一存で決められる環境*1で、やりがいがあるし思考力も鍛えられました。
 
担当プロダクトは前々回の記事にもある通り譲渡したため、今はエンジニアポジションに戻り、これまた前の記事の通り3年のブランクを埋めるべく勉強しているところです。

まだ仕事面では技術ネタが無いので、DroidKaigiでの話を書きます。

DroidKaigi

DroidKaigiはAndroidエンジニア向けの技術カンファレンスで、2015年4月から年1回開催しています。
私は2015年11月頃、ミクシィ時代の同僚に誘われスタッフにjoinしました。
仕事でも個人でも出来ないことをやって楽しんでいます!

前回、2017の話

今年3月に行われたDroidKaigi 2017では事務局長という役割に任命いただき、進捗管理屋さんをしていました。 
役割に限らず、名札*2やconnpassページやスタッフ用マニュアルを作ったりと、ここでも何でも屋さんです。
名札は手作業での作成は大変なので、テンプレを用意し中身は自動化しました。

実行スクリプトを選択後、名簿csvを選ぶと画像が流し込まれます。

f:id:Gateau:20171206120811g:plain

記事の最後にコードも載せておきます*3。誰かの参考になれば幸いです。

裏話

アイコン送付のなかったスピーカーには、代表のmhidaka画伯によるドロイド君が描かれました。
冗談と思いきや本当に使いました。

f:id:Gateau:20171204153307p:plainf:id:Gateau:20171204153319p:plainf:id:Gateau:20171204165303p:plain

 このアイコンになった方に感想を聞いたところ、「ちゃんと画像送れば良かったです」と言われました。印刷した実行犯は私です。ごめんね!

2018の話

DroidKaigiは現在2018のチケットを販売中です!
2日間で多くのセッションを聞けるのは勿論、交流などにも工夫を凝らしています。
より良い会にするための実験的要素もあり、楽しみでありつつどういう反応をされるか不安もありつつです。
 
実は前回、当日も全体管理(セッションが時間通り進行しているかのチェックや、人が足りない係への応援指示、最終撤収など)をしていたため緊張やトラブルで落ち着かず、楽しみ切れなかった後悔があります。
 
今回は当日の役割は未定ですが、事前準備を入念に行い、当日は気を張りすぎず思いっきり満喫しようと思っています。
たくさんの方々に会えるのを楽しみにしています!
ミクシィグループはプラチナスポンサーです!ありがとうございます!!!
卒業後も勉強会やDroidKaigiのMTGでよくお邪魔してますし、大変お世話になってます!!

今後

在籍当時も社内ハッカソン(Weekend Challenge 2.5の第2回)で優勝をいただいたりしましたが、今もこうしてスタッフをしたり、技術系同人誌を書いたり、Google I/Oに行ったり、イベントやものづくりを楽しんでいます。
今後もたくさんの人に楽しまれる・感謝されるプロダクトを作っていけたら幸せです。
 
Androidや女性向けの会を中心に勉強会に参加しているので、会ったらぜひ絡んでください!!
このアドベントカレンダー作成者のesugitaさん!ぜひまた写真を撮る会に誘ってください!(私信)(懐かしい)
今の会社も3年経ち、良いところがあれば次を考えてもいいと思っているので、興味を持たれた方は焼肉に連れて行ってください!(話題になってたtweet)

 
明日はkitaindia-san、カレーじゃなくて日本料理屋の話なんですね!?お願いします!!
 

最後にillustrator script

(function() {
    IMAGE_WIDTH = 77; // 画像が埋め込まれる正方形の1辺の長さ(pixel)
    CURRENT_DIR = String(app.documents[0].fullName).replace(app.documents[0].name, "");
    IMAGE_INDEX = 2; //CSVの何列目に画像ファイルの項目があるか

    var CSVConverter = function() {
        this.lines = [];  // 
        this.groups = []; // イラレ上のグループが入っていく
        this.column_name_list = null; // CSVの1行目の項目リスト
        this.variables = app.activeDocument.variables; // The active (frontmost) document in Illustrator

        // イラレアートボード上のグループをloopし、グループリストに格納する
        for (var i = 0; i < this.variables.length; i++) {
            this.groups.push(this.variables[i].pageItems[0]);
        }
    };

    CSVConverter.prototype = {
        read_csv: function() {
            var csv_path = File.openDialog("CSVファイルを選択してください。");
            if (! csv_path) { return; }

            var csv_file = new File(csv_path);
            if (! csv_file.open("r", "", "")) { return; }

            var lines = csv_file.read().split("\n");

            // CSVを読み込み、カラム名リストと値リストへ格納する
            for (var i = 0, n = lines.length; i < n; i++) {
                var line = lines[i];
                if (! line) { continue; }

                if (i == 0) {
                    this.column_name_list = line.split(",");
                } else {
                    this.lines.push(line.split(","));
                }
            }
            csv_file.close();
        },
        write: function() {
            var group_num = 0; // いくつ目のグループか。描画成功すると次のグループへ。
            
            for (var i = 0; i < this.lines.length; i++) {
                var img_file = this._get_filename(this.lines[i][IMAGE_INDEX]);
                if( img_file == null) { continue; } // 画像がない場合は次の人へ

                // 画像がある場合のみテキストの描画 
                var textFrame = this.groups[group_num].textFrames[0]; // テキスト表示領域(今回は1つ)
                var text = String(textFrame.contents);
                
                // csvカラム名と、アートボード上のテキストを一致させればloop有効
                for (var key in this.column_name_list) {
                    if (text.indexOf(this.column_name_list[key]) != -1) {
                        textFrame.contents = this.lines[i][key];
                    }
                }

                // 画像描画
                var rect = this.groups[group_num].pathItems[0]; // 画像描画領域(今回は1つ)
                var pItem = activeDocument.placedItems.add();
                pItem.file = img_file;

                // resizeの引数は%を整数で指定する
                var resize_percentage = IMAGE_WIDTH / pItem.width * 100;
                pItem.resize(resize_percentage, resize_percentage);

                // 描画領域に位置を合わせる
                this._createPosition(pItem, rect);

                // マスクして描画してマスクを解除する
                var mask = activeDocument.pathItems.rectangle(rect.top, rect.left, rect.width, rect.height);
                mask.stroke = true;
                mask.filled = true;
                var holder = app.activeDocument.groupItems.add();
                pItem.move(holder, ElementPlacement.PLACEATEND);
                mask.move(holder, ElementPlacement.PLACEATBEGINNING);
                holder.clipped = true;
                rect.remove();
group_num++; } }, _get_filename: function(github_id) { var name_jpg = decodeURI(github_id) + ".jpg" // githubのID + 拡張子 var name_png = decodeURI(github_id) + ".png" // githubのID + 拡張子 var file = new File(CURRENT_DIR + "/img/" + name_jpg); // プロフ画像 if ( file.length < 0 ){ file = new File(CURRENT_DIR + "/img/" + name_png); // プロフ画像 } if (file.length < 0 ){ file = null; } return file; }, _createPosition: function(profile_image, draw_area) { profile_image.left = draw_area.left; profile_image.top = draw_area.top; } }; var converter = new CSVConverter(); converter.read_csv(); converter.write(); })();
 
 

*1:もちろん上長に共有・相談はしますがかなり自由です。

*2:スピーカー・スタッフ向けのみ。一般参加の方向けには「参加者の名は」を使わせていただきました。 https://yoshiko-pg.github.io/your-name/

*3: 参考元サイトの微妙な実装が残っていますが、もうイラレが無い&今回から名札は別の方法で作るのでメンテはしません… https://bulan.co/swings/illustrator_script/

「女性エンジニア」としての体験談

こちらの記事を読み色々思い出したことがあるので、書いてみる。
自分は男女差別について「こうすべき」「こうしてほしい」といった意見をするつもりはなく、
他の女性も同じ体験をしたとは思っていないので、一個人の体験談として参考程度に気軽に読んで欲しい。
(追記:この記事に出てくる「会社」は地元の田舎の古い体質の企業で、転職済み)
 

女性で不便だと思ったこと

お酌の強要 

新卒1年目の時の会社の飲み会で、上司からかけられた言葉である
「若い女の子からお酌してもらった方が嬉しいんだから、社長にお酌してきなさい」
と言われた。あぁこれが社会なのかと思った。
男女どちらにせよ1年目であればいろんな人に挨拶は必要なので、受け入れた。

深夜に痴漢にあった

開発が楽しくて、ハイになって終電まで残業したときのこと。
最寄り駅から家までの道で、自転車に乗った男性に追い抜きざまに胸を触られた。
いくら仕事をしたくても、男性よりおさえた方が良いときがあると学んだ。
電車で痴漢にあい、しばらく電車に乗れなくなった友人もいる。
そのため住む場所が限られたり、余計なことに精神を消耗することがある。

男性と話が合わない

これもまた会社のチームでの飲み会のことである。
男性7、女性1(自分)ぐらいの飲み会で、話題がすぐにAVの話(たぶん)になったことがある。
そもそも知らないので何の話かもわからなかったが
「女性もいるんだから」と諌めてくれる人がいて、何となく察した
「あー自分は邪魔なんだな」と思う。
 
また、飲み会後に男性達だけで(たぶん)キャバクラに行っていたこともある。
「ここからは男の世界だから」と帰された。
多数派である男性だけが連帯感を強めていて、羨ましく思った。

勉強会で居づらい 

逆を想像してみてほしい。女性100人の中に男性が自分1人だったら。
何かを言われる訳でなくとも、居心地は悪いと思う。(嬉しい人もいるだろうけども)
そして大抵、早めに席に着いていると、いくら混んできても自分の周りだけガラガラなのだ。*1
気まずいし来たのは迷惑だったかなと思う。
 
気のせいかと思い女性エンジニアの友人に聞くと「わかる。でも慣れた。」と言う人と、
「わかる。そうなると懇親会で、卓に置かれた食事が食べ放題で気まずい。
 でも今日はあなたが申し込んでたから、女性1人じゃないと思って参加申し込めた。」と言う人がいた。

特に勉強会の懇親会で居づらい 

「男性が多い環境なんて慣れてるでしょ」と言われることがある。
実際学生時代からそんな環境で慣れている女性も多いが、
私個人は男兄弟もおらず文系だったので、女性が多い環境で育った。
大学で男友達が出来るまでほぼ女性としか交流がなかったので、理系で育った男性と似たようなものだと思う。
慣れてるようにみえるとしたら、それは頑張って気を張って話しかけているだけである。
 
(ちなみに女性が多い会があって不思議に思い声をかけたところ、
「登壇者と友達で聞きたくて」という人が何人もいた。イベントでの参考までに。)
 
先日もある会で珍しく女性がいたので声をかけたら「勉強会に参加するのはじめてで、知り合いもいないし帰ろうかと思った。
あなたに声をかけてもらえて良かった。」と言われた。
男女どちらも、知らない異性に話しかけるのは勇気がいると思う。なのでぼっちリスクが高い。
一旦ぼっちでなくなれば男性でも話しかけやすくなるようで、輪が広がる。
男女関わらず、懇親会での交流はもっと何とかしたいと思う。
 
(追記 :懇親会でナンパされると面倒なので女性限定の勉強会しか行かないという声もよく聞く。
自分は一度しか無いし、ナンパととるか微妙な線だった。
大多数は良い人だし、こういうことを言うと被害妄想だとか自意識過剰だとか批判されるので、声が表に出にくいのだと思う。)

女性で優遇されていると思ったこと

重い荷物運びなどの仕事をしなくて済む 

席替えのとき男性が代わりにディスプレイを運んでくれたりする。優しい。
(追記:反響として、そんなのしてもらってない!という女性も結構いた。)

覚えてもらえる 

勉強会にて、私は相手を覚えていなかったが「何度か来てますよね」と声をかけてもらえた。
女性は少ないのでうまく活かすことも出来そうに思う。(ただし悪目立ちする面もある)

採用? 

特に女性ターゲットのプロダクトでは「女性エンジニアが欲しい」という声を聞くので、
有利に働いたことはあるのではと思う。ただ採用側の人間ではないため確かとは言えない。

モテる? 

これは他の職業の女性と比較しようがないのでわからない。
私個人で言うと31歳独身で彼氏もいない…(あっ、察し)
周りの女性エンジニアで言うとほとんどお相手もエンジニアで、話が合いそうだなとは思う。
 
 
まぁこんなところで、思い出せる範囲ということはそんなに男女の違いを感じていないのかもしれない。
結婚したり、子育てしてみるとまた何か感じるのだろう。
男性批判する気も無いし、環境を変えたのもあり現在はさして困ってはいない。
とりあえず今の自分は女性として生まれたことに満足している。
 
もっと聞いてみたいなどあればtwitterや直接でも @wiroha に声をかけてください。
 

*1:追記:この問題は、遅れて行って空いている席に座れば回避可能

iOS・Androidアプリを別developerアカウントへ移行する際の知見

アプリの譲渡・移行は実施が稀で情報が少ないので、誰かの役に立てばと書き残しておきます。

一番大切なのは、公式ドキュメントを熟読することです。
が、わりと誤りや不明点もあるので、問い合わせにかかる時間も含めて余裕を持ちましょう。
また、厳密な予定を組むのは不可能と心得て、関係者の合意も取りましょう。

移行の公式ドキュメント

iOS

iOSはずっと1つ目を見ていましたが、本エントリ作成中に2つ目を発見しました。
2つ目の方が新しいですが翻訳がかなり怪しく、英語版が確実です。

Android

最初にやること

移行可能な条件に適合しているか確認

大事。だいぶ話が進んだときにAndroidで「定期購入アイテムを提供するアプリの移行はできません」という一文を見つけ大慌てしました。
問い合わせたところ、ドキュメントが古かっただけで可能でした。(現在は修正済みの模様、感謝!)
iOS/Androidでの相違点も多いため、混同しないよう注意しましょう。

移行フロー

iOS/Androidともに、所要日数の記載が無いのがツラいところです。
ストア反映の完了通知もありません。気付いたら変わっています…
簡易ですがフローを図示します。

iOS

 移行元から移行申請  
   ↓  
   ↓ 数日以内?  
   ↓  
 移行先へ受諾可能となった通知が届く、受諾する  
   ↓  
   ↓ 最大2営業日(のはず)  
   ↓  
 移行完了、ストア反映  

iOSはstepが多く複雑です。「移行申請日」「受諾可能日」「移行完了日」など用語の定義をおすすめします。
「移行しました!」など曖昧な伝え方が発生し、齟齬が発生するためです。

Android

 移行元から移行申請  
   ↓  
   ↓ 数時間〜数日以内?  
   ↓  
 移行完了、ストア反映  

Androidはシンプルで、iOSより早い場合が多いようです。
ただiOSと異なり受諾無しで完了するため、移行先による日程のコントロールが出来ません。
自分は疲れからかiOSと同じかと勘違いし、大失敗しました。

事前準備

必要情報の準備

各OS、チームIDや注文番号などが必要です。
Google注文番号はアカウントの登録時にメールで来る番号です。正直そんな昔のもの失くすよね
もし準備出来ない場合は問い合わせが必要です。

スケジュールの検討

移行と同日にアプリもアップデート予定でしたが、iOSは審査等のため不可能でした。

理想は、審査を通しリリース可能な状態にしておく→developer移行→新しい名義側でリリース でしたが、公開待ちでは移管申請が出来ないと途中で気付きました。

結果、リリース→developer移行 となり、1週間ほど差が出てしまいました。
このずれがあっても問題ないよう開発・運用の予定を引きましょう。

※公式に「移行可能な状態」は書いてあるのですが、「移行不可能な状態」の方が注意出来て有り難いので、本エントリの最後に付録として書きました。

レポートのexport

移行後は出来なくなるため、事前にとっておく必要があります。
ただしAndroidはレポート別に1ヶ月ずつしかDL出来ず、全期間のDLを試みると死にました。
普段からとっておくか、gsutilでも使っていれば楽出来たのかな…?

移行実施

移行申請

iOSで2点弾かれました。

TestFlightエラー

TestFlight ベータ版テスト:譲渡する App からすべてのビルドおよびテスターを削除し、テスト情報の各フィールドのデータを消去する必要があります。

TestFlightは使っていませんでしたが、自動的にupされていたようで消したところ解決しました。

課金系エラー

App 用共有シークレット(購入者と共有する必要があります)を生成済みの場合、自動更新、無料、および非更新の登録を含む App のみ譲渡できます。
こちらは課金機能をリリースしたことはないのに弾かれ、iTunesConnectの不具合のようです。問い合わせたところ進めてもらえました。
移行は実施が稀な分、ストア側にも未発見の不具合があるのかもしれません。
複数申請した内の1アプリだけ弾かれ、返答待ちで予定が読めず手順もややこしくなりました。

移行中

iOSは移行申請の翌日に受諾可能通知が来ました。

ステータスが「Pending App Transfer」になると書いてありますが、普通に「配信準備完了(Ready for Sale)」のままでした。
ただしバージョン追加ボタンがdisableで、普段とは違うことはわかりました。
権限の強いアカウントなら詳細を見られるのかもしれません。

移行完了

完了タイミング

Androidは移行申請の翌日にストア反映されました。残作業は無いためこれで完了です:tada:
iOSは受諾後早いものは1時間以内に反映されましたが、遅いものは3日経っても反映されず問い合わせました。
こちらも不具合だったようで個別対応してもらい、受諾から16日で反映されました。
普通は即座に終わるものだそうなので、1日かかった段階でも問い合わせて良さそうです。

iOSはPush, widgetがあるとその設定も必要です。

Push証明書の再設定

プッシュ通知用に関連付けられたクライアントSSL証明書は譲渡されません。アプリケーションでApple Push Notificationサービス(APN)が使用されていた場合は、譲渡先ではMember Centerを使用してクライアントSSL証明書を作成し、このサービスを再度有効にする必要があります。

公式のこの説明を読み、移行完了時点で即座に証明書が使えなくなる=Pushが届かなくなると思っていましたが、
新しい証明書適用までの数時間も普通に届いていました。
差し替えずいつまで使えるのかは不明です。

App Groupsの再設定

widgetでApp Groupsを使用しています。公式に記載はありませんが、これも無効化されるようです。
この辺りを見るに、移行元からグループを削除し、移行先で再登録すれば良いようでした。

ただPushと同じく、移行完了〜再登録までの数時間もwidgetは動いていました。
アップデートするまでは動作するのか、iOS弱いので要勉強です…

移行のつらいこと

テスト出来ない

移行は1度きりです。試すのも、早めにやっておくのも、失敗したら戻すのも出来ません。
作業途中でエラーとなるポイントも未知数でした。

いつ終わるかわからない

各所から日にちを聞かれるものの、答えられません。
Androidは作業時間を教えてくれたので1日以内のぶれで済みましたがiOSは全く読めず、
Push証明書等の後作業や告知日時の調整に苦労しました。
休暇も決めづらく、不在時に反映された場合用の準備などタスクが増えました。

事前には無理でも、せめて変わったらすぐ気付けるよう監視スクリプトを組んでおけばよかったです。

権限上、出来ないことが多い

ストア周りは会社であれば段階的にアカウント権限を振っていると思うのですが、
adminしか出来ない作業が多く、調査や依頼に苦労しました。
admin権限者と拠点が離れており、画面だけ見せてもらうことも出来ず手間取りました。

社外の人に聞けない

開発の相談ならば社外の人にも出来ますが、移行は特殊な事情なので明かす訳にはいきません。
日数の目安でも聞ければ、調整や時期の合意を取りやすかったと思います。

まとめ:大変

今回はアプリに絞って書きました。実際はサーバも移行しますし、関連作業の方が大変です。いやもう本当に。
しかし移行の仕組みが無かった頃よりは、選択肢が広がって有り難いことです。

アプリに関して言えば、情報さえあれば苦労しなかった面はあるので、本エントリを書きました。
もしもっと詳しい話を聞いてみたい方がいたら、 @wiroha までお声掛けください。
移行する人は少ないと思いますが、誰かの役に立てば幸いです。

 

付録

移行不可能な状態

Viewing and Changing Your App’s Status and Availabilityと突き合わせると下記の通り。
RejectedはOKで、Metadata RejectedはNGだと気付き面白い。

  • Waiting For Review
  • In Review
  • 契約の保留(Pending Contract)
  • 輸出コンプライアンス待ち(Waiting For Export Compliance)
  • Pending Developer Release
  • App Store用に処理中(Processing for App Store)
  • Appleのリリース待ち(Pending Apple Release)
  • Metadata Rejected
  • Removed From Sale
  • Developer Removed From Sale

3年ぶりのAndroid開発で役立つ資料まとめ

しばらくディレクション・マネジメント業をしてきましたが、3年ぶりに仕事でAndroidを書くことになりました。
新規開発は4年ぶり。やることは盛りだくさん。
最新事情に追いつくのに参考になった・なりそうな資料をまとめておきます。

IDE: Android Studio

そこから!?という。3年前はeclipseでした。
個人では多少触っていますが、知らない便利機能などありそうです。
アプリ出す頃にはstableになるかな〜と楽観視して3.0を使っています。

言語: Kotlin

助走読本は超最新。Kotlinスタートブックはとても人気ですが、一部古くなってる情報もあるそうなので注意して読みます。

通信・非同期処理・ORM・DI

詳細は各公式資料を読むとして、人気の構成の概要を掴めました。動画だと大変わかりやすいです。
RxJavaは本でも勉強するつもりです。この本は評判は良いものの、初めてだと難しいとの声もあります。

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJavaリアクティブプログラミング (CodeZine BOOKS)

layout

上2つは英語ですが、アニメーション画像が充実しているのでたぶんわかります。
 動画を見る「これは良さそう〜」
→Codelabする「たのしー!」
→Colorful Android読む「XMLだとこうなのかー」と理解が進みました。
Android Studio 3.0では少し画面が変わっていますが、カーソルを合わせたり展開したりすれば欲しい機能は見つかるはず。

他にも、RecyclerViewは当時ありませんでした。

fragment

最近改訂版が出たので、これを読んでおけば間違いないでしょう。

通知

3-4年前は下手するとC2DMでしたが、今はFCM。UIも様変わりしています。
UI周りは最新を追っているので、実装の仕方を追います。まだ 通知チャンネル までは対応しません。

リソース

最初に決めないとぐちゃぐちゃになるのが目に見えているので、これに則っておくつもりです。

デザイン共有

sympli、何これすごい便利〜〜〜ってなりました。(zeplinも機能はほぼ同じのようです)
指示書不要でサイズや色コードがわかるし、解像度ごとで部品書き出せるし、コメント残せるし、
sync押してもらうだけで最新デザイン見れるし、まだ試してないけどAndroidStudioプラグインもあるらしい〜
便利な時代になったものです。

検討中

設計: MVP / MVVM

大事なのに未定。DataBindingが出てからMVVMが主流かと思ったんですが、MVPも多そうな肌感です。
そういえばDroidKaigi2017でCyberAgentさんがアンケートしてたな?と見返してみました。

拮抗してますね。正解は無く、アプリの性質やチーム次第という理解なのですが、
どちらの知見も無くまっさらな状態だと悩みます。

画像ライブラリ: Picasso / Glide

CAさんのアンケートではPicassoがやや優勢。これもアプリ次第という印象ではあります。
最近あまり話題にならないので、もし違ったら教えてください。

デバッグ

Stetho, Timberなど色々あるしAndroid Studio 3.0からは Android Profiler(旧Android Monitor) が出て高機能化しているので、
そちらとかぶっているライブラリもあるのか、まだよくわかっていません。

これから考える・調べる

テスト、セキュリティ、gradle、アニメーションなど。あとはアプリ独自機能に関連する技術。
「これ読んでおくとスッと入れるよ!」とか「最初にこれもやっとくといいよ!」とかあったら教えてください。

これぐらいおさえておけばそれっぽく作れるのでは〜〜と思うことにして、
あとはコードを書きながらまた調べていきたいと思います。

Google I/O 2017に行く準備で買ったもの

初めてGoogle I/Oに行くことになりました。初渡米です。
初めてだといろんなものを買う必要があり、選ぶのも時間がかかります。
直前で今更感はありますが、誰かの参考になるかもしれないので自分が買ったものを紹介します。

SIMカード / ZIP-SIM

現地で買うか迷い、保険としてZIP-SIMを買っておきました。
あまり評判が良くないので、アクティベーションに失敗したり通信が安定しなければ現地で買おうかなと。

Wi-Fi / グローバルWiFi

安くて評判もまぁ良さそうな グローバルWiFiで申込みました。
日本の空港で受け渡しするだけなので楽そうです。モバイルバッテリーのオプションをつけたら5000円ぐらいでした。

デジカメ / RX100M3

良い機会なので小さくて綺麗に撮れるカメラを買いました。
大変評判が良く人気のシリーズです。M3は旧モデルで、中古で5万ちょっとでした。

TSAロックベルト

手持ちのスーツケースが古くTSAロックがないので、ベルトを入手しました。
借り物なのでおすすめかはわかりませんが普通そうです。長さはキッチリ調整が必要。

ネックピロー

時差ボケがツラいはずなので、飛行機で寝れるかが命運を分けると思っています。Amazonで人気の製品にしました。

フットレスト

ネックピローとセットでレコメンドされ、評判が良いのでつい買ってしまいました。
買った後で飛行機にフットレストがあることに気付きました。ふくらはぎ用に試すかもしれません。

腕時計

Wear等と迷いましたが、充電が大変なのと、TOEIC試験用にも使えるので普通の時計をその辺で買いました。
海外では高いものは身につけない方が身の安全も確保出来るので安物で。

海外対応ヘアアイロン

クレイツイオン カールアイロン ポータブルII 32mm FC15N【海外兼用】

クレイツイオン カールアイロン ポータブルII 32mm FC15N【海外兼用】

ヘアアイロンは変圧器で対応出来ないんですね…仕方なく書い足し。
今はクレイツの26mmを使っていて気に入っているので、同じくクレイツで32mm。
携帯用だと温度設定を変えられませんが、180度まで上がるので良さそうです。

携帯スリッパ・携帯歯ブラシ

日本のホテルなら普通にあるけども、アメリカでは無いそうなので。適当に3coinsと100均で買いました。

旅行用シャンプー・コンディショナー

旅行用ミニボトルを買うか、100均のボトルに手持ちのを詰めるか迷った後、1回分お試し用を泊数分買いました。
割高だけどボトルより荷物が減るし、毎日違う使い心地を楽しもうかなと。ドラッグストアで1回分100円ぐらいです。

1dayコンタクト

洗浄液は重いので1dayが便利。アイコフレは安いし自然に盛れますw Amazonランキング1位。

スマートフォンケース・PCケース

わりとハードに持ち歩くので購入。ストラップ付きの方が盗られにくそうという意味もあります。

(追記)ダウンジャケット

夜は寒いそうなのでAmazonで人気の商品を購入。今の時期でもダウン買えるの通販本当有り難い…

(追記)着圧ソックス

飛行機で履くと疲れが全然違うそうです。男性にはこちら↓が良いかもしれません。
ドクターショール フライトソックス M 男女兼用

ドクターショール フライトソックス M 男女兼用

その他、手持ちで済ませるものなど

パスポートなどの貴重品や、常備薬など現地入手が難しいものは持っていくとして、地味に気をつけたいのが乾燥対策。
リップクリーム、保湿クリーム、マスク、目薬などを持っていく予定です。
乾燥で喉を痛めて風邪を引く、パリパリで帰国後も肌荒れ、というのは避けたいので…
あと日焼け止めは持っていきますが、日傘もいるかは悩み中。

女性限定で重要そうなのは生理用品!向こうは品質が違いすぎる上に売っていない場合もあるようなので、
念のためでも持っていった方が良さそうです。

必要そうだけどまだ買ってないもの

サングラス。買ったことがないのでオススメあったら教えてください…!
滅多に使わないので安いもので良い…と思うけども安物だとしのげないのかよくわかりません。


心配性なので準備が大変ですが、楽しみなイベントのためなのであと少し頑張るぞい!
行く方は現地でよろしくお願いします!

フルサイズカメラα7IIを買った理由

ミラーレスカメラを良いものに買い替えました。
買う前は、初心者の自分に違いがわかるのか半信半疑でしたが…

before
f:id:Gateau:20170304114211j:plain
after
f:id:Gateau:20170226182333j:plain

全然違うじゃん。

レンズの違いもありますが、出来が別物すぎて買って良かったです。

少し前の自分はカメラに20万円なんて信じられませんでしたが、今回はきっかけがありました。
2017年3月は自分にとって区切りのタイミングで、祝いの品を自分に贈ろうとネタを探していたのです。
その目的に合致したのが良いカメラでした。

理由1. 10年前の見たい日の写真が無かった

何を買うかネタ探しに10年前の写真を振り返ったところ、見たい日の写真が1枚もありませんでした。
遠出していたはずなのに、何か思いがあったはずなのに、1枚も無い。
本当にその日だったのかも自信がなくなる。
すると、もっと写真を残しておきたい気持ちがわきました。

理由2. 50年先にも被写体の魅力を感じたい

仕方なくその翌日に撮った動画を見たところ、画質が粗く見れたものではありませんでした。
せっかく当時のペットが映っているのに、可愛い・懐かしいより先に画質が気になってしまうのは勿体無い。
写真や動画は、10年先、20年先、もしかしたら50年先にも見るかもしれません。
それなら現時点で最高の写真を撮っておきたいと思いました。
f:id:Gateau:20170329150000p:plain

理由3. 今身近にいても、10年後は会えないかもしれない

動画にいた2匹の内、片方はもう亡くなっています。
寿命を考えると仕方ないことですが、10年前に戻って高画質で撮り直すことなど出来ません。
今飼っているウーパールーパーも10年後には亡くなっているでしょう。今の様子は今しか撮れないのです。
ペットだけでなく、友達も家族も偶然出会った誰かも。

そうして過去や未来を考えていたら、人生の区切りにちょうど良いギフトだと思い、良いカメラを買おうと決めました。
具体的にどの機種にするかは迷いましたが。

α7IIを選んだ理由
  • 大きいと持ち歩かなくなりそうなのでミラーレス
  • 友人が撮った素敵な写真はどれもフルサイズだった

大変満足していて、楽しくたくさん撮りまくってます。

運動も音楽も出来ない自分は出来る趣味が限られますが、カメラは全然問題ないし、一生出来るし、老齢の親とも共通の趣味で良い交流の機会になっています。

あとは腕を上げられるよう、気ままに好きなものを撮っていきます。
さぁあなたも、Welcome to ようこそカメラ沼。

f:id:Gateau:20170329155532j:plain

f:id:Gateau:20170325132314j:plain

技術書典サークル参加の振り返り

6/25(土)技術書典にサークル参加してきました。
同人誌を作るのは初めてでしたが色々と試行錯誤して、
たくさんの方に楽しんでいただけて良かったです!

備忘録も兼ねて、振り返りをしておきたいと思います。
他の方の参考になれば!

当日の概要

設営

スペースはこんな感じ。
f:id:Gateau:20160625105737j:plain
自分の格好はウーパールーパーTシャツ+名札。
f:id:Gateau:20160627224348j:plain
f:id:Gateau:20160617205711j:plain

頒布

「ウーパールーパーを支える技術」表紙込み28ページ、300円で頒布。
37部が2時間半で完売しました!
その後も見本誌を置いていて、欲しかったと言ってくれた人も大勢いて嬉しかったです!

参考までに、頒布ペースを公開。

時間(30分毎) 頒布数
11:00- 8
11:30- 5
12:00- 7
12:30- 10
13:00- 6
13:30- 1

参加前は「6時間で完売するには10分に1冊ペース…そんなに売れるのか!?」と思っていましたが、
実際には5分に1冊ぐらいのペースで売れていたようです。

買えなかった方には申し訳ないのですが、完売すると気楽になって、
話をしたり他を回ったりの時間を作れたのも良かったのかなと思いました。
お隣さんも完売していたので、お互い見本誌を読んで話したり出来て楽しかったです。

良かったこと

  • 同人誌を書いて頒布する経験が出来た!
  • たくさんの人と会ったり話したり出来た!
  • IllustratorInDesignを少し使えるようになった!
  • たくさんの技術書に囲まれて、学ぶ意欲が上がった!
  • オフ会状態になり、今後の交流のきっかけになった!
  • グッズを作ったり、売り子で姉が名古屋から来てくれたり、とにかく楽しかった!

大変だったこと

  • すべて初めてなので調べながらでとても時間がかかった。
  • 文章も図も編集も設営準備もサイト制作も、全部自分でやるのは作業量が多かった。

反省点

  • こんなに早く完売すると思ってなかった。完売後に電子に切り替えてた人達はさすがだー。
  • 見本誌が1冊だと2人以上同時に来て足りないことがあった。
  • 自分ことで精一杯で他のサークルチェックが疎かに。買い忘れが…
  • 運営から来るメールを売り子に共有しておらず、ルールの認識違いがあった。

収支

良いのかわかんないけども、他の方も公開してたので公開しちゃうよ!
参考になれば。

売上

300円 × 37部 = 11,100円

経費

どこまで含めるのか微妙ではありますが。

本の制作費用

内容 金額
印刷代 10,037円
参加費 5,000円
Adobe Illustrator(1ヶ月) 3,180円
Adobe InDesign(1ヶ月) 3,180円
勉強会参加費*2 2,000円
資料用ウーパールーパー本 約 1,000円
勉強会、資料集め、当日などの交通費 約 2,000円
デザイナー 兼 売り子代 打ち上げ代(姉なので破格)
執筆合宿費 2万円ぐらい?

スペース用備品

内容 金額
1,200円
ポスター*3 1,000円
ポスタースタンド 1,400円
100均の備品(台、メモスタンド * 2、タブレット立て、
本立て、コインケース * 2、ラミネート * 2、
ポスターケース、名札、セロテープ、ミニカッター)
1,300円
POP印刷 120円
Tシャツ 3,500円

うわぁ、実は合計金額を計算したくないぐらい使っていた\(^o^)/
これでもAdobe製品は初回30日無料を使えたこと、
印刷所を超安いところにしたこと(その分、色の出はいまいちだった)
デザイン・売り子は家族なおかげで使ってない方だと思います。

赤字黒字ではなく「趣味でお金を使っている」という感覚が正しいです。
部数が少ないところはどこもそんなもんかと。
ただ赤字が多すぎると続けられないので、もう少し何とかなると良いですね。

お金に関して余談

「一般参加も有料で良いからもっと広い会場を」という声もチラホラ見かけましたが、
当日の人の入り次第で運営が赤字をかぶるリスク、
受付の手間、再入場やトラブル時の返金、不正対策など、神経も人手もかかりすぎるでしょう。

お金を集めるのにかかるコストを上乗せすると高めになり、
来場者が少なくなり、サークル側としては悲しくなるので、難しいところですね。

用意したお釣り

小銭は500円玉×3、100円玉×18で用意してました。
最初の方に1000円札が続き、足りなくなるか不安なところでした。
確か100円玉が10枚切ったタイミングや、500円玉が残り1枚になったタイミングがありました。
途中ハラハラしたので、安心するならもう少し用意した方が良かったです。
(最終的には100円だらけになりましたが)

俺GJだったこと

  • タブレットを使ったウーパー中継の展示は話すきっかけになって良かった。
  • タブレット用に電源タップを借りていたが長さが足りないことを想定し、延長コードを用意しておいた。USBケーブルも延長を用意し、それでちょうど足りるぐらいだった。
  • POPなどを多めに印刷しておいたので、足りないときにすぐ出せた。
  • 布にポケットをつけておいたので、ペンや追加用POPなどすぐ出せて便利だった。
  • 結構喋り通しなので、のど飴を用意しておいた。
  • twitterで活発に発言していたので、他のサークル参加者さんに認識してもらいやすかった。

失敗したこと

  • 前日の飲み会で2次会まで参加し、目覚ましもかけずに寝てしまった(でも寝坊しなかったのは奇跡)。
  • タブレットの充電が不十分で、充電しながらでも電池が途中で切れてしまった。(代わりに携帯でしばらくつなぎをした)。

わりと用意周到なタイプの自分ですが、直前に酒でやらかしちゃいましたね☆

さいごに

技術書典が無ければ本を書き上げることは出来なかったし、
ダイレクトに読者のリアクションが見ることは出来なかったので、最高の体験が出来ました!
電子化・増版なども出来たら良いなーーー

制作の道のりも書いてたのですが長くなりすぎたので、また別で書きたいと思います!