タグ

ブックマーク / blog.penginmura.tech (24)

  • Crystal 1.0.0(とRuby)で、がんばるぞい bot を復活させた話。 - ペンギン村 Tech Blog

    Tl;Dr それは何? 構成は? がんばるぞい bot の歴史 (興味がない方は読み飛ばしてください) ペンギン村 Slack では昔から がんばるぞい bot が稼働していました。 それは Slack bot と呼ぶには単純すぎるもので、「がんばるぞい!」や「がんばったぞい!」などと書き込むと、ランダムでキャラクターがメッセージを返答してくれるという、まぁがんばる人を応援しちゃうぜ的な bot でした。 そんな、がんばるぞい bot ですが実は2度もスクラッチで書き直されています。 初代: JavaScript / AWS Lambda もっとも初期のサービスは JavaScript / AWS Lambda で稼働させていました。 ちょうど LambdaAWS Dash Button などが流行っていたので、とりあえずなんか作ってみようという発想で作られたのが始まりだった、と記憶

    Crystal 1.0.0(とRuby)で、がんばるぞい bot を復活させた話。 - ペンギン村 Tech Blog
  • Sign in with Apple with Firebase AuthenticationとDelegateをRx化する話 - ペンギン村 Tech Blog

    はじめに お疲れ様です。かむいです。 この記事はiOS Advent Calendar 2019の17日目の投稿となります。 前回は@codelynxさんの名前付き UIView と後付けストアドプロパティもどきでした。 先月Firebase AuthenticationでSign in with Appleが利用できるとの発表がありました。 firebase.googleblog.com それまでは@fromkkさんが書かれていたようなCloud Functionsを利用したやり方でも近い仕組みを実現できていましたが、やはりFirebase Authentication単体で処理が実現できるのは嬉しい限りです。 qiita.com 今回はこのFirebase Authを利用した実装の紹介だけでなく、実装の中で登場するDelegateメソッドをRx化し、RxSwiftを利用しているケースを

    Sign in with Apple with Firebase AuthenticationとDelegateをRx化する話 - ペンギン村 Tech Blog
  • 『iOSテスト全書』を共著した話。あるいは『教科書本』との違い。 - ペンギン村 Tech Blog

    どうも、最近はRabi-Libiという弾幕アクションゲームをやっているtobi462です。 というわけで、PEAKSから『iOSテスト全書』の電子版が正式リリースされました。 peaks.cc おそらく製版も今月中には発送されるかと思います。 (ところで一般販売はされるのでしょうか?私、気になります!) 追記:一般販売が開始されました! iOSテスト全書 著者: 松尾 和昭,細沼 祐介,田中 賢治,平田 敏之,玉城 信悟, 製版,電子版 PEAKSで購入する そんなわけで、個人的にどういう想いを込めて執筆したのか、みたいなことを自分なりに振り返りながら書いてみたいと思います。 担当した章 私は著者陣の一人として、以下の章の執筆を担当させていただきました。 第2章:ユニットテスト(概要) 第4章:ユニットテスト(Quick / Nimble 編) 第5章:BDDによるアプリ開発 なお、第

    『iOSテスト全書』を共著した話。あるいは『教科書本』との違い。 - ペンギン村 Tech Blog
  • try! Swift 2019 TOKYO で登壇してきました。 - ペンギン村 Tech Blog

    どうも、最近は ウマ娘 プリティーダービー というアニメにハマっている @tobi462 です。 ちなみにセイウンスカイちゃんが一番好きです。 さて、すでに結構時間が経ってしまいましたが、try! Swift 2019 TOKYO で登壇してきたのでその感想的なブログ記事です。 www.tryswift.co speakerdeck.com LT採択から20分トークへ 今回、2日目の午後に20分トークで発表させていただいたのですが、実はもともとLTの予定でした。 ですが、当初予定していた20分トークのキャンセルがあったとのことで、運営から「20分で発表してみませんか?」という提案をいただき、せっかくの機会なので快諾させていただきました。 何を話すか(あるいは何を話さないか) もともとLTの予定で提出したCfPなので、最初はまさにライトニングトークというようなスピーディーな発表をしようと考え

    try! Swift 2019 TOKYO で登壇してきました。 - ペンギン村 Tech Blog
  • Swift 4.2 の変更点を iOSDC 2018 で話してきました - ペンギン村 Tech Blog

    どうも、最近は「進撃の巨人 3期」が楽しみな tobi462 です。 しかし、最近一部の人達から「シュタインズ・ゲート ゼロ」を強烈に推されプレッシャーを感じる今日このごろです。いや原作こそ未プレイですがアニメ初期は見てますし、全話配信されたら見ようと思ってはいたんですよ? レギュラートーク30分 はい、ということで iOSDC Japan 2018 にて 30分 のレギュラートークをさせていただきました。 去年は LT で発表させていただいたのですが、今年はレギュラートーク、しかも今までに経験したことがない 30 分の発表ということで、資料作り・発表練習ともに苦労した面も多いのですが、良い経験が出来たと思います。 正直なところを言うと、こんな平凡な(あるいは中身の透明性が高い)テーマを聞きに来る人はいないのではないかと思っていたのですが、予想に反して聞きに来てくれた人が多かったので嬉しか

    Swift 4.2 の変更点を iOSDC 2018 で話してきました - ペンギン村 Tech Blog
  • Swift エンジニアが学ぶ Rust - 0.序章 - ペンギン村 Tech Blog

    Rust はとても良い言語です、 TRust me。 ダジャレから始めるのは初めてでしょうか。Rust 勉強中の tobi462 です。 私はプログラミング言語を学ぶのが好きな畑の人間でして、最近では Rust を学んでいるのですが、これがなかなかどうして面白いのです。 Love Swift ? おそらく私の一番得意な言語は SwiftJava なわけですが、どちらが好きかと言われれば断然 Swift です。 Haskell のような代数データ型としての enum はとても好きですし、Protocol Oriented Programming や extension による既存クラスの拡張、switch によるパターンマッチも好きです。 機能やシンタックスが多すぎて覚えるのが大変な点や、switch によるパターンマッチの読みづらさといった点、バージョンアップごとに破壊的仕様変更が入

    Swift エンジニアが学ぶ Rust - 0.序章 - ペンギン村 Tech Blog
  • Dockerハンズオンをやってみた - Kubernetes輪読会#0 - ペンギン村 Tech Blog

    どうも、Nintendo Switch版の斑鳩が配信されるの楽しみな tobi462(過去記事) です。 斑鳩はSTGとしての面白さは当然のこと、硬派なストーリー設定も素晴らしく・・・おっとこれを語りだすと長くなるのでやめておきましょう。 Kubernetes輪読会 始動 #0 コワーキングスペース Docker ハンズオン インストール Docker 入門 Vagrant も触ってみる(ハイパーバイザ型の仮想化を試してみる) Docker に戻る(ハイパーバイザ型とコンテナ型の違いについて) 自分で Docker Image を作る スペシャルメニュー 参加者の感想 おわり 輪読会は続くよ Kubernetes輪読会 さて、ペンギン村のエンジニア数人で Kubernetes の輪読会をすることになりました。 輪読会の対象となる技術書は以下です。 KubernetesGoogle

    Dockerハンズオンをやってみた - Kubernetes輪読会#0 - ペンギン村 Tech Blog
  • 「がんばるぞいbot」を作った話、そしてAWS Lambdaに移行しようという話 - ペンギン村 Tech Blog

    どうも、最近週末に映画を観るのが楽しみなtobi462です。ちなみにAmazon Prime Videoです。 今日はプライベートで作ったシステムの話、というか物語を書いてみたいと思います。 がんばるぞいbotとは Slackで「がんばるぞい!」と書き込んだら、キャラクターが応援してくれるBotです。 ちょうど以下のような感じですね。 NEWGAME!という漫画の第一巻で有名になった「がんばるぞい」を活用したBotですね。 開発のキッカケ 開発のキッカケはシンプルで、 仕事前とか勉強前にがんばるって書き込んだら応援して欲しいな というものでした。 ペンギン村の住人でSlackのワークスペースを持っているのですが、そこの「newgame」チャンネルで活躍しています。 残念ながらSlackAppとして公開はしていませんが悪しからず。 歴史を振り返る そんな(最初は)シンプルなBotだったのです

    「がんばるぞいbot」を作った話、そしてAWS Lambdaに移行しようという話 - ペンギン村 Tech Blog
  • Swift 4.2 で追加される removeAll(:where) メモ(SE-0197) - ペンギン村 Tech Blog

    どうも、運動したあとはお酒が飲みたくなってしまう tobi462 です。 ちょっと時間が空きましたが、今回はremoveAll(:where)という新たに追加されたコレクション系のAPIの Proposal を見ていきたいと思います。 今までの Swift 4.2 の記事は以下です。 Swift 4.2 で追加されるコンパイラディレクティブ(SE-0196) Swift 4.2 で追加される @dynamicMemberLookup メモ(SE-0195) Swift 4.2 では boolean の反転(toggle)ができるようになる(SE-0196) Swift 4.2 では enum の件数がとれるようになる(SE-0194) なんだか増えてきましたね。 Tl;Dr let isOdd: (Int) -> Bool = { $0 % 2 == 1 } var xs = [1, 2,

    Swift 4.2 で追加される removeAll(:where) メモ(SE-0197) - ペンギン村 Tech Blog
  • Swift 4.2 で追加されるコンパイラディレクティブ(SE-0196) - ペンギン村 Tech Blog

    何でもは知らない、知ってることだけ。 どうも、最近書き出しの挨拶を考えるのに時間を要する tobi462 です。 今日は SE-0196 で追加されたコンパイラディレクティブの紹介です。 今まで書いた Swift 4.2 の記事は以下です。 Swift 4.2 で追加される @dynamicMemberLookup メモ(SE-0195) Swift 4.2 では boolean の反転(toggle)ができるようになる(SE-0196) Swift 4.2 では enum の件数がとれるようになる(SE-0194) いつのまにかシリーズ化してきましたね。 (化物語みたいに) Tl;Dr in Objective-C in Swift 4.2 まとめ Tl;Dr #warning("強制アンラップはやめるべき") // コンパイル時の警告 let message = self.messag

    Swift 4.2 で追加されるコンパイラディレクティブ(SE-0196) - ペンギン村 Tech Blog
  • Swift 4.2 で追加される @dynamicMemberLookup メモ(SE-0195) - ペンギン村 Tech Blog

    全地球100億人のSwifterな皆さん、コンバトラーっ! tobi462 でーっす! え、いつもとノリが違う?まぁ、そういう日もあるんじゃないでしょうか。 そんなわけで、前回・前々回と続き Swift 4.2 の記事です。 今回は、Swift 作者であるラトナーさんの Proposal (SE-0195) のようですよ。 Tl;Dr @dynamicMemberLookup struct AnimeCharacter { subscript(dynamicMember member: String) -> String { let properties = ["name": "阿良々木月火", "music": "白金ディスコ"] return properties[member, default: ""] } } character.name // => "阿良々木月火" charac

    Swift 4.2 で追加される @dynamicMemberLookup メモ(SE-0195) - ペンギン村 Tech Blog
  • 【iOS】Hyperion-iOSもあるんだよ! - ペンギン村 Tech Blog

    かむいです。今月転職しました。 転職活動も忙しかったりして1ヶ月ぶりの投稿となります。 時間過ぎるのホント早い! Hyperion-Androidが話題に 先週 Android界隈で話題になったコレ。 こりゃすげぇ!てなりましたよね。 qiita.com てっきりAndroidだけかと思っててんですけどちゃんとiOSもあったんですよ! github.com 僕はもうかよちんの「さすがです!」LINEスタンプを開発者に送りつけたい気持ちになったのですが、サンプルコードがあったのでまずは動かしてみたわけです。 そしたら実際に動かしらもっと感動しちゃったので、そのことについて書きます。 導入の仕方 CocoaPodsかCarthegeで導入できます。 詳細はREADME.mdがわかりやすいのでそれ見てもらえれば早いのですが、CocoaPodsで言うと:configurations => ['De

    【iOS】Hyperion-iOSもあるんだよ! - ペンギン村 Tech Blog
  • Swift 4.2 では boolean の反転(toggle)ができるようになる(SE-0196) - ペンギン村 Tech Blog

    どうも。ルパン三世 Part 5 の続きが楽しみな tobi462 です。 さて前回のenumの新機能に続き、また Swift 4.2 の話題です。 といっても、今回は驚くほど短いです(汗) Tl;Dr toggle() 実装 おわり Tl;Dr // before messageLabel.isHidden = !messageLabel.isHidden // after messageLabel.isHidden.toggle() toggle() SE-0196 にて Bool の extension として toggle メソッドが用意されました。 冒頭に書いたとおり、いままで foo.bar = !foo.bar というコードを書かなければならなかったところが foo.bar.toggle() と書けるようになるわけです。 まぁ、自前で実装していた方も多いかもしれませんが。 実

    Swift 4.2 では boolean の反転(toggle)ができるようになる(SE-0196) - ペンギン村 Tech Blog
  • 【Docker】alpine の `apk update` でエラーが発生した時のメモ - ペンギン村 Tech Blog

    どうも、tobi462 です。 今日は docker-compose build での apk update 時に以下のエラーが発生した時の対処メモです。 Step 7/11 : RUN apk update ---> Running in 45856361a825 fetch http://mirrors.aliyun.com/alpine/v3.4/main/x86_64/APKINDEX.tar.gz ERROR: http://mirrors.aliyun.com/alpine/v3.4/main: temporary error (try again later) WARNING: Ignoring APKINDEX.47c31cae.tar.gz: No such file or directory Tl;Dr Docker のバージョンを最新にしたら解決しました。 $ sud

    【Docker】alpine の `apk update` でエラーが発生した時のメモ - ペンギン村 Tech Blog
  • 【iOS】APIKitを使ったXML取得 - ペンギン村 Tech Blog

    まえがき 結果 つまづいたポイント "https"から始まるURLじゃないと通信できない。 独自のXMLパーサーを実装する必要がある。 文字エンコーディングに気をつけよう まえがき 初めまして。ペンギン村の通行人po_miyasakaです。 APIKitを使用してGoogle Suggest APIからXMLを取得する方法をまとめました。 結果 "hello"という文字に対するサジェスト結果をパースしてテーブルに表示 xml取得部分はこんな感じのコードになりました。 import APIKit import SwiftyXMLParser /* リクエスト */ struct GoogleSuggestionRequest: Request { typealias Response = [String] var baseURL: URL = URL(string: "https://www

    【iOS】APIKitを使ったXML取得 - ペンギン村 Tech Blog
  • 【iOS】【Swift】太り過ぎなUIViewController.viewDidLoadをスリムにして可読性を爆上げする - ペンギン村 Tech Blog

    前書き 命/義理チョコを今か今かと待ちわびています、ナガクラ(@nagakuta)です!一ヶ月ぶりの投稿になります! 今回は上級者が開発時に使うといわれる、ちょこっと役立つTipsを紹介します!(バレンタインだけに) TL;DR viewDidLoadをスリムにするには XIBでViewを実装する場合はdidSetを使う コードでViewを実装する場合はClosureを使う 太り過ぎなviewDidLoad 皆さんは、Viewを実装する際にどの方法でUIパーツの設定を行いますか?(´ε`;)ウーン… 自分は、今回の方法を知るまでは以下の方法を採っていました。 XIBでCustom Viewのレイアウトを作成する場合 Interface Builderにて設定 or viewDidLoad内でコードによる設定 コードでCustom Viewを実装する場合 loadViewでCustom V

    【iOS】【Swift】太り過ぎなUIViewController.viewDidLoadをスリムにして可読性を爆上げする - ペンギン村 Tech Blog
  • 【iOS】ちょっと待って!その画面UITableViewで作る必要ないかも - ペンギン村 Tech Blog

    はじめに ダーリンことカムイです(嘘松) 今日は個人的によく使うクラスの1つであるUITableViewについて書きます。 一覧 != UITableView 皆さんはUITableViewを普段どんな時に使っているでしょうか。 「一覧を表示する時に使うアレでしょ?」というお方、こちらをご覧ください。 (ほっちゃん尊い…) こちらはInstagramのTOP画面です。大きな画像とコメント欄がセットになった項目が連続でいくつも表示されます。 実際に開発に携わったわけではありませんが、これはUITableViewで実装していると思われます。 では次にこちらをどうぞ。 途切れ途切れになっておりますが、Airbnbの詳細画面です。画面上部から動画→ホストからのメッセージ→アクセス方法→MAP→カレンダー→レビューと多くの項目が登場します。 「これも一覧!UITableViewだね!」 と思いますか

    【iOS】ちょっと待って!その画面UITableViewで作る必要ないかも - ペンギン村 Tech Blog
  • ターミナルからXcodeを1コマンドで開くCLIツールを作ってみた - ペンギン村 Tech Blog

    どうも、攻殻機動隊シリーズでは S.A.C が一番好きな tobi462 です。 今回は Swift Package Manager で、ターミナルからXcodeを開くCLIツール xcode-open を作ってみたので、その紹介です。 モチベーション 使い方 インストール 使い方 オススメのエイリアス設定 なぜ作ったか? ターミナルから起動したい バージョンを指定したい、記憶させたい Swift Package Manager で CLI を作ってみたい 作ってみた感想 最後に モチベーション ターミナルからXcodeを1コマンドで開ける バージョン(e.g. 9.1)も指定できる 開くバージョンを記憶することもできる 使い方 インストール Homebrewでインストールできます。(ビルドのためにXcode 9.0以上が必要です) $ brew install YusukeHosonum

  • NavigationBarを含んだ画面でViewで全体を覆う方法 - ペンギン村 Tech Blog

    qiita.com 通信中に画面を操作させたくない理由から、マスキングを画面にすることがよくあると思います。 ただNavigationBarを含む場合、単純にself.viewにaddSubviewするだけではNavigationBarまで覆ってくれません。 その対処法としてappDelegate.windowに対しaddSubviewをするという手段もあるのですが、windowに直接Viewを貼り付けするのはバグの温床になるので避けた方が良いです。 記事ではself.navigationController?.viewに対しaddSubviewをすることで、対象画面でのみ処理を完結することに加え、storyboard上に部品を配置する方法で実現しています。普段の開発でstoryboardにView部品を設置している人にとっては馴染みやすい方法なのではと思い、やってみました。 追伸: 今日

    NavigationBarを含んだ画面でViewで全体を覆う方法 - ペンギン村 Tech Blog
  • ストレスを溜めやすいエンジニアの体調管理 - ペンギン村 Tech Blog

    今週のお題「体調管理」 どうも、NEWGAME!では八神コウちゃんが一番好きなペンギン村の住人@tobi462です。 今回は今週のお題である体調管理について書いてみたいと思います。 事前に書いておきますが、技術的な要素は一切ありません。(Tech Blogなのにね・・・) 体調を大いに崩した去年末 寝る前に思考内容を書き出す 運動駆動開発 調子にのらない オープンソースであれ がんばらない勇気 まとめ 体調を大いに崩した去年末 毎日のような頭痛、朝起きるのはものすごく辛い、仕事もプライベートも楽しくない、なんだかずっと疲れている。 というのが私の去年のピークでした。はい、有り体に言って軽いうつ状態というやつですね。 仕事は続けられていたものの大した成果も出せず、わりと辛い日々を過ごしていました。 しかし、社内カウンセリングに行ったきっかけから、少しずつ回復しつつある現状の体調管理について書

    ストレスを溜めやすいエンジニアの体調管理 - ペンギン村 Tech Blog