hiragram no blog

iOSとか

近況(8月~)

仕事がいろいろ変わって(not転職)、SwiftiOSアプリを作り始めました。これまでは既存のObjcなアプリをメンテナンス&機能追加していくような感じでしたが、今度はゼロから全部をひとりで。めちゃめちゃ周りの力を借りながらやってます。

Apple Watch買いました。良いです。1日だけ裸で使ったけど、普段腕時計をしないのでうっかりぶつけまくりでやばいと思ったのでSpigenのGショックみたいなケースを買いました。画面保護フィルムもついてるし現状良いです。

facebook辞めたい。友達かもみたいなところに弟が出てきたし。Twitter黒歴史クリーナーみたいに過去の投稿をゴリゴリ消すスクリプトを書いたりしたんだけど、どうやら投稿したアプリからじゃないと消せないっぽい。やめて欲しい。

引っ越しを迷っている。今年の年末で部屋が更新になるので、更新するかどうか。もうちょっと都心から離れて、車買いたい。けど今のところ普通に気に入ってる。うーむ。

そんなかんじ。

YAPC::Asia2015のトートバッグに書いてあるコードをいじいじする #yapcasia

どうもどうも。1日に2度ブログを書くのは初めてです。

YAPC::Asia 2015のお土産でみんなもらったトートバッグにPerlのprint文が書いてありますよね?

f:id:hiragram:20150820224732j:plain

おみやげの内容については、さっき僕が書いた記事を御覧ください。

YAPC::Asia 2015のお土産を紹介するぞー #yapcasia

YAPCにいる最強のPerlプログラマのみなさんはおそらく実行するまでもなく出力を読み取ることができたんだろうなあと思うんですが、僕はPerl力が無いので得体のしれないコードを無防備に実行してしまいました。すみません。

さて、トートバッグに書いてあったコードはこんな感じです。

print 115.117.112.112.111.
114.116.101.100.32.98.
121.32.76.105.118.101.
115.101.110.115.101.32.
73.110.99.46.10;

これらのピリオドで連結された数字一つ一つがアスキーコードで、それぞれがアルファベット1文字に対応しています。

アスキーコードについてはWikipediaを。

ASCII - Wikipedia

ほかにも色々試してみた。

#!/usr/bin/perl

use strict;
use warnings;

print 115.117; # -> 115.117
print "\n";

print 115.117.112.
112.111.
114.116.101.100; # -> sup112.111rted
print "\n";

print 115 . 117 . 112 . 112 . 111; # -> 115117112112111
print "\n";

print 192.168.0.1; # -> �
print "\n";

結合する数字が2つだと小数点、スペースが入ると文字列結合とみなされる。

以下のコードで任意の文字列が表示されるYAPCトートバッグが作れるはずです。

#!/usr/bin/perl

use strict;
use warnings;

my $message = $ARGV[0];
my @ascii = unpack("C*", $message);
print "print ". join('.', @ascii). ";\n";

引数に文字列を渡します。

$ perl yapc.pl "にっこにっこにー♪
あなたのハートににこにこにー♪
笑顔届ける矢澤にこにこー♪
にこにーって覚えてラブにこー♪"
print 227.129.171.227.129.163.227.129.147.227.129.171.227.129.163.227.129.147.227.129.171.227.131.188.226.153.170.10.227.129.130.227.129.170.227.129.159.227.129.174.227.131.143.227.131.188.227.131.136.227.129.171.227.129.171.227.129.147.227.129.171.227.129.147.227.129.171.227.131.188.226.153.170.10.231.172.145.233.161.148.229.177.138.227.129.145.227.130.139.231.159.162.230.190.164.227.129.171.227.129.147.227.129.171.227.129.147.227.131.188.226.153.170.10.227.129.171.227.129.147.227.129.171.227.131.188.227.129.163.227.129.166.232.166.154.227.129.136.227.129.166.227.131.169.227.131.150.227.129.171.227.129.147.227.131.188.226.153.170;

確認します。

$ perl -e "print 227.129.171.227.129.163.227.129.147.227.129.171.227.129.163.227.129.147.227.129.171.227.131.188.226.153.170.10.227.129.130.227.129.170.227.129.159.227.129.174.227.131.143.227.131.188.227.131.136.227.129.171.227.129.171.227.129.147.227.129.171.227.129.147.227.129.171.227.131.188.226.153.170.10.231.172.145.233.161.148.229.177.138.227.129.145.227.130.139.231.159.162.230.190.164.227.129.171.227.129.147.227.129.171.227.129.147.227.131.188.226.153.170.10.227.129.171.227.129.147.227.129.171.227.131.188.227.129.163.227.129.166.232.166.154.227.129.136.227.129.166.227.131.169.227.131.150.227.129.171.227.129.147.227.131.188.226.153.170;"
にっこにっこにー♪
あなたのハートににこにこにー♪
笑顔届ける矢澤にこにこー♪
にこにーって覚えてラブにこー♪

これでトートバッグも作り放題です。

Twitterもよろしく

YAPC::Asia 2015のお土産を紹介するぞー #yapcasia

今日前夜祭でした。明日からが本番です。

id:y_uukiさんのブログ論、とてもおもしろかったです。

僕は個人スポンサーチケットで参加したので、スポンサー特典も含めて頂いたノベルティを紹介しますー。

トートバッグ

YAPC::Asiaの缶バッチもついてます。

f:id:hiragram:20150820224729j:plain

Perlのprint文がべろべろ書いてある。気になる人は自分で実行してみてください。

追記: 記事書きました YAPC::Asia2015のトートバッグに書いてあるコードをいじいじする #yapcasia

f:id:hiragram:20150820224732j:plain

イベントパンフ

と、タイムテーブル。

f:id:hiragram:20150820224736j:plain

クリアファイル

ステーションメモリーズ

モバイルファクトリーさん。実はこれ貰ったの2枚め。

f:id:hiragram:20150820224822j:plain

pixiv/岸田メル

裏には「お絵かき楽しす」って書いてありました。

f:id:hiragram:20150820224809j:plain

アカツキさん

「ゲームには世界を変える力がある」かっこいい

f:id:hiragram:20150820224813j:plain

Tシャツ

茶色Tシャツ(一般)

両面プリント。背番号はみんな10です。

f:id:hiragram:20150820224754j:plain f:id:hiragram:20150820224758j:plain

赤Tシャツ(個人スポンサー)

鮮やかな赤です。何日目にどっちを着て行こうか迷う。 こちらは背面はプリント無し。

f:id:hiragram:20150820224819j:plain

パーカー(個人スポンサー)

着る季節はもう少し先ですが。

f:id:hiragram:20150820224801j:plain

シンプルかつキャッチーで素敵です。

f:id:hiragram:20150820224804j:plain

タンブラー(個人スポンサー)

アルミ製のタンブラー。YAPC::Asia TOKYO 2015と刻印されていてめっちゃかっこいい。

会社の机に置こう。

f:id:hiragram:20150820224739j:plain

ステッカー/企業チラシなど

いろいろ。

f:id:hiragram:20150820224816j:plain

ステッカーは他にも。 YYCは予想外でしたよmixiさん。

f:id:hiragram:20150820224742j:plain

その他

サイリウム

なんでw

f:id:hiragram:20150820224745j:plain

Seesaaさんの手ぬぐい(?)

長い薄い布が入ってたけど手ぬぐいであってるのか

f:id:hiragram:20150820224749j:plain

シャノンさんの付箋と@typeのウェットティッシュ。

f:id:hiragram:20150820224751j:plain

おいしかったです。

f:id:hiragram:20150820224726j:plain

明日からが本編

今日も夜なのにわざわざビッグサイトまで人が集まってすごい熱気でした。

実は今年YAPC初参加で、今年で最後なのが非常に残念ですが、楽しみたいです。

Twitterもよろしく

高専の良し悪し

僕は高専卒です。

学校の中で一番新しい学科で、最先端の情報教育が受けられるらしいです。

高等専門学校 - Wikipedia

どこの高専かはここには書かないけど聞かれれば普通に答えるのでTwitterとかで聞いてください。

高専に進学してよかったか -> Yes

パソコンが好きだったな〜というのと普通の勉強が嫌いだったな〜という気持ちがあって、高専だったら好きなこと学べるのかな〜と。

入ってから知ったけど結局歴史も生物も古典も普通にあった。

大学受験

あと中学で進路考えてる時点で大学受験が嫌すぎた。中学からの進路考えてる/勉強してる時点ですでに嫌気が指していたからもっと勉強しないといけない(というイメージの)大学受験とかまともな事にならないと確信していた。18歳になろうかという一年を大学受験のための勉強に潰されなくて済んだのでこの点については特に高専を選んで大正解だったと思う。

自分のパソコンが当たり前に持てた

プログラム書くしレポートも書くのでノートPCを買ってもらった。

多分普通の高校行ってたらそんなもん無かったと思う。うちは裕福ではない。

寮に入った

僕がいた高専は1年生は全員入寮する決まり(2年め以降は自分で決められる)だったので初めて親元を離れて暮らした。寮には2年いた。

中学の頃は家庭のごたごたがあってあんまり家に居たくなかったので、めちゃめちゃ早く登校して7時には学校にいたりしたし、それくらい家に居たくなかったので寮に入りたかった。

寮ではいいことも悪いことも学んだしまあまあ有意義だったと思う。

高専の教育に満足か -> No

中学生向けの学校案内パンフには「これからは情報が〜最先端の教育が〜」みたいなことをいっぱい書いてあったからまんまとそれに釣られたなという感じ。どこが最先端やねんという感じ。

歴史も生物も古典もある

暗記系の科目がとにかく嫌いだったし意味ないと思ってたので普通の高校でそんなんやりたくないから高専選んだというのもあって、入学して時間割が配られた時にそれらの嫌い科目がそこにいた時はまあまあ衝撃だった。

基礎が大事マンしかいない

基礎が大事なのは大いにわかるが結局基礎しか教えてないじゃないか。

プログラミング全然最先端じゃない

プログラミングを教えるのも基礎が大事マンなのでプログラミングとはこういうものである、逐次分岐反復である、みたいなのしか教えてもらった記憶が無い。

1年次でC、2年次でC++やったけど、C++はprintfがcoutになっただけみたいなコードばっかりだったし、作ったものもレジとかじゃんけんゲームとかとにかくモチベーション全然上がらないものばっかり。

本1冊で全部学べそうな薄い内容だった。

他の学科ではJavaとかPerlとかやってたみたいで、そっちが羨ましくてしょうがなかった。

高専卒で就職してよかったか -> Yes

学校にいたとき

僕がいた学科では半分くらいが就職して半分くらいが大学3年に編入してった。

これは多分どこのも一緒なんじゃないかな〜と思うんだけど、高専って地元企業と仲良しこよしなので、地元就職狙うんだったら最強な気がした。地元の企業のおじさんが体育館に集まって会社説明するみたいなイベントも学内でやった。選ばなければ就職できないことはまず無いと思う。

でも僕は東京に出たかったので地元でブイブイ言わせてる学校ネームみたいなのはクソほども役に立たない。わかりきってること。

就活のときまだ18歳というのがまあまあ目立ててよかったと思う。

高専の使命は多分地元の企業に便利に使える若い学生を誘導することなので、学校と縁もゆかりもない東京に出ていこうとするような奴は学校的にはどうでも良かったんだと思う。勝手にやれば〜って感じ。

地元就活組は最終学年が始まる春くらいにようやくそれっぽい企業研究はじめて先生にあてがわれた会社に吸い込まれていったけど、自分でやりたいこといきたいところがちゃんとあるなら学校の流れに乗っかってると確実に失敗する。

就職率を売りにしている高専だから、就職留年とか進路未決定のまま卒業とかそういう不名誉な生徒は許されず、自力で就活に失敗したら地元の工場で作業員として労働力その1になるだろう。

就職してから

働き出して1年と4ヶ月くらい経つが、進学じゃなくて就職を選択したのは正解だと思う。

同期はみんな年上だし、今年入ってきた後輩も全部年上だからたまにやりづらい時はあるけど、学生やってた頃よりは普通に毎日楽しい。

業界的にも、まさに学歴より実力という感じなので、2年学ぶか、2年働くかはどういう仕事するかにもよるだろうけど僕は働く方を選んだ。

高専をおすすめするか -> No

僕はたまたま運が良かっただけだと思っていて、中学の段階で工業に絞って選択肢を狭めるよりも、普通に高校に行ってそこでもう少し勉強して、それから大学でやりたいことをやればいいと思う。

教育の質は、間違いなく大学よりは低い。

中学生の皆さん、頑張ってください。

現役高専生のみなさん、まあ頑張ってください。

先着順申し込みに負けない勉強会情報の集め方

🍺が美味しい季節ですね。

ここ数ヶ月、月に3回くらいのペースで外部の勉強会にオーディエンスとして参加しています。いつかはスピーカー側に立ってみたいものです。

勉強会への参加申し込みには2種類あって、先着順のものと抽選のものがあります。トレンドなトピックであったり、会場が人気のオフィスであったり、スピーカーが有名な人だったりすると、あっという間に定員を超えてしまい、イベントを知った時にはもう満員なんてこともよくあります。

そこで今日は普段僕が勉強会情報を得るのに使っているWebサイトやTwitterアカウントなどを紹介したいと思います。

イベント情報サイト

connpass

http://connpass.com

f:id:hiragram:20150802113424p:plain

言わずと知れた、「人をつなぐIT勉強会・イベント支援サイト」。

非常に活発な印象で、サイトも綺麗で使いやすいです。僕は毎朝PCからチェックしています。新着イベントや新着グループのフィードを眺めて面白そうなものがあったら申し込んでいます。

iPhone向けのアプリがありますが、Twitterアカウントでログイン仕様としたら「エラーが発生しました」と表示されるので僕は使っていません。

dots.

http://eventdots.jp/

f:id:hiragram:20150802113418p:plain

各種イベント情報サイトを横断して検索できます。つい先日(7/29)サイトがリニューアルされて今風の見た目になりました。

検索対象のサービスは

  • ATND
  • connpass
  • DoorKeeper
  • Zusaar

リニューアル前は検索が遅く、イベント情報の更新が遅く、なかなか使いこなせないサイトだったんですが、リニューアルしてからは検索がずいぶん軽くなった気がします。更新頻度についてはまだあんまりわかんないです。

使い方としては、上述のconnpassと同じように毎朝新着がないかをチェックするのに加えて、あるトピックに関するイベントを探したいときなどにここで検索しています。

あと、複数のイベントサイトに情報を出して参加者を募っているケースがまれにあって、例えばatndの枠は満席になっちゃったけどconnpassにはまだ空きがあるみたいな状況になることがあります。そういうのにもdotsであれば気づけるので、横断検索できるのは便利です。

毎朝おすすめイベントをメールで送ってくれるのですが、それはあんまり精度高くないな−という印象。Webをみるきっかけにはなるので一応購読していますが。

最近はdots独自運営のイベントもちょいちょいやってるっぽい。

Twitterアカウント

connpass

@connpass_jp

connpass公式アカウント。

新たに公開されたイベントの情報をツイートしてくれるので、先着順で人気のあるイベントを狙うならフォロー必須です。

新着勉強会bot

@event_subscribe

こちらも新着イベントを定期的にツイートしているアカウントなのですが、特徴的なのが@event_subscribe sub キーワードとツイートするとそのキーワードが含まれるイベントが公開されたときにmentionで通知してくれるのです。まあまあ便利です。僕はswift,potatotips,ios,react,ltなどをsubscribeしています。

IT勉強会@関東

@atnd_kanto

こちらは地域を限定したイベント情報をツイートしているアカウントです。関東の他にも北海道(@atnd_hokkaido)、東北(@atnd_tohoku)、中部(@atnd_chubu)、近畿(@atnd_kinki)、中国(@atnd_chugoku)、四国(@atnd_shikoku)、九州(@atnd_kyushu)のアカウントがあります。

僕はまだ東京以外のイベントには参加したことがありませんが、このアカウントは神奈川など近隣県のイベント情報も発信しているので、合わせてフォローしておくといいと思います。

さいごに

先着申し込みに遅れた/抽選に漏れたらもう参加できないんだうわあ〜となりがちですが、前日当日になってキャンセルする人結構います。たとえ補欠だったとしても、キャンセル待ちとして扱われるので自分が補欠何位なのかを把握して、当日までイベントページをちょいちょいチェックするのがお勧めです。20人くらい平気でキャンセルすることもあるので。

しょぼいライブラリを公開したあとの話

興味を持ってもらえるのは嬉しいという話。

まえがき

しょぼいライブラリを公開した話 -> 3連休で初めてOSS活動に足突っ込んでみたらクソ簡単だった

その後

達成感の熱を持ったまま私は追加機能のIssueを書いたりCocoaControlsに掲載申請だしたりしていたけどそれも徐々に落ち着いてきて、しょぼいライブラリだしこんなもんかと1から増えないStarを眺めていた。

6時前に起きてちまちまコード綺麗にしたりブランチ切ってみたりしていたある朝、ふとメールボックスを見ると

スクリーンショット 2015-07-30 19.51.55.png

↑誰かがIssue立てた

やべえ!オープンソースっぽい!

Re-use YHImageViewer

スクリーンショット 2015-07-30 10.39.26.png

   画像開いて、詳細みて、フリックで閉じるのが"繰り返せたら"便利だぞ  

スクリーンショット 2015-07-30 10.40.05.png

   おっと使い方が悪かったわ、普通に繰り返し使えたわ、すまん  

o0450027713074673360.jpg

で終わらせるのももったいないので返事を書いてみた。

スクリーンショット 2015-07-30 20.22.22.png

   コメントありがとうございます!  初めてのオープンソースライブラリなので興味を持ってもらえて嬉しいです!  どんなIssue、コメント、指摘も歓迎します!  

ついでにちょっと聞きたいことがあったので聞いてみた。

スクリーンショット 2015-07-30 20.27.11.png

   ところでどうやってこれを見つけたのか教えてほしいっす。  まだCocoaControlsにも乗ってないし、Starも1(おれの)だし。  

返事きたらイイナーと思って書いた次の日、

スクリーンショット 2015-07-30 20.35.39.png

   CocoaPodsのWebサイトで見つけたぜ〜。こいつは俺が本当に欲しかったものだ。俺はviewerをUITableViewCellから呼び出したかったから、UIViewControllerにデリゲートメソッドを生やしたくなかったんだよ〜。(ほかの似たようなライブラリはそうしないと使えない)    ズーム機能が待ちきれねえよ〜マジその機能欲しいよ〜。作ってくれてありがとよ〜!  

note-2011-07-06-06h44m13s225.jpg

普通に嬉しい

3連休で初めてOSS活動に足突っ込んでみたらクソ簡単だった

飛ばしっぽいタイトルですまんの😁

やってることは全く大したことないけど、思ってたより100倍くらい簡単にできたので書きます。

How to系の話はもう他にいくらでもあるので以下の内容は書いてません。

  • SwiftiOSライブラリを作る方法
  • CocoaPodsに公開する方法

やったこと

iOSライブラリYHImageViewerを作って、CocoaPodsに公開した。

なにこれは

f:id:hiragram:20150720185403g:plain

Twitterアプリなんかでよくある、サムネイルをタップすると画像がフルスクリーンで表示されて画像をスワイプしたり背景をタップしたりすると元の画面にもどる奴です。

作ったよアピールがしたかっただけなので忙しい人はここからは別に読まなくていいです。

経緯

  • 今年の4月から所属プロジェクトのネイティブアプリ開発を担当してた
    • それまでアプリ開発の経験ほとんど無し
    • Objective-Cで書かれたアプリのバグ修正とか機能追加とか
    • 以前はPHPでサーバーサイド書いてた
    • 最初はすべてが意味不明だった
      • たのしくない👊( ˘ω˘ )
  • そして慣れた
    • Objective-C触り始めて3,4ヶ月くらい、なんとなくiOSの勘所もわかりはじめた(気がする)
      • たのしい!✋( 'ω' )
  • Swift書きたい
    • Swift読みやすいじゃん もうSquare bracketなんて書きたくないし見たくないよ
      • 角括弧NO👎[ 'ω' ]
  • オープンソースに興味
    • 最近外部の勉強会とかミートアップみたいなのに積極的にいくようにしていて、前で発表する人たちつよい、つよくなりたいと思った
      • 何か実績を💪('ω'💪)
  • Tweetbotの画像タップした時の触り心地が好きすぎた
    • 言葉で説明できないからみんなTweetbot使おうな
    • これ使いたい、でもライブラリとかなさそう、じゃあつくろう

結論から言うと、作りたかったTweetbotの画像プレビューの操作感は全然実現してないんですが、ミニマムな機能は作ったので一旦出してしまえと思って公開しました。

やって思ったこと

達成感がある。すごい。

あと、今まではなんとなく作ってたオレオレ機能って、自分しか使わないから多少使いにくい設計しててもまあいいかなってなってたんですけど公開して他の人が使う(かもしれない)ことを考えると、綺麗に書こうとか設計気をつけようとかそういう意識をより強く持てると思った。

CocoaPodsめっちゃ簡単。

今回は100行くらいのちょろいクラスを作ったけど、その100行を毎回違うアプリで書くのもあほらしいので、自分の中で再利用できそうなものはどんどんpod化して公開していこうとおもった。

公開するとメンテナンスのモチベーションになる。

みんなやろう。

参考にしたもの

iOS向けのライブラリをCocoaPodsで配布する

最初からCocoaPodsに公開することは決めていたので、手を動かし始める前にCocoaPodsのイロハを調べてるときに見ました。

Podfileでローカルのパスを指定してpod installできるの知らなかったので助かりました。

自前のライブラリをCocoaPodsで管理するメモ

podspecをチェックするのに、pod spec lintでやってたら毎回エラーが出て、pod spec lint YHImageViewer.podspecでやれば通るということに気づけました。