便器が外れなくて絶望している人へ
ウォシュレットを設置しようと思って購入したはいいものの、YouTubeとかをみて便器の取り外しできそうだなと思って工賃を節約したあなたへ
ネジ舐めたり、ネジを外すためのドリル買ったり、ネジザウルスで外そうとしたりしたことでしょう
最悪、裏にあるゴムブッシュを全部ちぎれば便座は外せるから心配しないで
ナットは意外と小さいので、ゴムの膨らんでいる部分だけ全部ちぎればナット外さなくてもそのまま上から抜けます
ハッカーズチャンプルーvol7を開催してきました! #hcmpl
どうもこんばんは、 @aokabinことかびです。
いやー、ハッカーズチャンプルー、今回もとてもよかった!
ご協力頂いた皆々様、参加された皆々様、ご登壇頂いた方々本当にありがとうございました!!
今回は(多分)何事もなく無事会を終えることができたので、ホッとしております。
久々のブログですが、今回はハッカーズチャンプルーのイベントレポートを運営としてのコメントも混ぜながらのエントリーにしようと思っています。
ハッカーズチャンプルー vol7
前夜祭
ハッカーズチャンプルー前夜祭は、Estinate Loungeで開催しました。
hackers-champloo.doorkeeper.jp
綺麗な感じのスペースで、ドリンク飲み放題の5種類程のフードを立食形式で執り行いました。
もちろん、ハッカーズチャンプルーなので、LTやトークの枠も用意!
Goのコンパイラの気持ちになったり、沖縄を感じながら開発したり、ディジタル署名と暗号化の話を聞いたり、ゲームエンジンで強化学習したりと、ハッカーズチャンプルー前夜祭らしい会だったと思います!
カンファレンスの部
カンファレンス当日、僕はLTやスポンサーセッションの時に、タイムオーバーした時に鳴らすドラの代わりに指笛を吹いたり、ちょっとだけ司会をしたりしていました。そう、指笛芸人です。
(心の声)どこかのカンファレンスに指笛芸人として呼んでくれ!!!
まぁ、勝手に行けって感じですが笑
さて、それぞれのプログラムについてのレポートをしていきます!!
@deeeetさん「開発者向けの基盤をつくる」
もう僕の技術領域的にはぶっ刺さりの内容。マイクロサービスアーキテクチャが、ビジネスおよび開発者にとって、「どのようにして」「どういう恩恵を与えるのか」という内容。
そもそもマイクロサービスアーキテクチャを実現するための条件も知らなかった
「Single Purpose、Loosely Coupling、High Cohesion」
ので、そこからずっと参考になりまくるセッションでした!
マイクロサービスアーキテクチャにすることによって、開発サイクルが早くなる、問題が起きてもサービス全体を止めなくてもよくなる、ということは知っていても、それが組織においてどう効果的なのか、ビジネスロジックにおいてはどうなのか、開発者にとってはどうなのか、を知れたのは、控えめに言って最高でした...。
チーム構成もモノリスとは異なるとか。というかこういう構造化できる人、改めて本当にすごいな、と思った日でもありました。
面白かったなぁ...!
@hikaliumuさん「現代のコンピュータにおける自作OS事情」
さて、打って変わって今度は、超低レイヤーの話。
アセンブラからBIOSからレジスタから、学生時代にさっくりと特徴だけさらったようなワードと聞いたことないようなワードがわんさかで、僕には難しかった...!
でも、話をしているhikaliumuさんがずーっと楽しそうに話をしていて、さらに噛み砕いたり似たような概念で説明をしてくれたりして、セッション中はずっとなるほどー、となっていた(語彙力)。
とにかくosdev-jpに入れば、最近のOS事情が聞けるのだ!ということがわかったので、わからないなりにも動向をチェックしていこうと思います!
そしてhikaliumuさん、まだ大学生、日本の未来は明るいですねホント!
@chomadoさん 「好きなことをやり続けるということ。」
www.slideshare.net
お昼を挟んで最初のセッションは、chomadoさんのキャリアの話。
昨年コミュニティの話をしてくださった@motemenさんのように、参加者の方のモチベーションになるといいな、と思って、学生向けのキャリアの話をして頂きました!
ちょまどさんがITに触れだしたきっかけは、実は自作のBLマンガをサイトにアップするためだったという話、僕は知らなかった!
中学〜SIerまでの話がずっと面白い。話がうま過ぎて、ずっと笑っていた。
「ストパーはダメだから、パーマを当てて天パに戻しなさい!(←!!?!?!)」
そして今までやってきた英語やマンガ、プログラミング、塾講師、そして腐教活動、これら全てが相まって、点と点が繋がり線と線が繋がり面になった、というお話で、全く関係のないことでも、やっていけばいつかは繋がっていくのだ、というとても心強いメッセージのセッションでした!
@pwim(Paul McMahon)さん 「サイドプロジェクトが利益を生むビジネスになるまでの苦労と長い道のり」
(スライドはアップされていませんでした!)
ポールさんがDoorkeeperを始める前から、立ち上げた後の苦悩、そして利益を生むビジネスになっていくまでの道のりのお話。
結論を先にお話すると、泣きました。本当にめっちゃ泣いちゃった。
ポールさんはカナダの大学を卒業後、日本の企業に就職。最初に入った会社は、いい会社だったけど、在籍時にあった飲み会は片っ端から送別会という会社だったそう。(すでに面白い)
そこから知り合いと一緒に事業を初めて、サイドプロジェクトとしてDoorkeeperがスタート。メンバーの離脱、地道な営業活動、そして一番メインとなるマネタイズの紆余曲折。話を聞いていて、頑張ってもなかなか利益が生まれないサービス、それでも愛着があるから継続したい、使ってくれているユーザーのために何とかして継続したい。。。そしてついに来てしまったサービスとしての限界、果たして、Doorkeeperはサービスとして継続できるのか、その命運はいかに...!
という、涙なしには聞けないノンフィクションでした。映画化決定。
スタートアップのリアルが聞けた、とても貴重なセッションでした!
@gongoZさん 「What can Emacs be?」
最後は沖縄から東京に出て働いている、ごんごさんの発表。Emacsって何ができるの?というお話。
最後まで聞いた感想は、正直「Emacsって何なの?」でした。笑
AirPlayをEmacsで叩ける、という伏線を回収するかのようなスライド構成と、最後のオチ、100倍スーパーマリオブラザーズ。
↑もうここだけ読んでたら何を言っているかさっぱりわからないと思いますが、トーク全体が変態黒魔術感があってめちゃくちゃ面白かったです。
こういうお話を聞けるのも、ハッカーズチャンプルーの魅力だなぁとか思っていました。
僕はEmacsは使いませんが...←
総じて全てのセッションが最高
また今年も最高のセッションが出揃い、上から下と喜怒哀楽と黒魔術で満たされた、まさにチャンプルーなセッションでした。
いやー、とても良かった。また来年もあるので、是非みなさん来年もご参加ください。
GitHub駆動学習のススメ
こんばんは、aokabinです。かびです。
今日は琉大情報工のAdvent Calendarがあるということで
CODE BASEの忘年会でもちょっと話したGitHub駆動学習についてお話しようと思います!
(めっちゃ初心者向けです!)
まず、GitHubとは何か?
GitHubは
プログラムやサービスなどを作る際に必要なソースコードのバージョン管理や
開発を支援するための機能を持った、IT技術者のためのプラットフォームサービスです。
僕が世の中で一番好きなサービスがGitHubです!
バージョン管理
もしかすると、バージョン管理がいまいちピンときてない人もいるかもしれませんが
ざっくり説明すると
「今の動くソースコードを保存しておいて、後で機能を追加・削除して動かなくなっても、今の状態に戻れれば動く」
というように、「さっきのソースコードの状態に戻る」みたいな機能を、バージョン管理と理解しておけば一旦大丈夫です 🙆
そして、「今の動くソースコード」を念のため自分のパソコン以外にも保存しておけば、
もしパソコンが動かなくなっても、ソースコードは無事だよね、ということを実現してくれるのがGitHubというサービスです。
(他にも、「他の人とソースコードを共有して、同時並行で開発ができる」とか「プロジェクト管理ができる」とかありますが、今回は割愛します)
GitHub駆動学習
さて、じゃあGitHub駆動学習ってなんぞや?というお話ですが
技術的な勉強は全部GitHubでまとめてやってしまおう!という学習方法になります。
GitHubを使って開発をするメリット
というのも、GitHubは上記のバージョン管理機能と開発を支援するための機能を提供しているため
オープンソース(公開された)のプログラムの開発にも一役買っています。
そしてオープンソースのプログラムに自分が書いたソースコードが取り込まれると
「この人はこのプログラムの開発に貢献しています」というのが、外からも見れるようになります。
この情報が公開されていることによってその人自身の技術力がある程度把握できるようになっています。
また、それ以外にも、1日にどれくらいプログラムを書いたか(厳密にはcommit量を計っていますが)
ということも公開されるようになっているため、GitHubで開発をすることによって
その人が「どういうコードを書くのか」また「どれくらいコードを書くのか」ということが外部から見れるようになっています。
この情報は、就職活動を行う際にとても有用で
GitHubのMyPage情報を共有することで、ある程度その人の技術力を測る指針にできるわけです。
つまり、自分で勉強する場合も、このGitHubを使って学習を進めておくと
「どういうコードを書くのか」
「どれくらいコードを書くのか」
ということを公開できる状態が作れるため、就活をする際に結構便利だったりするわけです!
具体的な手法
ここからは具体的な手法を説明します。
今回は実際にあり得る例として、やりたいことに対して、Web上のサイトの情報を元に勉強を進めていくことを考えます。
流れとしては以下のような感じ
- 学習に関するリポジトリを作る
- 関連するissueを作る
- 学習をしながら、学んだことをコメントしていく
- 学習を進めていくうち、細かく勉強したいものが出てきたらまたissueを作る
今回は最近僕が実際にやったこととして、Kubernetesというツールの勉強をしたので、そのステップを書きます。
github.com
(上記、普通に参考になると思うのでよかったら是非見てみてください)
2. 関連するissueを作る
学習内容に関するissueを作ります。
今回は、あるサイトを参考に作業を進めていこうと考えたので、サイトの情報を説明のところに書いていきました。
3. 学習をしながら、学んだことをコメントしていく
あとは、具体的な作業内容を学んだことを書いていきましょう。
書くときにオススメなのは
- どういう状態になって
- どういうことを考えて
- どういうことを調べて
- どういう情報を得て
- 何を実行した結果
- どうなった
- その理由
あたりを書いていくのがいいと思います。
このissueは、他の人にみてもらうのと同時に、過去の自分がやった作業ログの役割を持つので
何を考えてどう調べてそうしたのか、という情報を出来るだけ細かく書いている方が、読み返すときにもいいですし
他の人が見たときに、自分の考え方のクセも見ることができるので、伝える情報量が増えていいと考えています。
4. 学習を進めていくうち、細かく勉強したいものが出てきたらまたissueを作る
学習を進めていくと、issueのタイトルから脱線することもあります。
今回例に挙げたissueの場合、途中でnb_filterというものに遭遇しました。
nb _filterに関しては、別のissueを立てて、そちらでまた別途学習を進めるようにして
新しいissueを立てました。
GitHubのissueを使うと、issueのタイムライン上にissue同士の関連情報が表示されてくれるのも
学習事項同士を関連させて効率化させられるいい機能だと思います。
と、このような形で作業を進めていくと、
この自分の学習ログとして残す際に有用なだけではなく、他の人が同じ内容で学習をする際のサポートにもなりますし
就活の際に思考のクセや考え方、技術レベルなどが見えたりするため、GitHubでの学習自体はとても有用だと僕は考えています。
PayPayの支払いではKyash+リクルートカードでファミマ利用が良いと思った話
どうも、aokabinです。
今回お金の体験としてとても嬉しくなることがあったので、共有のためのブログを書きました。
PayPay
PayPay、みなさん使ってますか?
今日からえげつない企画が行われているので、僕はめちゃ利用しようと思っている次第です。
何がえげつないかというと、こちら
100億円のばらまき!!!
PayPayを使って決済をすると、利用額の20%を還元するよ、というものでして
さらに通常ユーザーは40回に1回の確率で利用額の全額が返って来るというとんでもないもの。
ちなみにYahooプレミアム会員は20回に1回
ソフトバンクの携帯ユーザーは10回に1回に確率がアップするらしいですらしいです。
すごいなSoftBankとYahoo。。。
まぁそのランダム性の高い還元はあてにしないで利用していきたいので、
どうにかいい方法ないかなーと思ってこの記事を書きました。
PayPayの利用方法
PayPayはバーコードを提示する、いわゆるバーコード決済という支払い方法になっているのですが
そもそも支払いの流れとして
- PayPayに残高をチャージして、残高から支払う
- クレジットカードから直接支払う
という大きく2つの支払い方法があります。
残高から支払うのも、クレジットカードから支払うのも、PayPay上はバーコードを提示して支払うだけなので
そこまで大きな違いはありません。
ただ、このクレジットカードから直接支払う方法、実はKyashのカードを登録可能で
20%からさらに還元率をあげることができるという魔力を秘めています。
Kyashとは?
Kyashは、主に個人間送金として使われている(僕らはそう使っている)アプリケーションの一つです。
Kyashのすごいところは、個人間送金する際にクレジットカードから直接引き落として送金ができ、
なおかつバーチャルカードやリアルカードという、通常のVISAのクレジットカードのように利用できる機能を備えていることです。
つまり、個人で送金しあったお金を、VISAカードが使える通常の店舗で利用することができるという体験が魅力のアプリ。
しかも、そのVISAカード、利用額の2%が手元に戻ってきます。その2%もまた個人間送金できるしVISAカードとして利用できるのもまた魅力。
すごい体験ですよこれは。
そしてこのKyashのバーチャル(or リアル)カード、PayPayの支払い用クレジットカードとして登録することができます。
つまり、通常の支払いを
「PayPayの還元率20%+Kyashの還元率2%=22%」
の還元率の利用にできるわけです。
お金がお金を生んでいる魔法を体験しているようです。
そして、Kyashに登録できるクレジットカードを、通常利用還元率が1.2%のリクルートカードにすると
22%+1.2%=23.2%
のポイント還元率の利用にすることもできます。
ファミマ利用
今日、2018年12月4日時点でPayPayの支払いができる店舗は、以下のようになっているようでして
PayPayが利用できる店舗例
この中だと、圧倒的に日常利用が便利なのがファミマだと感じました。
ファミマであれば、PayPayが使えて、さらにTポイントがたまる(200円で1ポイント?=0.5%)ので
23.2%+0.5%=23.7%
のポイント還元率になります。
つまり、ファミマでPayPayを利用すると
1000円使うと250円返ってくる
みたいな謎のお金体験ができるということですね!
(しかも40回に1回は全額返ってくる)
大企業が考えていることはよくわからないな。。。
(いや、キャッシュレスを普及させるインパクトだとは思うんだけど)
一般ユーザーにとってはとてもいいことです、皆さんも積極的に利用していきましょう。
注意点
気をつけないといけないこととして、PayPayでキャッシュバックされるのは、PayPayの残高ということに注意してください。
とはいえ、PayPayが使えるところでは現金とさして変わらないので、あんまり影響はないと思いますが、念の為!
おまけ
PayPayのアプリを見ていると、銀行口座への出金ができそうで、今はできない。
そのうち対応することになるとのことだが、これができるようになると
PayPayを利用して決済して、PayPayの残高に返ってきたお金を出金する、みたいなことができるのはもとより
YJカードからチャージした金額をそのまま出金する、みたいなこともできるようになる...?ショッピング利用枠の現金化ができちゃう...?
いや、それはないか、流石に対策されそう。
まとめ
PayPayの還元率が高まった今、Kyashとリクルートカードでファミマ利用の還元率が格段に高まったなーと感じました。
みんなでPayPay使っていきましょう!
第8回Golang勉強会 in Okinawa Tour of Go!を開催した話
こんばんは、aokabinです。
ここ最近沖縄では勉強会がラッシュで、めっちゃいいなと思って来ています。
そんな中、今回はハッカーズチャンプルーの時にもさぼさんが宣伝してくれた、
Go言語勉強会を開催しました!
タイトルにもあるように、今回はTour of Goをやっていくという緩い会でした。
Tour of Goとは?
Tour of Goは、Go初学者のための、トータルチュートリアルで
そのサイト曰く「Go言語基礎文法最速マスター」ができるサイトらしいです。
実際内容はめちゃくちゃ充実しており、
ページ数にしてP100、そのほとんどにプログラムが実行可能な状態で載っているので、情報量がとにかく多い。
それでいて結構分かりやすくできているので、
これをスクリーンに映して、みんなで進めるだけで大分勉強になりました。
難しかったところ
SliceのStructのところ、キャパシティのところ
実際「Tour of Goをやっていればまぁ、資料作らなくていいしゆるくいけるやろ!」と思っていましたが
その緩さはよかったもののポインタのあたりをささっとやって
構造体、Sliceあたりまで来た時に雲行きが怪しくなって来ました。
具体的にはこの辺りを説明するのが難しい!
Tour of Go | Slice literals
Tour of Go | Slice length and capacity
Tour of Go | Creating a slice with make
同居どうするかはわかっていても、それをうまく伝えられないあたり、まだまだだなぁと感じました
学びになったところ
SliceのTipsのところは結構面白かった。
キャパシティがオーバーした場合、自動的にキャパシティが確保されるが
そのキャパシティは今のメモリ領域の隣ではなく、また別の場所に作られる、というのが驚きだった。
あとは日本語がかけること、日本語のコードが書けるのが個人的には面白かった。
読みづらいコードとか書けそう。
https://play.golang.org/p/acG1kO9qlxD
まとめ
めちゃくちゃゆるくやりましたが、みなさん今日は来ていただいて本当にありがとうございます。
次回以降ももっとゆるくやっていこうと思いますので、是非参加してください!
あ、あとTogetterにまとめたのでよければご覧ください。
次回は8月の9~18のどこかでやります!是非参加してね!(ゲストも来るかも??)
P.S. オープニング資料
speakerdeck.com
ChromeのExtentionを作った話
こんばんは、aokabinです。
ちょっと久々にがっつりコード書いてみようと思って、今日は一日開発してました。
作ったのはこれです。
github.com
何を作ったか
何をするExtentionかというと、
「Twitterの公式Webクライアントで、検索結果を自動で更新&スパムを除去してくれる」
というツールです。
実際に前回のハッカーズチャンプルーでツイートをストリーム表示するツールを使っていたのですが
RTが表示されたりスパムが何度も登場したりと使いづらい。
かといって公式Webクライアントはユーザーが更新のショートカットキー「.」を押さないといけず
うまく更新されない問題があったため、ちょっとうまく使えないなという問題がありました。
なので、今回はその反省を生かして
「公式Webクライアントを使ったまま、自動更新&スパム除去してしまおう」
と思ったのが作るきっかけです。
めんどくさかったこと
console.logが表示されない
さすがTwitter、色々対策をしているっぽく、console.logを何も実行しない関数でオーバーライドしているようでした。
おかげでデバッグ最初は苦労しましたが、どうやら以下のコードで初期化できるっぽい。
(function(){ var f = document.body.appendChild(document.createElement('iframe')); f.style.display = 'none'; window.console = f.contentWindow.console; })();
これはいい知見。
ショートカットキーイベントの発火
今回この機能を作るのに、どうせなら公式のショートカットを使おうと思ったのですが
普通にKeyboardのkeydownイベントを飛ばしてもうまくショートカットが実行されない。
keyupやkeypressを試してもダメだったので、
chromeのdeveloper toolの機能であるEventListnersからイベントを引っ張り出し
その中から怪しいイベントを引っ張り出してきて片っ端から試すという力技に出ました。
その方法を知るまでに時間がかかりましたが、なんとかそれっぽいイベントに辿り着き
そのイベントがどうやら発火しているらしいということはわかった
getEventListeners(document) // イベントリスナーの一覧表示 monitorEvents(window, ["イベント名"]) // イベントの発火を検知
イベントリスナー側からイベントオブジェクトにアクセスしてそいつを発火できればいいかな?
とか考えたけどそんなにうまくいかず...というか取得できないらしく
色々試行錯誤を重ねた結果、そのイベント名のイベントを発火させることができるコードを発見
var evt = document.createEvent("HTMLEvents"); evt.initEvent("イベント名", true, true); document.dispatchEvent(evt);
これを見つけるのに3時間くらいかかった...
とはいえまぁうまくいったので、今回はこれでよしとします。
しかしフロントエンドは奥が深い...フロントエンドエンジニアの人、本当に尊敬します 🙏
沖縄・宜野湾エンジニア勉強会(大LT大会) でKubernetesの話をしてきた話
こんばんは、aokabinです。
最近は沖縄でも勉強会ラッシュで、めっちゃ良い。
最近は「勉強会はブログに書くまでが勉強会」を体現していこうという気持ちです。
そんな中、沖縄のエンジニアたちが一同に介したりしなかったりした
沖縄・宜野湾エンジニア勉強会(大LT大会) #1
connpass.com
が開催されました。
僕が勝手にまとめたまとめはこちら
togetter.com
今回のイベントはJewelさん主催の元、
沖縄のいろんなエンジニアの方が集まってLT大会をする、自己紹介をする的なイベントでした。
一応トーク枠が3つほどあったので、LT Drivenで資料を作ることを決め
とりあえずKubernetesの話をすることにしました。
なぜKubernetesなのか
一応インターン先でちらっと触ったり、実際にGKEにアプリケーションをデプロイしてみたりしたものの
具体的に自分の手元で動かしてみるとかいうのは半年以上なかったのと
研究でちょうど余剰リソースを使った分散システムの構築をやろうとしているのもあって
今回はそれに合っていそうなKubernetesについて話をしてみることにしました。
実際、Kubernetesは色々なところで実用事例もあり、
マイクロサービスアーキテクチャの流行り、また個人的にDockerとかインフラ周りが好きということもあって
今回はKubernetesの話をすることにしました。
申し込んでから勉強し始めた
何分久々にKubernetesを触るので、色々と調べながらやって行きました。
Kubernetesについて調べていると、流石はBig Project、公式ページに情報がめちゃくちゃ充実
TutorialをWebブラウザ上で動かせるというのはめちゃくちゃ良かったです。
そこから色々学んで行き、知っている知識を存分に出して
薄いカルピスを水くらいまで薄めたのが今回のトークでした(← 浅い話で大変申し訳なかったです 🙏)
研究への利用
具体的にはお話しできませんでしたが、研究にKubernetesのCluster環境を利用しようとしており、
自分でクラスタホスティングとかもやっていく予定なので
今後新たに学びがあれば、どこかでまた話そうと思います。
めっちゃいい仕組みだなと思うので勉強して行きたいと思います!
そして資料を置いていくので、良かったら何かの参考にしてください。
次はOkinawa.goなのでゆるくやっていきます!
okinawa-go.doorkeeper.jp