ペンギン村 Tech Blog

技術をこよなく愛するエンジニア集団が在住するペンギン村から、世界へ役立つ(かもしれない)技術情報を発信する技術系ブログです。某アラレちゃんが済む村とは一切関係ありません。んちゃ!

Swift

【SwiftPrettyPrint】クイックスタート・ガイド

SwiftPrettyPrint のクイックスタート・ガイド+応用テクニックを紹介する記事です。 それは何? Swift 標準の print や dump よりもきれいに出力するデバッグ支援ライブラリです。 github.com 以下に比較を載せます。 標準: print 標準: dump SwiftPrettyPr…

6. レコード構文と多相型とカインドと :: Swift プログラマのための Haskell 入門

さて、前回は Haskell のリストや再帰処理などを見てきました。 今回はこれまで見てきたデータ型について軽く復習した上で、より詳細について見ていきます。 直積と直和 直積データ 直和データ 直積と直和の組み合わせ レコード構文 type / newtype データ型…

5. リストと再帰 :: Swift プログラマのための Haskell 入門

さて、前回は Swift の配列における典型的な操作(filter / map / reduce)について、Haskell の場合にどのように書けるのか見てきました。 今回は、リストの正体と再帰について見ていきます。 前回の訂正 リストの実体 リストを定義する Haskell のリストの…

4. リストと演算子と関数合成 :: Swift プログラマのための Haskell 入門

さて、前回は Haskell におけるデータ型の宣言やパターンマッチについて見てきました。 今回は Swift でよくある配列操作について、Haskell の場合にどのような書き方になるのか見ていきます。 リスト 関数と演算子 関数を演算子として使用する セクション記…

3. データ型の基本 :: Swift プログラマのための Haskell 入門

さて、前回は関数の書き方やカリー化・部分適用などについて見てきました。 今回はデータ型の基本について見ていきたいと思います。 データ型の定義 直積型の定義 直和型の定義 関連値を持つ直和型 値の生成 値の生成 再帰的? パターンマッチ case-of スマ…

2. 関数の基本 :: Swift プログラマのための Haskell 入門

さて、前回で Haskell の開発環境を構築できたので本編に入っていきたいと思います。 プログラミング言語の入門記事としては、基本データ型などから入るのがセオリーですが、そうした話題は大切ではあるものの同時に退屈でもあります。プログラマとしてある…

1. 環境構築 :: Swift プログラマのための Haskell 入門

さて、この記事では VSCode と stack を利用した Haskell の開発環境の構築を行っていきます。この環境構築を飛ばしても、次回以降の記事を読むのに支障はありませんが、コードを実行・評価できる環境が整っていると学習が捗るのでおすすめです。 概要 Stack…

0. Introduction :: Swift プログラマのための Haskell 入門

Haskell は Swift に影響を与えたプログラミング言語として知られています。Swift に影響を与えたとされるプログラミング言語は他にも Objective-C、Rust、Ruby、Python、C# など多数に及びますが、プログラミングパラダイムに最も影響を与えているのは Hask…

SwiftPrettyPrint 1.2.0 をリリースしました。

SwiftPrettyPrint の 1.2.0 をリリースしました。 github.com 今回のリリースには、ターミナル統合(ANSIカラー)とマイナーな Bugfix が含まれています。 そもそも SwiftPrettyPrint って何ぞや、という方は前回の記事をご参考いただければ幸いです。 blog.…

swift-emmet をリリースしました。

どうも、まだ生き延びてる @tobi462 です。 swift-emmet という CLI ツールをリリースしたので、それの紹介的な記事です。 github.com ちなみに Haskell で書かれています。 それは何? シンプルな記法で構造体やクラスのコードを生成する CLI ツールです。 …

Swift のローカル関数の使いどころ。あるいは部分適用された関数の話。

どうも、あんま元気ではないですが、まぁ何とか生きてる @tobi462 です。 いや、こんな出だしで大丈夫か?って感じもしますが、大丈夫だ。問題ない。ということで久しぶりに技術記事を書いてみます。 Tl;Dr ローカル関数とは? 引数を継承する関数呼び出し …

SwiftPrettyPrint 1.1.0 をリリースしました。

先週、 SwiftPrettyPrint の 1.1.0 をリリースしました。このリリースには以下の2つのインテグレーションが含まれています。 LLDB Combine 本記事では、その2つの機能について解説したいと思います。 そもそも SwiftPrettyPrint って? LLDB 統合 Combine 統…

Sign in with Apple with Firebase AuthenticationとDelegateをRx化する話

はじめに お疲れ様です。かむいです。 この記事はiOS Advent Calendar 2019の17日目の投稿となります。 前回は@codelynxさんの名前付き UIView と後付けストアドプロパティもどきでした。 先月Firebase AuthenticationでSign in with Appleが利用できるとの…

メモリリークを検出して修正する方法【Xcode】

この記事の目的 ビルド前の準備 メモリリークの検知 メモリリークの原因を特定する 原因を特定するときのTips メモリリークの修正方法 まとめ その他備考 この記事の目的 iOSアプリにおけるメモリリークの対処法を紹介します。 例えば、以下の画像のような、…

try! Swift 2019 TOKYO で登壇してきました。

どうも、最近は ウマ娘 プリティーダービー というアニメにハマっている @tobi462 です。 ちなみにセイウンスカイちゃんが一番好きです。 さて、すでに結構時間が経ってしまいましたが、try! Swift 2019 TOKYO で登壇してきたのでその感想的なブログ記事です…

メモリ上に保持されているSwiftクロージャーがどこに定義されたものかを知る方法

自己紹介 概要 できること 使い所 方法 手順 リファレンスからデリファレンスする方法 x/gx コマンドを使う。 expression -l objc -o -- *(id**)を使う キャプチャされたデータが知りたい場合 動作環境 備考 脚注 自己紹介 ペンギン村の通行人 、po_miyasaka…

自由にクラスインスタンスにアクセスできるLLDBコマンド「vinfo」

自己紹介 vinfoとは 使用方法イメージ 使い所 使い方 備考 SwiftのStuctには vinfoではアクセスできません。。 自己紹介 ペンギン村の通行人 、po_miyasakaです。 名前の「po」はLLDBのコマンドから拝借しました。 (プロダクトオーナーでは) vinfoとは githu…

Swift プログラマが Go言語を学び始めた話(後編)

以下の記事の続きです。 blog.penginmura.tech blog.penginmura.tech 最後となるこの記事では、ここまで紹介してこなかった細かい機能や、Go言語における並列処理を実現するゴルーチン・チャネルについて触れ、最後に Go 言語に対する総括的な感想を述べて終…

Swift プログラマが Go言語を学び始めた話(中編)

以下の記事の続きです。 blog.penginmura.tech 制御構文 Go言語の制御構文としては次のものがある。 if switch for ゴルーチン・チャネルにおいて利用できる select という制御構文もあるが、それは後ほど触れることにする。 if 文 基本的な書き方は Swift …

Swift プログラマが Go言語を学び始めた話(前編)

私は Rust に賭けていた。ポストC++言語としての地位をどのプログラミング言語が取るか、もっといえば Rust vs Go でどちらが勝つかという話においてだ。 私が初めてGo言語を知った時は、こんな非力なプログラミング言語のどこが良いのだろうという感想だっ…

【iOS】RxSwift + Realmでバックグラウンドでの書き込み完了イベントを受け取る

前書き 久々にペンギン村で記事を書きました(10ヶ月ぶり3記事目)、ナガクラ(@nagakuta)です。 今回はリハビリも兼ねて、RxSwiftとRealmを組み合わせた小技を紹介します! TL;DR 今すぐこれをコピペして Realm+Rx.swiftファイルを作成するんだ!! import R…

Merpay Tech Talk #2 に参加してきました

はじめに お疲れ様です。最近寒くてオフトゥンから出られないかむいです。 勉強会に足を運べていない日が続いていたのですが、今回はメルペイさんが主催する『Merpay Tech Talk #2』にお邪魔して来たので、レポートをまとめたいと思います! mercari.connpas…

Swift 4.2 の変更点を iOSDC 2018 で話してきました

どうも、最近は「進撃の巨人 3期」が楽しみな tobi462 です。 しかし、最近一部の人達から「シュタインズ・ゲート ゼロ」を強烈に推されプレッシャーを感じる今日このごろです。いや原作こそ未プレイですがアニメ初期は見てますし、全話配信されたら見ようと…

Xcode 10 betaにおけるSource ControlとAsset Catalogの新機能のお話

はじめに ども、かむいです 気がついたら2018年も7月に突入してますね(´・ω・`) 投稿がご無沙汰だったので、先月弊社で登壇したイベントがあったので、その話について書きたいと思います WWDC18報告会 in 弊社 dmmcj.connpass.com 当日はまさかの申込数約20…

Xcode 9 の New Build System を試す

この素晴らしきビルドシステムに祝福を。 どうも tobi462(過去記事)です。 さて、Xcode 9 から新しいビルドシステムが導入されたのは記憶に新しいですが、9.3 の時点でも Preview となっており標準のビルドシステムにはなっていません。 すでに他記事でも…

Swift エンジニアが学ぶ Rust - 0.序章

Rust はとても良い言語です、 TRust me。 ダジャレから始めるのは初めてでしょうか。Rust 勉強中の tobi462 です。 私はプログラミング言語を学ぶのが好きな畑の人間でして、最近では Rust を学んでいるのですが、これがなかなかどうして面白いのです。 Love…

Swift 4.2 で追加される removeAll(:where) メモ(SE-0197)

どうも、運動したあとはお酒が飲みたくなってしまう tobi462 です。 ちょっと時間が空きましたが、今回はremoveAll(:where)という新たに追加されたコレクション系のAPIの Proposal を見ていきたいと思います。 今までの Swift 4.2 の記事は以下です。 Swift …

Swift 4.2 で追加されるコンパイラディレクティブ(SE-0196)

何でもは知らない、知ってることだけ。 どうも、最近書き出しの挨拶を考えるのに時間を要する tobi462 です。 今日は SE-0196 で追加されたコンパイラディレクティブの紹介です。 今まで書いた Swift 4.2 の記事は以下です。 Swift 4.2 で追加される @dynami…

Swift 4.2 で追加される @dynamicMemberLookup メモ(SE-0195)

全地球100億人のSwifterな皆さん、コンバトラーっ! tobi462 でーっす! え、いつもとノリが違う?まぁ、そういう日もあるんじゃないでしょうか。 そんなわけで、前回・前々回と続き Swift 4.2 の記事です。 今回は、Swift 作者であるラトナーさんの Proposa…

【iOS】Hyperion-iOSもあるんだよ!

かむいです。今月転職しました。 転職活動も忙しかったりして1ヶ月ぶりの投稿となります。 時間過ぎるのホント早い! Hyperion-Androidが話題に 先週 Android界隈で話題になったコレ。 こりゃすげぇ!てなりましたよね。 qiita.com てっきりAndroidだけかと…