タグ

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

  • セッション画像で振り返る、去年の WWDC 21。 - ペンギン村 Tech Blog

    どうも、トビ(@tobi462)です。 今年もついに WWDC の季節がやってきてしまいましたね! そんなわけで去年の WWDC 21 を振り返ってみましょう!(え? Effective WWDC はじめに 全体的に Xcode Cloud Swift Concurrency Meet async/await in Swift Use async/await with URLSession Protect mutable state with Swift actors Meet AsyncSequence Explore structured concurrency in Swift Swift concurrency: Behind the scenes SF Symbols 3.0 What’s new in SF Symbols Explore the SF Symbols 3 ap

    セッション画像で振り返る、去年の WWDC 21。 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2022/06/05
    書きました。
  • がんばるぞい bot の構成管理ツールとして Pulumi を導入した話 - ペンギン村 Tech Blog

    Tl;Dr まえがき Pulumi 3.0 のリリース Pulumi って? TypeScript による記述 設定値の管理 デプロイ時の差分確認 マルチステージなデプロイ おわりに P.S. Tl;Dr GCP の構成管理ツール(Infrastructure as Code)として Pulumi を導入してみた。 TypeScript でコード補完などの機能にたよりながら記述できるのは快適だった。 マルチステージで適用する必要があったが、コードで記述できるゆえにシンプルに対処できた。 Shell Script で1コマンドでインフラを構築できるようにした。 Pulumi はいいぞ。 まえがき 以前の記事で書いたように、最近 Crystal(と Ruby)でがんばるぞい bot を復活させました。 blog.penginmura.tech しかし、GCP の構成管理は行っておらず、GCP

    がんばるぞい bot の構成管理ツールとして Pulumi を導入した話 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/05/10
    書きました。
  • Mac での Crystal 1.0.0 の開発環境の構築(VSCode) - ペンギン村 Tech Blog

    Crystal VSCode 拡張:Crystal Language 静的解析ツール:ameba VSCode 拡張:Auto Add Brackets in String Interpolation VSCode 拡張:Auto Comment Blocks 標準で入ってるツール フォーマッター:crystal tool format テスト:crystal spec ドキュメント生成:crystal doc パッケージマネージャ:shards Playground REPL CI おまけ:Hello, world add メソッドの作成・テスト フォーマッタの確認 ameba の動作チェック ドキュメント生成 次のステップ おわりに P.S. Crystal 体 Homebrew でインストールできる。 $ brew update $ brew install crystal

    Mac での Crystal 1.0.0 の開発環境の構築(VSCode) - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/04/23
    書きました。
  • 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
    yu_dotnet2004
    yu_dotnet2004 2021/04/16
    書きました。
  • 6. レコード構文と多相型とカインドと :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    さて、前回は Haskell のリストや再帰処理などを見てきました。 今回はこれまで見てきたデータ型について軽く復習した上で、より詳細について見ていきます。 直積と直和 直積データ 直和データ 直積と直和の組み合わせ レコード構文 type / newtype データ型の宣言の意味 多相型 カインド Swift との用語比較 まとめ あとがき 直積と直和 Haskell では直積と直和のデータを扱えるのでした。 Swift では直積については構造体、直和については enum を使用して定義できますが、 Haskell ではどちらも data キーワードを使って定義します。 また値を取り出す際、Swift では直積についてはプロパティ、直和については switch (など)によるパターンマッチを使用しますが、Haskell では常にパターンマッチを使用してデータを取り出します。 直積データ

    6. レコード構文と多相型とカインドと :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/03/17
    続きを書きました。
  • 5. リストと再帰 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    さて、前回は Swift の配列における典型的な操作(filter / map / reduce)について、Haskell の場合にどのように書けるのか見てきました。 今回は、リストの正体と再帰について見ていきます。 前回の訂正 リストの実体 リストを定義する Haskell のリストの実体 再帰的な関数 リストの再帰処理 リストのパターンマッチ 再帰的な型・関数が重要な理由 再帰的な考え方に慣れる length filter 練習問題 まとめ あとがき 前回の訂正 前回の記事で 1 add 2 という書き方を「セクション記法」と説明していましたが、 正しくは (+1) のように演算子を部分適用する書き方が「セクション記法」でした。(記事は修正済みです) blog.penginmura.tech リストの実体 さて、リストは配列と同じように、同じ型の連続した値を持つことができるデータ構造で

    5. リストと再帰 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/03/08
    続きを書きました。
  • 4. リストと演算子と関数合成 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    さて、前回は Haskell におけるデータ型の宣言やパターンマッチについて見てきました。 今回は Swift でよくある配列操作について、Haskell の場合にどのような書き方になるのか見ていきます。 リスト 関数と演算子 関数を演算子として使用する セクション記法(演算子の部分適用) 演算子 $ 関数合成 リスト処理を関数合成で書き直す どうやって読んだらいいの? まとめ あとがき リスト Swift で同じ型が繰り返すデータ構造として配列(Array)が用意されています。数値の配列から偶数のみを抜き取り、それを2倍して、それらの合計を計算するコードは、みんな大好きな filter 、map 、reduce を使って以下のように書けます。 let isOdd: (Int) -> Bool = { $0 % 2 == 0 } // 偶数か判定する関数 let xs: [Int] = [

    4. リストと演算子と関数合成 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/03/05
    続きを書きました。
  • 3. データ型の基本 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    さて、前回は関数の書き方やカリー化・部分適用などについて見てきました。 今回はデータ型の基について見ていきたいと思います。 データ型の定義 直積型の定義 直和型の定義 関連値を持つ直和型 値の生成 値の生成 再帰的? パターンマッチ case-of スマートな書き方 どう読んだらいいの? まとめ あとがき データ型の定義 Swift では、直積型を構造体、直和型を enum で表現できます。データ構造という観点から見ると、この2つの概念があれば基的にどんなデータでも表現できるでしょう。 Haskell では data キーワードで、直積型および直和型を定義できます。 直積型の定義 以下は Swift で 文字列 と数値 を組み合わた Person 型を定義したものです。 struct Person { let name: String let age: Int } Haskell では

    3. データ型の基本 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/03/01
    続きを書きました。
  • 2. 関数の基本 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    さて、前回で Haskell の開発環境を構築できたので編に入っていきたいと思います。 プログラミング言語の入門記事としては、基データ型などから入るのがセオリーですが、そうした話題は大切ではあるものの同時に退屈でもあります。プログラマとしてある程度経験を積んでいれば、そうしたものはコードを読めば大体判断できますし、必要になってからあらためて理解すれば十分でしょう。 そのようなわけで、あえて関数から説明に入ってみたいと思います。 関数の基 関数シグネチャの宣言 関数適用 where / let - in where vs let-in レイアウトルール ローカル関数 型注釈 if 式 ガード カリー化・部分適用 まとめ あとがき 関数の基 Swift で足し算をする関数のコードは次のように書けます。 func add(x: Int, y: Int) -> Int { return x

    2. 関数の基本 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/02/26
    書きました。
  • 1. 環境構築 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    さて、この記事では VSCode と stack を利用した Haskell の開発環境の構築を行っていきます。この環境構築を飛ばしても、次回以降の記事を読むのに支障はありませんが、コードを実行・評価できる環境が整っていると学習が捗るのでおすすめです。 概要 Stack のインストール VSCode拡張:Haskell のインストール implicit-hie のインストール / hie.yaml の自動生成 JetBrains Mono フォント(任意) おすすめの学習方法 REPL の活用 テストコードの活用 REPL の基と設定 ヘルプ 代表的なコマンド 複数行の入力 プロンプト表示のカスタマイズ おわりに VSCode トラブルシューティング 補完やホバーが動かない なんかコード全体がエラー扱いに・・・ あとがき 概要 インストールする対象は以下のとおりです。 Stack VSC

    1. 環境構築 :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/02/26
    書きました。
  • 0. Introduction :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog

    Haskell は Swift に影響を与えたプログラミング言語として知られています。Swift に影響を与えたとされるプログラミング言語は他にも Objective-C、RustRubyPython、C# など多数に及びますが、プログラミングパラダイムに最も影響を与えているのは Haskell でないかと私は感じています。 この連載記事は、Swift と比較しながら Haskell を学んでいく記事です。 0. Introduction 1. 環境構築 2. 関数の基 3. データ型の基 4. リストと演算子と関数合成 5. リストと再帰 6. レコード構文と多相型とカインドと -- About this articles? readThisArticles :: SwiftProgrammer s => s -> HaskellerBeginner readThisArticl

    0. Introduction :: Swift プログラマのための Haskell 入門 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/02/26
    連載記事を書き始めました。
  • SwiftPrettyPrint 1.2.0 をリリースしました。 - ペンギン村 Tech Blog

    SwiftPrettyPrint の 1.2.0 をリリースしました。 github.com 今回のリリースには、ターミナル統合(ANSIカラー)とマイナーな Bugfix が含まれています。 そもそも SwiftPrettyPrint って何ぞや、という方は前回の記事をご参考いただければ幸いです。 blog.penginmura.tech ターミナル統合(ANSIカラー) Xcode Plugin は衰退しました たったひとつの冴えたやり方? SwiftPrettyPrint は Xcode extension の夢を見るか? 2.0.0 への扉 おわりに P.S. ターミナル統合(ANSIカラー) 今回のバージョンから iOS Simulator または macOS で実行されている場合に、以下のファイルにコンソールと同様の内容が自動的に出力されるようになりました。 /tmp/Swif

    SwiftPrettyPrint 1.2.0 をリリースしました。 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/02/12
    リリースしました。
  • swift-emmet をリリースしました。 - ペンギン村 Tech Blog

    どうも、まだ生き延びてる @tobi462 です。 swift-emmet という CLI ツールをリリースしたので、それの紹介的な記事です。 github.com ちなみに Haskell で書かれています。 それは何? シンプルな記法で構造体やクラスのコードを生成する CLI ツールです。 おまけ程度ですが REPL も備えています(ほんとにおまけレベルです)。 なんで作ったの? 業務アプリ(でなくとも)だと、多数のプロパティを持った構造体(やクラス)のコードを記述する機会は多いと思います。 そうした際、だいたい私は VSCode のマルチカーソルを使って雛形コードを書いて、それを Xcode に貼り付けるというフローをしていました(伝わりますかね?)。 ただ、それでも面倒に感じることが多かったので、Emmet インスパイアな CLI ツールを作ってみた次第です。 詳細は README

    swift-emmet をリリースしました。 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/02/10
    需要があるか分かりませんが作りました。
  • Swift のローカル関数の使いどころ。あるいは部分適用された関数の話。 - ペンギン村 Tech Blog

    どうも、あんま元気ではないですが、まぁ何とか生きてる @tobi462 です。 いや、こんな出だしで大丈夫か?って感じもしますが、大丈夫だ。問題ない。ということで久しぶりに技術記事を書いてみます。 Tl;Dr ローカル関数とは? 引数を継承する関数呼び出し 転送用のローカル関数を定義する 部分適用された関数(Partial Application Function) まとめ Tl;Dr ローカル関数は、その関数内の変数をキャプチャする。 関数の引数をそのまま引き継いだ『部分適用された関数』を作りたいときなどに便利。 func foo(x: Int, y: Int) { func _bar(z: Int) { bar(x: x, y: y, z: z) // Capture `x` and `y` } _bar(z: 10) // => 13 _bar(z: 20) // => 23 _ba

    Swift のローカル関数の使いどころ。あるいは部分適用された関数の話。 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2021/01/26
    書きました。
  • SwiftPrettyPrint 1.1.0 をリリースしました。 - ペンギン村 Tech Blog

    先週、 SwiftPrettyPrint の 1.1.0 をリリースしました。このリリースには以下の2つのインテグレーションが含まれています。 LLDB Combine 記事では、その2つの機能について解説したいと思います。 そもそも SwiftPrettyPrint って? LLDB 統合 Combine 統合 おわりに P.S. そもそも SwiftPrettyPrint って? SwiftPrettyPrint はその名の通り、Swift で pretty-print するためのデバッグ支援系のライブラリで、標準の print よりもスマートに出力することを目的としています。 github.com これは例を見たほうが早いかもしれません。例えば、以下は Dictionary を標準関数である print debugPrint dump でそれぞれ出力したものです。 let dict

    SwiftPrettyPrint 1.1.0 をリリースしました。 - ペンギン村 Tech Blog
  • 開発で使えるJOJOの奇妙な名言集 - ペンギン村 Tech Blog

    この○○が金やちやほやされるために技術ブログを書いていると思っているのかァーッ!! 技術ブログを書いていることをアフェリエイト目的とか、PV目的だとか言われた時に。 なるほど完璧な開発プロセスっスねーーーっ不可能だという点に目をつぶればよぉ〜 一見完璧に聞こえるけど、どう考えたって上手く回らない開発プロセスの説明を受けた時に。 理解不能理解不能・・・あ、理解可能 ようやく理解できた時に。 お前は1つの修正が終わったらキチっとコミットしてから次の修正に入るだろう? 誰だってそーする。俺もそーする。 1コミットに全部の修正をぶちこもうとする奴へのあてつけに。 忘れっぽいならよォー……メモっておけよなぁー 几帳面によぉ~~ 忘れっぽい人に。 そんなもの、うちにはないよ 新しく入った人に仕様書ってどこですか?って聞かれた時に。 コードも見ておこう コードレビューは基。 ソースヲ見ロォ〜 ドキュメ

    開発で使えるJOJOの奇妙な名言集 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2020/03/23
    おまえの次のセリフは「これはバズる!」という!
  • Bitrise の bundler 2.x アップデート問題について私がどう考えて調査・対応したか。あるいは手軽さの影で。 - ペンギン村 Tech Blog

    どうも、休職中の @tobi462 です。 毎日仕事もせずに何をやっているかと言えば・・・そうですね、個人的推論に則った改善活動といったところでしょうか。 Bitrise の Xcode 11.3.x ビルドスタックの bundler が 1.x → 2.x に更新された 先週くらいに iOS 界隈を騒がせた小さな事件といえば、Bitrise の Xcode 11.3.x のビルドスタックのマイナーアップデートにおいて、bundler のバージョンが 1.x から 2.x に更新されたことでしょう。 Xcode 11.3 から Xcode 11.3.1 へのマイナーアップデートに関わらず、長らく bundler 1.x を利用し続けていた Bitrise が、このタイミングで bundler 2.x 系に更新したことは、Bitrise を利用している iOSアプリエンジニアの多くを混乱させ

    Bitrise の bundler 2.x アップデート問題について私がどう考えて調査・対応したか。あるいは手軽さの影で。 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2020/01/24
    書きました。
  • 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テスト全書』の報酬の30%を分配した話。あるいは制作を支えた人々について。 - ペンギン村 Tech Blog

    どうも、最近は Dirty Androids の『Saturdays』ってアルバムがお気に入りの tobi462 です。 www.da-recording.com 広義には『HOUSE』あるいは『EDM』といった音楽ジャンルに当たるんでしょうか。個人的には『FUTURE BASS(フィーチャーベース)』っぽく感じる曲もあって、大変気に入っています。 製版がリリース 以前の記事で『電子版』のリリースをお伝えしました。 blog.penginmura.tech そして、ついに『製版』もリリースされ、私の手元にも届きました。 また、一般販売も近日中に開始されることが決定し、出資者以外でも購入することが出来るようになります。 いやはや、これで長かったこの仕事もようやく『完了』と言えそうです。 報酬の30%を『編集者』と『レビュアー』に分配 さて、『PEAKS』というクラウドファンディングで皆様

    『iOSテスト全書』の報酬の30%を分配した話。あるいは制作を支えた人々について。 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2019/12/08
    書きました。
  • 『DDD物語』 〜つばさドメイン〜 - ペンギン村 Tech Blog

    あ=阿良々木くん、羽=羽川(元)委員長 これは僕が『DDD』について学びながら、自分なりにアウトプットした話でありフィクションであり、まぁつまるところどうでもよい独り言だ。 どちらでも良いし、どちらでも悪いかもしれない。 唯一、正しいのはこれを書いているのが僕の『意思』をもった記録であるということだけだろう。 つばさドメイン 其の壹 あ「なぁ羽川。DDDって知ってるか?」 羽「ん、星のカービィに出てくる環境破壊が楽しい人のこと?」 あ「違う。それはデデデ大王だ。しかもアニメ版限定の話だぞ」 羽「あぁ、ドメイン駆動設計(Domein-Driven Design)のことね」 あ「そうそう。お前は当になんでも知ってるな」 羽「何でもは知らないわよ。知ってることだけ。それで、なんでいきなりDDDの話なんて始めたの?」 あ「あぁ、実はプログラミングスクールに最近通い出したんだけど、そこの課題で『D

    『DDD物語』 〜つばさドメイン〜 - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2019/11/30
    連ツイしてた内容をまとめました。