本書では落ち物パズルゲームとして有名なテトリス風ゲームの開発を通してRust言語を学ぶことを目的としています。 テトリスを知らない方でも問題なく読み進めることができます。 先ずは理解しやすいコードでシンプルな落ちものパズルゲームを実装し、後にリファクタリングや機能追加、自動化をしていく流れで構成されています。 テトリスにも様々な種類がありますが本書ではCUIでワールドルールを参考にして完成を目指します。

これは Swift Advent Calendar 2019 24日目のエントリーです。 昨日23日は Moto0124 さんの CGAffineTransformを知る でした。 はてなエンジニアAdvent Calendar 2019での Deletable Table with TextField on SwiftUI に続いて、今回も SwiftUI ネタです。 そもそもSwift Playgroundsって? ここでいう Swift Playgrounds はXcodeに付属のPlaygroundではなく、iPadアプリとしての Swift Playgroundsを指しています。 以降、 Swift Playgrounds は 「iPadアプリのSwift Playground」、 Xcode Playground はXcodeに付属のPlaygroundと使い分けます。 ドキュ
GraphQLのクエリやミューテーションはJSONエンコードされた本文をHTTP POSTでサーバに送ることで実行されます。 すべてのクエリやミューテーションは同じエンドポイント(/graphql等)に対してPOSTされるため、特別な対応をしない限り、ログには「クエリ or ミューテーションどちらなのか」「どんな内容か」などの情報が記録されません。 簡単な設定だけでログを見てざっくりリクエストの傾向がわかるようにできると便利ですよね。 エンドポイントにoperationNameを付与する 例: query FooBarQury を実行した場合 -> /graphql?operationName=FooBarQuery 上記のようにしてクエリやミューテーションの名前を operationName としてリクエストURLに付与します。 具体的な情報はもちろん本文に含まれるため、細かな分析はでき
Speaker Deck This deck requires a password Password
react-native で Swift の Native module を呼び出す方法です。基本的には下の Blog のやり方を真似ています。 Swift in React Native - The Ultimate Guide Part 1: Modules 紹介する内容は次の通りです。 簡単な Counter を Native Module で実装した Native Module の呼び出し Native Module から Constants を受け取る Native Module からの Callback を扱う Native Module からの Promise を扱う Native Module からの Event を扱う 対象のバージョンは次の通りです。 react-native: 0.57.8 Swift: 4.2.1 Xcode: 10.1 プロジェクト全体のコードは
概要 Swift5.1で利用できるattributeの一覧です。(Public APIのみ) 本記事は以前作成したSwiftのattributeまとめ[Swift4対応]をSwift5.1向けに更新したものです。 attributeは全てを暗記する必要はありません。これなんだっけ、と思ったときにこの記事でさくっと見られる簡易リファレンスになればと思います。 attributeとは コンパイラに対し、宣言や型の補足情報を伝えるもの 属性や修飾子とも呼ばれる Swift5.1では公式リファレンスに記載されているもので全27種類 attributeの記法 attributeの記法は以下のようになり、より詳細な情報を補足するために引数も指定することができる **@〜**という記法はコンパイラディレクティブと呼ばれ、コンパイラに対する指示を記載する際に利用される attribute一覧 autocl
Web フロントエンドの実装において本来の機能を損なってはいけない 2022.12.24 データの取得・ルーティング・フォームの値の管理に至るまで JavaScript で制御するようになった結果、本来備わっていた機能を損なう形で実装されるような間違いが起きるケースも発生してしまいました。見た目上操作に不都合がないのですが、修飾キーが有効でなかったりと、とある要素が当然に持っているべき機能が失われていることがよくあります。 昨今の Web フロントエンドの開発においては、React や Vue.js などを利用した SPA を採用することが多くなりました。従来の MPA と比較して、リンククリック時やフォーム送信時にページリロードを挟まないので、高速な画面遷移を実現できるため、快適な操作を実現できます。 一方データの取得・ルーティング・フォームの値の管理に至るまで JavaScript で
Error こんにちは。スタメンでiOSアプリを開発している @temoki です。 モバイルアプリ開発に限らずソフトウェアの実装においては必ずエラーハンドリングが必要になりますよね。iOSアプリを Swift で開発する場合、回復可能なエラーのハンドリングについては次のように do-catch ステートメントを用いることが基本となっています*1。 do { // `func functionThatCanCauseError() throws -> Int` let value = try functionThatCanCauseError() print(value) } catch let error { print(error) } 他には、Swift 5 で追加された Result 型 *2 を用いて次のように行うことも多いですね。 // `func functionThatCa
「パフォーマンスについて言えば、ZigはCよりも速いです。」 この一文は Zig 言語の公式サイトの詳細な概要に実際に書いてある文章です。 その理由としていくつか挙げた上で最後にちらっと「Zig は SIMD ベクトル型を直接公開しており、移植性の高いベクトル化コードを簡単に記述することができます。」と書いてあります。今回の記事では画像処理っぽいお題を使って実際に SIMD 最適化される様子を検証してみます。 ベンチマーク環境 OS: Ubuntu20.04 on WSL2 on Windows11 CPU: AMD Ryzen 9 5900X 12-Core Processor お題 一般的な画像データ構造の表現である、幅×高さ×4(RGBA)の長さを持つ8bit整数の配列を受け取り、in-placeでRGBの値を 10 加算して明るくするという関数を考えます。Aの値は元のままとします。
宣言的UIの登場で、ViewModelは、存在理由を失っている つまり、 SwiftUIにViewModelのデータバインディング機能が内包された時点で、 ViewModelは存在理由を失い、「ViewModel」という言葉自体も、なんだか意味がよくわからない言葉 になってしまいました。 ViewModelという言葉は 非常に曖昧 で人によって定義が違い、そもそもViewModelレイヤーでやるべきことが何なのか明確化されてないので、とりあえず面倒事は全部押し付けられがちです。 本来、別のレイヤーですべきこともViewModelにつっこんでたりします。 MVVMを採用すると余計な複雑性を生んでしまう。 SwiftUIでMVVMを採用してしまうと「ViewModel」という余計なレイヤーを挟んでしまうため、冗長で複雑になります。 データフローについて、ViewとModelがViewModel
@MainActor class SampleViewModel: ObservableObject { @Published var model: SampleModel init(model: SampleModel) { self.model = model } var count: Int { get { return model.count } set { model.count = newValue } } var stars: String { return model.stars } func changeStarsLength(_ len: Int) { model.changeStarsLength(len) } } struct SampleView: View { @StateObject var viewModel: SampleViewModel var bod
Zig言語の話をするときに、初めての人にざっと読んでもらうためのページ。 Zig言語とは 静的型付きのコンパイル言語。C言語と同じ立ち位置。 本家 ziglang.org のoverview 日本語 Wikipedia Wikipedia 英語版 ドキュメント 標準ライブラリのリファレンス 現在の状況 まだ開発中で正式リリースには至っていない。なのでまだ破壊的変更はあり得る。 記事を書いた時点の安定版タグは0.10.0。 公式なパッケージマネージャはまだない。[1](非公式なものは複数存在する) ** 2023/08/15 追記 ** 安定版0.11.0のリリースとともに公式版パッケージマネージャが利用可能になりました。 私が考えたキャッチコピー 「C言語が誕生したのは1972年。Zig言語はそれを2020年代の知見で再構成するもの。50年分の進化!!」 "C but with the p
利用しているサービスに何か障害が起きたとき真っ先に見に行くのがステータスページですが、ステータスページ作るのはめんどくさいです。 そこで自社で利用しているステータスページサービスを簡単に紹介したいと思います。 OnlineOrNot - Free Status Pages and Uptime Monitoring - OnlineOrNot 仕組みとしては定期的に指定された URL をチェックしにいくというシンプルなものです。 ちなみに、時雨堂のサービスのステータスページは以下になります。 どんな感じかのイメージをつかんでもらえるといいかなと。 Shiguredo Inc. Status プラン 5 URL までは無料で使えます。カスタムドメインや URL を増やしたい場合は有料です。 さらにこれ Team プランだとプライベートステータスページも提供してくれるようです。 Plans &
2023 年度の僕のエラーハンドリング について書きたい。 昨日Safe Data Fetching in Modern JavaScriptを読んでいて、fetch に限った話ではないが一家言ある内容だったので書きたくなった。 おそらくやりすぎだとか非効率と言われる点はあると思うので、みんなの一家言も教えて欲しい。 対象は Typescript での サーバー開発想定だが、TS であればクライアント開発にもほとんどに当てはまる話だと思う。 例外のスローではなく Result 型を使う Result は失敗するかもしれないという文脈を与えてくれる型 エラーハンドリングの戦略として例外を投げるのではなく、Result 型を返すやり方がある。 Result 型というのは export type Result<T, E> = Ok<T> | Err<E>; export interface Ok
まとめ Slackのような仮想リストを実現するのは難しい いずれのライブラリも上方向へのスクロールは難しい 普通に使う分には、react-virtuosoはいいぞ 環境 React Slackライクなメッセージアプリを作りたい 下方向に新しいメッセージが表示される 新規メッセージは下に追加される スレッドが存在している場合、スレッド元にジャンプできる 基本的にユーザは上方向へのスクロールを行う メッセージには画像や動画も添付でき、高さは不明 react-window doc: react-window npm: react-window - npm GitHub: GitHub - bvaughn/react-window: React components for efficiently rendering large lists and tabular data bundlephobi
平日の早朝に道玄坂を下るアベックに破滅と滅亡を。どうも、@neer_chanです。 皆さん、仮想スクロールしてますか? 概要 仮想スクロールとは 仮想スクロールの仕組み 仮想スクロールの魅力 前提として、縦スクロールの話をします。 仮想スクロールとは GIFの通り、見えている範囲(+α)のみレンダリングするもの。 要は、ロケット鉛筆みたいなものです。(絶対に違う) 仮想スクロールの仕組み イカれたメンバーを紹介するぜ! 見える範囲を指定するためのDiv スクロールする高さを指定するDiv ListItemを置くUnorderdList いつかの、いくつかのきみとListItem 以上の4つが登場するメンバーだ! ちなみに、通常のスクロールの場合は2の役割を3が行う感じになります。 また、以下の要素をあらかじめ指定する必要があります。 見える範囲に表示する4のListItemの個数(あるいは
はじめに 最近、React Native Meets SwiftUI - Better Programming - Medium という記事が目に止まりました。今回はこの記事について調べてみました。React Native でSwitfUI のコンポーネントを利用する話です。 このトピックについて調べることにしたのは、純粋に技術的な興味からです。プロダクト開発的には、コストをかけてまでReact Native アプリからSwiftUI を使いたい場面は今の時点ではほぼ無いでしょう。ただし技術者としては、連携の仕組みを知っておくと他で何かの役に立つことがあるかもしれません。 今回調べてみて分かったのは、React Naive からSwiftUI を利用する方法は、一部はReact Native やSwiftUI のドキュメントに記載されている要素によって実現され、残りは独自の実装によって実現
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く