タグ

Swiftに関するyu_dotnet2004のブックマーク (60)

  • SwiftUI で「グループスタンプ」というチャット機能を5日間で作った話

    先日リリースされたばかりのグループチャット機能私とカウシェ最初に軽く私とカウシェの関わりについて触れたいと思います。(興味ないよ、という方は適当に読み飛ばしていただければと思います) カウシェには今年の6月から複業として参画させていただいています。 カウシェでは 初期の頃から SwiftUI を採用 しており、プライベートで SwiftUI を学習していた私にとって、相性の良いと感じたのが最初のきっかけでした。 ただ、私にとって決定打になった最大の理由はそのビジョンにありました。 『世界一楽しいショッピング体験をつくる』 面談いただいた時に CPO である akifumi さんからこの言葉を聞いた時、一言でいえば 痺れました 。 殆ど受け売りになってしまいますが、既存の EC サービスでは効率化によって利便性が向上している一方、ウィンドウショッピングや友人との買い物を楽しむと言った、

    SwiftUI で「グループスタンプ」というチャット機能を5日間で作った話
    yu_dotnet2004
    yu_dotnet2004 2022/12/30
    アドベントカレンダーで書かせていただきました。
  • 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
    続きを書きました。
  • 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
  • Marzipan の正体は何だったのか そして SwiftUI の衝撃/wwdc19_marzipan_swiftui

    yu_dotnet2004
    yu_dotnet2004 2019/06/19
    久しぶりにプライベート登壇です。
  • 自由にクラスインスタンスにアクセスできるLLDBコマンド「vinfo」 - ペンギン村 Tech Blog

    自己紹介 vinfoとは 使用方法イメージ 使い所 使い方 備考 SwiftのStuctには vinfoではアクセスできません。。 自己紹介 ペンギン村の通行人 、po_miyasakaです。 名前の「po」はLLDBのコマンドから拝借しました。 (プロダクトオーナーでは🍆😎) vinfoとは github.com pythonで実装されたLLDB用カスタムコマンド 任意のアドレスからデバッグ用変数を生成する程度の能力を持つ (クラスインスタンスのアドレスに限る) SwiftもしくはObjective-Cで利用可能 使用方法イメージ アドレスからインスタンス生成デモ https://po-miyasaka.github.io/ezgif-2-f0ca03bf9732.gif Debug Memory Graphからインスタンス生成デモ https://po-miyasaka.githu

    自由にクラスインスタンスにアクセスできるLLDBコマンド「vinfo」 - ペンギン村 Tech Blog
  • Swift プログラマが Go言語を学び始めた話(後編) - ペンギン村 Tech Blog

    以下の記事の続きです。 blog.penginmura.tech blog.penginmura.tech 最後となるこの記事では、ここまで紹介してこなかった細かい機能や、Go言語における並列処理を実現するゴルーチン・チャネルについて触れ、最後に Go 言語に対する総括的な感想を述べて終わりにしたいと思います。 defer Swift でも用意されている defer は Go言語で初めて採用された仕組みらしい。どちらもリソースの後片付けなどに利用できる。 概略 次の例では Mutex ロックを確保した直後に defer でロック開放のコードを書くことで、関数を抜けたタイミングで確実にロック解放がされるようにしている。 func increment() { mu.Lock() defer mu.Unlock() count++ } Swift で同等のAPI が用意されていれば次のようになる

    Swift プログラマが Go言語を学び始めた話(後編) - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2019/01/30
    最後の記事です。
  • Swift プログラマが Go言語を学び始めた話(中編) - ペンギン村 Tech Blog

    以下の記事の続きです。 blog.penginmura.tech 制御構文 Go言語の制御構文としては次のものがある。 if switch for ゴルーチン・チャネルにおいて利用できる select という制御構文もあるが、それは後ほど触れることにする。 if 文 基的な書き方は Swift とほとんど変わらない。次のコードは Go言語 / Swift ともにコンパイルできる。 if 0 <= x && x < 100 { } else { } Go言語では if 文において事前にローカル変数を宣言することができ、これは Go言語におけるエラー処理のパターンで多用される。前編において 0除算された場合にエラーを返すDiv関数を呼び出した例として、次のようなエラー処理を記述した。 n, err := Div(6, 2) if err != nil { panic("error!") }

    Swift プログラマが Go言語を学び始めた話(中編) - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2019/01/27
    ]続きを書きました。
  • Swift プログラマが Go言語を学び始めた話(前編) - ペンギン村 Tech Blog

    私は Rust に賭けていた。ポストC++言語としての地位をどのプログラミング言語が取るか、もっといえば Rust vs Go でどちらが勝つかという話においてだ。 私が初めてGo言語を知った時は、こんな非力なプログラミング言語のどこが良いのだろうという感想だった。シンタックスはC言語を踏襲しているもののなんだか奇妙に見えたし、例外もジェネリクスも無いプログラミング言語が流行るわけ無いと思った。もちろんそれが意図的であるというWeb記事をいくつか読んだあとでもだ。それにGCを採用した言語がそれほどの高速さを得られるのかという点においても懐疑的であった。 しかし、予想に反してGo言語は相当受け入れられたらしい。 コンテナ界の世紀末覇者先輩であるDockerGo言語で書かれているし、私の愛するKubernetesやその周辺ツールまでもがGo言語で書かれているらしい。 それに比べて Rust

    Swift プログラマが Go言語を学び始めた話(前編) - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2019/01/24
    理解は浅いけど書き始めてみた。
  • Swift 4.2 はどのような進化をしているのか/whats-new-swift42

    iOSDC Japan 2018 https://iosdc.jp/2018/

    Swift 4.2 はどのような進化をしているのか/whats-new-swift42
    yu_dotnet2004
    yu_dotnet2004 2018/09/04
    発表してきました。
  • Swift 4.2 の変更点を iOSDC 2018 で話してきました - ペンギン村 Tech Blog

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

    Swift 4.2 の変更点を iOSDC 2018 で話してきました - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2018/09/03
    I did blog.
  • What’s New in Swift 4.2?

    Good news: Swift 4.2 is now available in Xcode 10 beta! This release updates important Swift 4.1 features and improves the language in preparation for ABI stability. This tutorial covers the most significant changes in Swift 4.2. It requires Xcode 10, so make sure you download and install the latest beta of Xcode before getting started. Getting Started Swift 4.2 is source compatible with Swift 4.1

    What’s New in Swift 4.2?
  • Xcode 9 の New Build System を試す - ペンギン村 Tech Blog

    この素晴らしきビルドシステムに祝福を。 どうも tobi462(過去記事)です。 さて、Xcode 9 から新しいビルドシステムが導入されたのは記憶に新しいですが、9.3 の時点でも Preview となっており標準のビルドシステムにはなっていません。 すでに他記事でも紹介や現状のビルドシステムとの比較がされていますが、実際に自分でやってみないと信用しない質のエンジニアなので、今回は自分で試してみた結果です。 追記(2018/05/27): 逆にビルド時間が長くなったり、そもそもエラーでビルドできないケースもあるようです。現時点では Preview 扱いなので、そのうち改善されるかもしれません。 Tl;Dr 以下のパフォーマンス向上結果が得られた Clean Build で 95% 差分ビルドで 90% Swift 4.2 のツールチェーンではビルドエラーになった 自分のPJで試して問題な

    Xcode 9 の New Build System を試す - ペンギン村 Tech Blog
    yu_dotnet2004
    yu_dotnet2004 2018/05/19
    書きました。