ペンギン村 Tech Blog

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

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 統…

開発で使えるJOJOの奇妙な名言集

この○○が金やちやほやされるために技術ブログを書いていると思っているのかァーッ!! 技術ブログを書いていることをアフェリエイト目的とか、PV目的だとか言われた時に。 なるほど完璧な開発プロセスっスねーーーっ不可能だという点に目をつぶればよぉ〜 一…

Bitrise の bundler 2.x アップデート問題について私がどう考えて調査・対応したか。あるいは手軽さの影で。

iOS

どうも、休職中の @tobi462 です。 毎日仕事もせずに何をやっているかと言えば・・・そうですね、個人的推論に則った改善活動といったところでしょうか。 Bitrise の Xcode 11.3.x ビルドスタックの bundler が 1.x → 2.x に更新された 先週くらいに iOS 界…

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

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

『iOSテスト全書』の報酬の30%を分配した話。あるいは制作を支えた人々について。

iOS

どうも、最近は Dirty Androids の『Saturdays』ってアルバムがお気に入りの tobi462 です。 www.da-recording.com 広義には『HOUSE』あるいは『EDM』といった音楽ジャンルに当たるんでしょうか。個人的には『FUTURE BASS(フィーチャーベース)』っぽく感じ…

『DDD物語』 〜つばさドメイン〜

DDD

あ=阿良々木くん、羽=羽川(元)委員長 これは僕が『DDD』について学びながら、自分なりにアウトプットした話でありフィクションであり、まぁつまるところどうでもよい独り言だ。 どちらでも良いし、どちらでも悪いかもしれない。 唯一、正しいのはこれを書…

『iOSテスト全書』を共著した話。あるいは『教科書本』との違い。

iOS

どうも、最近はRabi-Libiという弾幕アクションゲームをやっているtobi462です。 というわけで、PEAKSから『iOSテスト全書』の電子版が正式リリースされました。 peaks.cc おそらく製本版も今月中には発送されるかと思います。 (ところで一般販売はされるの…

iOSDC2019に参加してきました!

かむいです。東京に台風15号が接近中です。雨風の音が凄い。。 iOSDC 2019に、今年も村から僕と@tobi462氏で参加してきました。 この光景を見るとiOSDCに来たなぁってなります iOS13から登場するダークモード仕様になってました 今年もCfPを幾つか投下したの…

LLDBカスタムコマンドを作る

概要 Hello Worldコマンドを作る Pythonファイルの作成 作成したカスタムコマンドを使用するための準備 使ってみる 自動的にカスタムコマンドをロードする .lldbinitを使って自動的にロードする .lldbinitの注意点 概要 LLDBのpoコマンドのような、コンソー…

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

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

今年の iOSDC に対応した「このすばCfP2」をリリースしました。

iOS

どうも、WWDC19に行ったついでにサンフランシスコで食べたカニの味が忘れられない @tobi462 です。 さて、そんなわけで今年も iOSDC の CfP を快適に検索できるサービス「このすばCfP」をリリースしました! iosdc19-cfps.penginmura.tech アニメでいうなら2…

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

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

Bonfire iOS #5 に参加してきました

iOS

どうも、 try! Swift 2019 TOKYO で登壇したのにいまだにブログを書いてない @tobi462 です。 今回はすごく久しぶりに勉強会に参加してきたのでそのレポートです。 yj-meetup.connpass.com Bonfire iOS は今回で5回目の開催で、今回は テスト がテーマという…

ペンギン村開発合宿 in 土善旅館

はじめに おは椎名!かむいです。 今回、ペンギン村で初の開発合宿を敢行しました。 スペシャルゲストとしてダンボー氏, やみつき氏にもお越し頂き、千葉の土善旅館に行ってきたイベントをレポートしたいと思います。 なお当日の感想はTwitterにて #ペンギン…

ペンギン村のロゴ・ステッカーを作った話

どうも、今さらラブライブにハマっている @tobi462 です。 今回はペンギン村のロゴ・ステッカーが出来るまでの話です。 ロゴ原案を担当した私と、デザイナへの発注・ステッカー作成を担当した「かむい」氏の2名でお送りします。

メモリ上に保持されている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言語を知った時は、こんな非力なプログラミング言語のどこが良いのだろうという感想だっ…