builderscon tokyo 2017に行ってきた
前夜祭
- みんな大変な思いして、そんで前に進んで行っているんだなぁと
ベストトーク賞に投票した3つの発表
横山三国志に「うむ」は何コマある?〜マンガ全文検索システムの構築
- 画像認識してコマの抜き出し、抜き出したコマからOCRで文字認識、認識させた文字を使って検索、さらに翻訳
- 公開されていた検証用サイト使わせてもらったんですが、ほんとよくできていて、これは潮出版社が三顧の礼で迎えるべきプロダクトだと思いましたわ・・・
- また、コマ分割アルゴリズムの明確さ、コスト意識溢れる設計、褒めるときりがない
- 懇親会でも作者さんに感動した旨を伝えることができて、そこまで含めて完全に良かったです
Chrome拡張を使って様々なWebサービスをハックする
- 普段、FirefoxのGreasemonkey使って業務用Webを勝手に使いやすくしているので、興味をもって聞かせてもらった話
- うちの場合は想定ユーザが自分だけなので、自分だけが使えれば良い・・・というところで終わってしまっていたのだけど、この発表はチーム、グループに配布することを考えて便利に作り込んであるなぁという印象
- あと、テーブルの並べ替えなんかは自分でもやってみたい
Ionic 3+ではじめる次世代アプリ開発(HTMLでiPhoneアプリをつくろう!)
- 激しい煽り口調はないのに、なぜか当日即インストールして、とりあえずサンプルアプリをMac上で動かすところまで持って行ってしまったionic3
- 「HTML5だけでいいんです!」と言われつつも、裏で動いてるAngular4とかが気になって仕方ない
- iPhone実機で動かすところまでやってみたけど・・・
=== BUILD TARGET MyApp OF PROJECT MyApp WITH CONFIGURATION Debug === Check dependencies No profiles for 'io.ionic.starter' were found: Xcode couldn't find a provisioning profile matching 'io.ionic.starter'. Code signing is required for product type 'Application' in SDK 'iOS 10.3' ** ARCHIVE FAILED **
- xcodeで何かする必要がありそう、ってところまではわかったが、厳しいので一旦離脱
- やっぱ環境構築がネックだよなぁ・・・
- 初心者向けハンズオンとかあったら行きたい
その他
- 会場快適でした。YAPC2013、2014でお世話になったけど、広くて空調効いてて良かったです
- そういえば、無線LAN全く切れなかった
- ストラップというか、名札最高でした
今回の名札、twitterアイコンが印刷済みで、ほんとナイスソリューション。他のカンファレンスでもやってほしい #builderscon
— sironekotoro (@sironekotoro) 2017年8月4日
LTでバリデーション大変だったとのお話があったけど、名札にtwitterアカウントの画像があるのすごい良かった。それを元に話しかけていただいたり、こちらも探して話しかけたりと、めちゃくちゃ有用だった。企画して形にしたスタッフさん、本当にありがとう。 #builderscon
— sironekotoro (@sironekotoro) 2017年8月4日
https://t.co/OpjjwO8dpX pic.twitter.com/ffDbQoLnx3
— sironekotoro (@sironekotoro) 2017年8月6日
Perl入学式 2017 東京 #4 と正規表現キャプチャ変数
- 教える事で学ぶことがある、とよく言われますがこれは本当にそうで
my $words_ref = [ 'alice loves meat!', 'bob loves sushi!', ];
このような配列のリファレンスを受け取り, リファレンスに格納された文字列について,「loves」の後に記述されている好きな食べ物の単語を正規表現で取得し,「alice -> meat」, 「bob -> sushi」のように表示するサブルーチン, love_foodを書いてみよう. https://github.com/perl-entrance-org/workshop-2017/blob/master/4th/slide.md
- うちの解答例がこれ
use 5.012; use warnings; my $words_ref = [ 'alice loves meat!', 'bob loves sushi!', ]; for my $line (@$words_ref) { if ( $line =~ /(\w+) loves (\w+)/ ) { say $1 , "->", $2; } }
- ここで、受講生の方から以下のようなコード書いたけど、この動作は仕様か?という質問があり
use 5.012; use warnings; my $words_ref = [ 'alice loves meat!', 'bob loves sushi!', ' loves ramen' ]; for my $line (@$words_ref) { if ( $line =~ /(\w+) loves (\w+)/ ) { say $1 , "->", $2; }else{ say "\$1 is " , $1; # $1 is bob say "\$2 is " , $2; # $2 is sushi } }
正規表現のキャプチャを連続して行なっている時、正規表現のキャプチャにマッチしなかった場合、キャプチャ変数
$1
,$2
の内容は、前回マッチの内容が残る?というものこれ、知らなかったんですが、実際にそうらしく
キャプチャ変数が更新されるのは、マッチが成功した時だけである。マッチが失敗したら、たとえマッチの一部が成功したように見えても、キャプチャ変数の内容はそのまま残る。
Effective Perl 第2版 - Joseph N. Hall, JoshuaA.McAdams, briandfoy - Google ブックス
- Effective Perl 第2版、持ってるんだけど全くわからなかった・・・
いやもう勉強になるわ・・・受講生の方からの質問で正規表現キャプチャが失敗した時にキャプチャ変数の内容が更新されない、という話を聞いて調べたらその通りだった。なるほど。 https://t.co/b4DEsVwEuH #Perl入学式
— sironekotoro (@sironekotoro) 2017年7月22日
博多に行ってきた
あんまりPerlにもMacにも関係ない話
- さっき、YAPC::FUKUOKA 2017 Hakata のblogをあげたんだけど、書いている途中で「これっておっさんの一人語りでノイズだわ」って思った部分だけ切り出しました
6月30日 いざ博多へ
- 九州に行くのは2012年のB1グランプリ北九州 以来
- その時は熊本空港に降りた
- 福岡空港は多分・・・7年か8年ぶりくらい・・・?
博多到着
福岡空港着。何回きてもめっちゃ市街地の上を飛ぶのは怖さある。今日は海の中道横断して侵入してくるルートだった。
— sironekotoro (@sironekotoro) 2017年6月29日
博多空港でご飯の選択肢狭くなり中 pic.twitter.com/BmiIKwPvXw
— sironekotoro (@sironekotoro) 2017年6月29日
- 冬に行った新千歳でも工事中だったし、やっぱ2020年のオリンピックに向けて全国の空港で整備が進んでるのかな
- この時点で朝の8時だったので、空港の売店から実家方面にお土産発送
博多散策
- JR博多駅近くのホテルに荷物を預け、日本最高の公園である大濠公園へ歩いて行ってみる
- いつもは博多の友達と一緒だったので地下鉄使ってたけど、一度歩いて行ってみたかった
- 「国体道路」なる太い道を1時間半くらいで到着。
大濠公園のこのスケール、静寂、アクセスの良さ、日本最高の公園だと思う。めちゃくちゃ良い pic.twitter.com/ubQ4ZbKIwh
— sironekotoro (@sironekotoro) 2017年6月30日
5000兆円あったら大濠公園の近くに家買ってすみたい(ささやかな夢
— sironekotoro (@sironekotoro) 2017年6月30日
うわ、大濠公園の中にスタバできてる・・・湖見ながらドヤりてぇ・・・最高じゃん・・・
— sironekotoro (@sironekotoro) 2017年6月30日
- 帰り道(歩き)、前夜祭の会場となるヌーラボさん横のお寿司屋さんでお昼を食べる。
ヌーラボ横のお寿司屋さん、見た目に反して結構お腹膨れた。これに味噌汁ついて810円は安い pic.twitter.com/ahmIHZU6sR
— sironekotoro (@sironekotoro) 2017年6月30日
- ここで川の上にぶら下がってたバイク、落ちちゃったのかな
10年くらい前に来た時は、本当にバイクがぶら下がってたんだけどなぁ。隣のマンションの屋上に引っかかってるのみ。 pic.twitter.com/NIAAIzjxYa
— sironekotoro (@sironekotoro) 2017年6月30日
- いったんホテル戻ってシャワー浴びようとしてビックリした
曇り空と油断した、なーんて思ったが、日焼け止めとか付けたことのない人生だったな pic.twitter.com/O2XliJjbE2
— sironekotoro (@sironekotoro) 2017年6月30日
- 20年ぶりくらいに日焼けした
- この後、皮もむけた
- この日は3万歩も歩いた
7月2日 陥没事故現場
博多駅前の陥没したところ、ここか! pic.twitter.com/RzyWS1cUmb
— sironekotoro (@sironekotoro) 2017年7月2日
柳川へ
- 博多には結構な回数いってて、博多市内の観光名所はだいたい見て回っていたので、YAPCのblogを参考に柳川へ
- 柳川までは西鉄天神駅から特急で1時間ちょっと
- 途中、チェッカーズの出身地として有名な久留米の街を経由。結構大きな街だった
- 平成も30年になろうかというこのご時世、チェッカーズとか知らない人多そうだよなぁ
- 柳川は水郷、水の都といった趣。
- お腹が空いていたので、柳川駅からバスで旧柳川藩主邸の「御花」へ
- 柳川名物「うなぎのセイロ蒸し」をキメました
・関東:背開き→切る→串にさす→蒸す→蒲焼(タレ焼き)
・関西:腹開き→素焼き→蒲焼(タレ焼き)
・柳川:背開き→素焼き→蒲焼(タレ焼き) - どっち開きかはわからないんですが、おいしかったわ〜
- 一食3000円超えるとか、普段の暮らしでは理性ブレーキが効いて無理だけど、それが取っ払われる旅行だからこその贅沢
- 食べた後、川下りして柳川駅へ・・・と思ってたら、どうも駅行きは団体参加貸切しかない模様!!!
- Q.でも川下りはしたい!どうする!
- A.一度駅に戻って川下り
- なお、完全に無駄だったかというとそういうことはなく、御花近くの柳川城跡などを見たりしたのでした
- 盛り土と石垣だけだったけど、堀の近くにあって水城って雰囲気はあった
- 柳川城跡近くで運良くタクシーを拾い、船着き場まで
- 炎天下だったので、幸運だった
- そこから、川下り開始。目的地は御花。さっきまでそこいたよ!
- なお、同乗のお客さんは台湾と韓国の方々
- インバウンドすごい
- 博多もインバウンドの方が本当に多かった
- どういう紹介のされ方してこの柳川にいるんだろう?Japanese traditional old waterfront city とか?
- 船頭さんはご年配の男性の方でしたが、橋をくぐる時には中国語とハングルで「頭を下げて」と言っておりました
- 女性の船頭さんもいるとのこと
- 昔は「川下りなんて年寄りな・・・」って思ってたけど、川から見上げる街の様子なんかが楽しくて、俺も年取ったなーってことに気づきました
- 川下りでせっかく御花に戻ったので、お土産品とか見てたけど、「さげもん」なる雛飾りが綺麗でした
焼き鳥(豚バラ)
- 柳川から博多に戻り、博多祇園山笠の「飾り山」などを見つつ、予約してもらった焼き鳥屋さんへ
- なぜ博多まで来て焼き鳥?というと簡単でYAPC運営のblog見たからですね
【YAPC::Fukuoka 2017 HAKATA】福岡では豚バラは、焼鳥です。(飲み屋情報) - YAPC::Japan 運営ブログ
- 当日付き合ってもらった博多出身の友人によると、焼き鳥屋に豚バラがあるのは「普通すぎて、おかしいと思わなかった」とのこと
- ここで結構飲んで飲んで食べて食べて、おいしかったーってところでこの日は解散
- 帰りに一人でシメのラーメン食べてホテルへ
さよなら博多
- ホテルチェックアウトして、糸島へ
博多きてから、地下鉄の階段をキャリー付きスーツケースが転がり落ちてくの見たの2回目
— sironekotoro (@sironekotoro) 2017年7月3日
- 悲鳴すごかった
う。レンタサイクルには身分証必要だけど免許証も健康保険証もパスポートも持ってきてない・・・
— sironekotoro (@sironekotoro) 2017年7月3日
いま、糸島の「一蘭の森」の無料送迎バスのページ(https://t.co/RBkVCoLGf1)見てたんだけど、最悪なんでご紹介したい。iPhone6plusで縦で見るとこんな感じ。10時30分、10時55分、11時30分、に出発するのかと思ったのよ pic.twitter.com/BReGmrD7rS
— sironekotoro (@sironekotoro) 2017年7月3日
https://t.co/Dpy9Z5GuMr で、10時55分になっても駅前にバス来なくて???って問い合わせたら定刻通りってことで???交通事情もあるかーって問い合わせたら思ってiPhoneをランドスケープモードにしたらこれよ。ほんと酷い。 pic.twitter.com/dW0AO0cvgn
— sironekotoro (@sironekotoro) 2017年7月3日
- レスポンシブデザインでtableの要素が表示されなくなってたぽい
- なお、今は直っております
- 画像ベタ張りで
- ただまー、上記のトラブルもあり、工場自体も観光というには乏しい施設で、「一蘭の森」自体は楽しめなかったなぁ
無料送迎バスのおっちゃんから聞いた、糸島に九州大学が来てからめっちゃ栄えてる、バブル来てるって話が一番面白かった
最後にもう一度、大濠公園を1周してスタバでドヤる
最後にぐるっと回りにきた。大濠公園最高。 pic.twitter.com/3zpLSUyUdZ
— sironekotoro (@sironekotoro) 2017年7月3日
- 松坂投手、大濠公園の近くにマンションを買ったって友達が言ってた
博多の友達から「横浜帰るの?松坂も持ってってよ」などと言われる
— sironekotoro (@sironekotoro) 2017年7月3日
いつもの横浜
#yapcjapan 開催各地のブログ、過剰なまでにグルメ、観光情報を掲載しており「最低一週間は休みとって楽しんでいってね!」って気合い入れてくれるのに、いつも3泊4日くらいしか滞在できず申し訳ない。俺に5000兆円あれば・・・
— sironekotoro (@sironekotoro) 2017年7月3日
横浜家系ラーメン食べて位置情報を修正した pic.twitter.com/IM9lGN1VBS
— sironekotoro (@sironekotoro) 2017年7月3日
YAPC::Fukuoka 2017 HAKATA
いざ博多へ
- YAPCがrebootしてから3回目の開催
- YAPC::Hokkaido 2016 SAPPORO
- YAPC::Kansai 2017 OSAKA
- そして今回の博多、日本全国まわれて本当に楽しい
- いずれ仙台とか、四国とか北陸とかもあるのだろうか
全然野菜
- GMOペパボさんで開催の非公式イベント
- 「全然野菜」ってのは「前前夜祭」を変換するとこうなるってことで
- 「前」前夜祭ってことですが、前夜祭の直前に実施
- 最初、「前夜祭の前日」だと思ってた
2004年からのMuuMuuDomainユーザなんでロリポおじさんの痕跡嬉しい #全然野菜 pic.twitter.com/TAaTryhW99
— sironekotoro (@sironekotoro) 2017年6月30日
- 前前夜祭でおおって思ったのは「OCTOPASS」
- tomohisaoda.com
- システムの「使いまわせるところ」を切り出して、外に出して、しかもサーバの運用はお任せしていくっての、プログラミングだよなぁって
前夜祭
- GMOペパボさんのビルがあった天神は繁華街って感じだけど、ヌーラボさんのある大名はオサレエリアだった
- 前夜祭はひたすらLTのLTソン。司会はuzullaさん
「わたしPerl一行もかけないんですが」うん、いつものYAPCみたいになってきた! #yapcjapan
— sironekotoro (@sironekotoro) 2017年6月30日「Perl mongerだいたい寿司が好きなので」すごいPerl歴半年でちゃんと把握してる
— sironekotoro (@sironekotoro) 2017年6月30日
#yapcjapan- 前夜祭スポンサーのヌーラボさんありがとうございます!
株式会社ヌーラボで求人してるんだって #yapcjapan
— sironekotoro (@sironekotoro) 2017年6月30日- 心に残るLTはこれ
5000兆円欲しい時に使えるモジュール #yapcjapan
— sironekotoro (@sironekotoro) 2017年6月30日- Acme::Want5000trillion - search.cpan.org
use Acme::Want5000trillion; my $want = Acme::Want5000trillion->new; print $want->say(); #5000兆円欲しい!
- papix校長の「突然の死!!!」を思い出しましたね
- Acme::SuddenlyDeath - search.cpan.org
use Acme::SuddenlyDeath; print sudden_death('突然の死')."\n" # outputs => # _人人人人人_ # > 突然の死 < #  ̄^Y^Y^Y^Y^ ̄
YAPC::Fukuoka 2017 HAKATA 当日
YAPC::FukuokaではLINEよりフリードリンクを提供しております。参加されている皆さん遠慮なくガンガン飲みまくってください!!オススメは豆乳ラテです。 #yapcjapan java pic.twitter.com/6j06fmPnLo
— LINE_DEV (@LINE_DEV) 2017年7月1日- ヘーゼルナッツラテと豆乳ラテ美味しかったです
- まったく切れない無線LANと駅近ビル、オサレ会場、フリードリンクエリアに会社の勢いを滅茶苦茶感じる
Wifi環境、近年にない快適さでさすがLINEさんって #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日
Be PaaS Monger - クラウドエンジニアの三大美徳、またはIaaSを使わない3つの理由
- 一番聞きたかった、わいとん(@ytnobody)さんの発表
- スライドもMicrosoft OneDriveにおいてあるPowerPointか・・・エディタもVS Code だったし、そりゃMSの人とまちがえられるのも無理ない
運用するな開発せよ、わかる。開発したいのに運用のこと考えて躊躇することいっぱい #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- というか、最近知恵がついてきたので、プログラム書きっぱなしってことができなくなり、自然と運用も気を使わざるを得なくなってて、ほんと書く前に運用を想像して書けなくなって死ぬことが多すぎてなんとかしたいんですよね!!!
- まぁ、開発するよりも運用して使って行く期間の方が長いと言われるので、当然と言えば当然なんですが
金!でもまぁ、人件費、かかる時間含めて全部お金ってもので計算、比較できるよね #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日- 物事を判断するときにいろんな基準・軸があるけど、お金もその軸の一つと考えているので、共感しまくり
わいとんさんの「イラストや」使いのレベルが確実に高い #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- 完璧にレベル高かったです
エンジニアリングにおけるコストの削減、そのためのマインドセットがプログラマーの三大美徳 #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日PaaSがプログラマの3大美徳の顕現に思えてきた #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日- わいとんさんはMSの人ではないけど、エバンジェリストってこういう仕事なのかもしれないって
ノベルティ
- カンファレンスではいろんなノベルティが配布されるんだけど、これはすげえってのが
やっぱこの、誰もが考えそうでやらなくて、しかしやってしまった、一線を超えた感あるPENCILさんのノベルティの、すごい #yapcjapan pic.twitter.com/ubBfnCBQkm
— sironekotoro (@sironekotoro) 2017年7月1日- 米って
- Perlのイベントで、パールライス、いやわかるんだが、米って
- Pencilさん、すげぇ会社だ
未来のプログラマー達へ ~Perl入学式卒業生から~
- speakerdeck.com
- Perl入学式の先輩のトーク
Webに情報、書店に初心者向けの本が溢れていても、その後聞ける人がいないと詰むんよねぇ・・・ #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日[PR]表記に感じる職業柄感 #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日うちも初めてのYAPC::Asia2013、ハードル本当に高かった。あんときは本編にPerl入学式が組み込まれてたからハードル越えることができたと思う #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日- ほんと、Perl入学式に一歩踏み込む、その一歩が重いというか、その最初のハードルが高いというか
- 自分の感じ方なんですけどね
- うちの業界だと、勉強会って企業がやってる「セミナー」しかないからってのもあるかも
- 最後に紹介されている参考図書、全部持ってて、とても嬉しくてニヤニヤしてた
その他
- ベストトーク賞は徳丸先生
- はてなブログ最近の開発テクニックと最新の開発風景のご紹介
- speakerdeck.com
- 誰も引き取ってくれないPRに【簡単】【未経験者歓迎】のタグがつき始めるっての、良い
- 職人の判断を自動化、これはプログラマ色ではない自分のところでもやっていけそう
- シール、ありがとうございました!
Perl学業成就に効果のあるお札を貼った #yapcjapan pic.twitter.com/4MNRCLhUlP
— sironekotoro (@sironekotoro) 2017年7月1日
- Web Application Good Error Message
- YAPC::Fukuoka Hakata 2017にてWeb Application Good Error Messageというタイトルで話してきました - その手の平は尻もつかめるさ
- エラーメッセージ1つでも、こんなに考えることがあるんだ、本職エンジニアすげえって思った
- ネコトーストラボさんのサイリウム
サイリウム、自宅に置いてある緊急避難袋に入れてる。こう、なんか光るのあるといいかなって・・・ #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- サイリウムはガラスのコップに入れると乱反射して停電の時に明るいです
YAPC::Okinawa 2018 Onnason
- yapcjapan.org
3月2日、3月3日、恩納村にて YAPC::Okinawa開催! #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日恩納村、土地勘ないから沖縄市から近いのか遠いのかなんなのか謎。楽しみすぎる #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日楽天トラベル、まだ2018年3月の予約できなかった #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日来年3月のYAPC::Okinawaの会場へのアクセス見てる■ アクセス・マップ | 沖縄科学技術大学院大学 OISThttps://t.co/xQIuahV0nv #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- 人生初沖縄になる予定。めちゃくちゃ楽しみ!
WEB+DB PRESS Vol.98 特集2 これからはじめるDocker(2章まで)
Docker使ってみたい!
- そろそろDocker触っておきたいと思って購入
- しかし、利用しているMacと環境構築に必要なVirtualBoxのバージョンが合わずに断念しかける・・・
macOSのアップグレード
- が、これもいい機会と判断し、OSのアップグレードを敢行
- MountainLion(10.8.5)からSierra(10.12.5)
- Q.なぜアップグレードしなかったか?
- A.怖かったから
- バックアップ用に外付けHDDをあけ、macOSのOS領域ごとバックアップ
- 同様に、TimeMachineでもバックアップ
- 上書きアップグレード・・・成功!
思ったよりうまくいった。対応していないソフトがいくつかあったけど、入れ直しでok
- ただし、KeyRemap4MacBook改めkarabinerはSierraに対応しておらず、利用不可。
- あと、Parrallelsもver9だったので、Sierraで起動できず
- AutoChargeInhibitは動いたり動かなかったり。惜しい。
- [AutoChargeInhibit - MacBook Pro 15 early 2011のバッテリーの充電をソフトウェア制御でオン・オフして充電を少し抑制する](http://memogakisouko.appspot.com/AutoChargeInhibit.html)
一番懸念していたSublimeText2やPerl、nodeの環境は維持されていて、これは本当に良かった。
- GW中に買って勉強した「わかばちゃんと学ぶ Git使い方入門」で勉強した時にSourceTreeが入れられず、旧バージョンでしのいでいたのもこれで解決
ソフトインストール、その前に
- macOSのアップグレードに成功した勢いで記事にある通りにVirtualboxとVagrantをインストール・・・その前に!
- ansibleという環境構築ツールにも興味があったので、それ経由で入れてみる。
Web+DB PRESS vol.98 特集2 これからはじめるDocker(第1章〜2章)
- ansible経由でVirtualboxとVagrantをインストール
- 他は記事の通りに進めていく・・・以下は詰まった所
macOS上からVagrantで起動したCentOS7の中で、dockerからhttpdイメージを起動させ、そのhttpdにmacOSからアクセスしたい!
- 長い
- 混乱する
- 酷い日本語
- そんな時はポートフォワード!
- 参考
- この特集に沿って進めた場合、Vagrantfileを以下のようにする
config.vm.network "forwarded_port", guest: 8080, host: 8080
とりあえずここまで
- 第3章からはVPSでの運用の話になるので、今日はここまで。
- 図書館にはDockerを特集したSoftwareDesignがあるんで、それを流し読みしたり
俺のリファレンス
言いたいこと
- Perlのリファレンスは、以下のような「データをまとめたい!」って時に使うと楽になるんだよ
- 配列の中に配列を「配列のまま」入れたい
- 配列の中にハッシュを「ハッシュのまま」入れたい
- ハッシュの中に配列を「配列のまま」入れたい
- ハッシュの中にハッシュを「ハッシュのまま」入れたい
- データをまとめると、どうお得なの?
- 記述が楽
- データ同士での比較が楽
- 本当なの?という疑り深い人、2013年頃の私みたいな人は自分で配列に配列入れたり、配列にハッシュ入れたりして、自分の考えた通りのデータ構造が出来るか、そのデータ構造から要素を取り出せるか、やってみよう!
- ・・・ってことを、昨日のPerl入学式のサポーターしながら考えたのでした。
配列に配列を入れる小芝居
use strict; use warnings; use Data::Dumper; # 課題 # 「テレビ局の略称」と「チャンネル番号」を組み合わせた # データ構造を作りたい # あわよくば一覧表示を楽に実現したい # まず、テレビ局のチャンネル番号と略称名の配列を作る # 配列の最初の要素はチャンネル番号、次の要素はテレビ局名の略称と決める # @配列 = (チャンネル番号 , 略称); my @nhk = ( 1, 'NHK' ); # NHK総合 my @etv = ( 2, 'ETV' ); # eテレ(教育テレビ) my @ntv = ( 4, 'NTV' ); # 日本テレビ my @ex = ( 5, 'EX' ); # テレビ朝日 my @tbs = ( 6, 'TBS' ); # TBS my @tx = ( 7, 'TX' ); # テレビ東京 my @cx = ( 8, 'CX' ); # フジテレビ my @mx = ( 9, 'MX' ); # TOKYO MX # チャンネル番号を全部表示したい・・・もしTV局が沢山あったら? print '@nhkのチャンネル番号は:', $nhk[0], "\n"; # 1 print '@etvのチャンネル番号は:', $etv[0], "\n"; # 2 print '@ntvのチャンネル番号は:', $ntv[0], "\n"; # 4 # TV局の数だけ書いていく? # 地方局も増えたらどうする? # 配列名を人間が全部覚える? # そんなの面倒! # データをまとめておいて、forループ等でまとめて取りたい! # チャンネルをまとめる配列を作る my @channels; # ---------------------- # 失敗編 # ---------------------- # チャンネルをまとめる配列に、テレビ局の配列を「そのまま」入れる push @channels, @nhk; push @channels, @etv; push @channels, @ntv; # 3つ入れてみたところで、試しにData::Dumperで中身を表示してみる print Dumper @channels; # $VAR1 = 1; # $VAR2 = 'NHK'; # $VAR3 = 2; # $VAR4 = 'ETV'; # $VAR5 = 4; # $VAR6 = 'NTV'; # 元のTV局ごとの配列が崩れて、一つの配列になってる!? print "@channels", "\n"; # 1 NHK 2 ETV 4 NTV print $channels[0], "\n"; # 1 print $channels[1], "\n"; # NHK print $channels[2], "\n"; # 2 print $channels[3], "\n"; # ETV # それぞれの要素が何を示しているか、人間が覚えておかなくてはならない # ・偶数の添字はチャンネル番号 # ・偶数の添字 + 1 はテレビ局名 # など。 # これは面倒では? # チャンネル番号とテレビ局名を配列にした意味がないのでは? # ---------------------- # 解決編 # ---------------------- # 配列をリファレンス化する my $ref_nhk = \@nhk; my $ref_etv = \@etv; my $ref_ntv = \@ntv; my $ref_ex = \@ex; my $ref_tbs = \@tbs; my $ref_tx = \@tx; my $ref_cx = \@cx; my $ref_mx = \@mx; # ここで注目! # さっきは「配列 @channnels」の中に「配列 @テレビ局」を入れたところ、 # 「配列 @channnels」の中で展開されてしまった。 # しかし! # リファレンス化することで、配列を「スカラー」として扱うことが出来る! # 「失敗編」で使った配列@channelsを初期化する @channels = (); # 配列@channelsにリファレンス化したテレビ局のデータを追加する push @channels, $ref_nhk; push @channels, $ref_etv; push @channels, $ref_ntv; # 3つ入れてみたところで、試しにData::Dumperで中身を表示してみる print Dumper @channels; # $VAR1 = [ # 1, # 'NHK' # ]; # $VAR2 = [ # 2, # 'ETV' # ]; # $VAR3 = [ # 4, # 'NTV' # ]; # 俺が求めていたものはこれだ! # 残りも追加していく push @channels, $ref_ex; push @channels, $ref_tbs; push @channels, $ref_tx; push @channels, $ref_cx; push @channels, $ref_mx; # どうなっているかな〜? print Dumper @channels; # $VAR1 = [ # 1, # 'NHK' # ]; # $VAR2 = [ # 2, # 'ETV' # ]; # $VAR3 = [ # 4, # 'NTV' # ]; # $VAR1 = [ # 1, # 'NHK' # ]; # $VAR2 = [ # 2, # 'ETV' # ]; # $VAR3 = [ # 4, # 'NTV' # ]; # $VAR4 = [ # 5, # 'EX' # ]; # $VAR5 = [ # 6, # 'TBS' # ]; # $VAR6 = [ # 7, # 'TX' # ]; # $VAR7 = [ # 8, # 'CX' # ]; # $VAR8 = [ # 9, # 'MX' # ]; # ちゃんと全部、チャンネル番号とテレビ局名の組み合わせが入ってる! # さて、データを取り出してみる # 配列@channelsは配列なので、データの順番が保証されている # 最初に入れたNHKの配列を取り出してみる print $channels[0], "\n"; # ARRAY(0x************) 配列リファレンスであることを示す表示 # 配列リファレンスから、元の配列に戻す「デリファレンス」を行う print @{ $channels[0] }, "\n"; # 1NHK # 配列をそのままprintしたので要素が繋がって表示されている # 中身は取得できたようなので、配列の要素ごとに取り出してみる # 配列の要素はスカラーなので、$でアクセスする print ${ $channels[0] }[0], "\n"; # 1 print ${ $channels[0] }[1], "\n"; # NHK # アロー記法を使うとスマート表記が可能 print $channels[3]->[0], "\n"; # 5 print $channels[3]->[1], "\n"; # EX # データ構造を構築できたところで、一気に表示してみる # @channelsの中身は、解決編冒頭で作成した、配列リファレンスの集合で # あることを忘れない foreach my $array_ref ( @channels ) { # 配列リファレンスの最初の要素はチャンネル番号 print "チャンネル番号は:" , $array_ref->[0], "\n"; # 配列リファレンスの二番目の要素はテレビ局の略称 print "テレビ局の略称は:" , $array_ref->[1], "\n"; }; # チャンネル番号は:1 # テレビ局の略称は:NHK # チャンネル番号は:2 # テレビ局の略称は:ETV # チャンネル番号は:4 # テレビ局の略称は:NTV # チャンネル番号は:5 # テレビ局の略称は:EX # チャンネル番号は:6 # テレビ局の略称は:TBS # チャンネル番号は:7 # テレビ局の略称は:TX # チャンネル番号は:8 # テレビ局の略称は:CX # チャンネル番号は:9 # テレビ局の略称は:MX # もし、最初に作ったテレビ局の配列から上記のような出力を得ようとした場合には・・・ print "チャンネル番号は:" , $nhk[0] , "\n"; print "テレビ局の略称は:" , $nhk[1] , "\n"; print "チャンネル番号は:" , $etv[0] , "\n"; print "テレビ局の略称は:" , $etv[1] , "\n"; # ・・・と、テレビ局の配列の数 * 2 記述する必要があり大変。 # 配列名を間違えたり、抜けがないように人間が気をつける必要がある。 # これは「楽」ではない # でもまぁ、書けなくはない。大変だけど。
わかばちゃんと学ぶGit使い方入門 SECTION 21 〜 SECTION 30
昨日に引き続きやっていく
- 光陰矢の如し、GWもあっという間に残り6日に
- 6日もある!ひゃっはー!
CHAPTER 4
SECTION 21
- リモート追跡ブランチ。なんか、origin/masterってのが出ていたのは気づいてた
- まぁ、普通は気づく
- pullはfetchとmarge、2つの機能を合わせたもの
- fetch:リモートブランチから(ローカルにある)リモート追跡ブランチを同期
- marge:リモート追跡ブランチとローカルブランチを同期
SECTION 22
- fetchしてmargeする。ふむふむ
- 自分の手元にあるブランチの流れと、本に載っている画面の流れが違うと不安になるなぁ・・・
SECTION 23
- リモートブランチの削除とローカルブランチの削除、一緒に出来ないのかな?
SECTION 24
- コミットメッセージは、push前だったら修正可能と。
- pushした後には修正は出来ない・・・?
SECTION 25
- スタッシュ
- 変更するファイルをステージング環境に置いておかないと、スタッシュのボタンが有効化されなかった
SECTION 26
- チェリーピック!
別なブランチから特定のコミットのみを取り込みたい
- 昨日、間違えて別なブランチにコミットしてしまった俺に必要だったもの・・・
- チェリーピックは特定のコミットを、今いるブランチにコピーしてくるだけ。移動ではない
- 不要になったコミットは、リバートで打ち消す
- チェリーピックとリバート、一緒に出来れば便利なのでは・・・?
SECTION 27
- タグを付けることで、履歴上の重要な(と自分が判断した)ポイントに目印をつけることが出来る
SECTION 28
- detached HEAD、よく分からん・・・
- でも、SourceTreeが警告出してくれるから、警告に従っていれば大丈夫そう
SECTION 29
- GitHub Pages 、静的なWebページ公開サービス
- コードの解説とか、ヘルプページ的なものとか・・・?
SECTION 30
- 変更履歴が統一したフォーマットで整理されるのはとても良いのでは
- 「何でもかんでもGitで管理しようおじさん」が出てくるのも分かる
- Excelシートとか・・・
- これが「おじさん化」か・・・
- しかし、なんでこういう場合は「おじさん」なのだろう・・・
- Excelシートとか・・・
- まぁ、コラボレーションはまだ怖いかな・・・
- 誤字脱字の修正くらいなら・・・
この本を読み終えて
- つまづきポイントの先回りは良かった
- もちろん、個々人でつまづきポイントは違うんだけど、割とカバーされていた方では?と思う
- うちのつまづきポイント:別なブランチにコミットしてあわあわする
- 自分のローカルの状態と、本に載っている画面が違うと「どこかで間違えた?」ってなって怖い
- かといって、全部載せていたら本の内容は1.5倍になり、しかし中身が薄めになっていたかもしれない
- この本を基礎の基礎、土台、地殻にして、他のGit初心者本に進むとよさそう、というか進む予定
- やっぱり本の内容とローカルの状態が合わなくなって放り出した「アリスとボブ」本かな
- あとは、GitHub使わなくても個人プロジェクトでGitを使っていく気になれた
- フォルダが file_20170502.pl とか file20170502.pl とか _old_file とかで埋まる状況は回避できそう
- 読んで良かった!