タグ

ブックマーク / qiita.com/koher (18)

  • 15分でわかる かんたんオブジェクト指向 - Qiita

    最近、オブジェクト指向プログラミング1について説明する機会が多く、これからもっと多くなりそうなので、文章にまとめることにしました。 オブジェクト指向とは何かという説明はたくさんありますが、 何のためにオブジェクト指向プログラミングがあり、どのように使うのか を、具体例を交えて説明した文章がなかなか見つからなかったので自分で書いてみました。個人差はあると思いますが、目安として 15分程度で読了 2できる分量を想定しました。 投稿は継続的にアップデートして改良していきたいと考えています。わかりづらい点やおかしな点などあれば、コメントか @koher までツイートいただけるとうれしいです。 対象 オブジェクト指向の考え方がよくわからない人 プログラミングの初歩(条件分岐、ループ、配列、関数など)はわかっている人 作りたいものを自分で考えてある程度作れる人 一人のデータ プログラムで会員や顧客、

    15分でわかる かんたんオブジェクト指向 - Qiita
    Nyoho
    Nyoho 2020/08/12
    速習で(・∀・)イイ!!
  • Swift 5.x のResultに備える - Qiita

    Swift の機能提案は Swift Evolution で行われるのですが、 Swift の標準ライブラリに Result 型を追加するプロポーザル SE-0235 が承認されました。その結果、 Swift 5 で Result が標準ライブラリに追加されます。 投稿では Result とは何か いつ Result を使うべきか Result をどのように扱うべきか 今のうちに Result に備える方法 を説明します。 Result とは何か Swift にはサードパーティ製の antitypical/Result という人気ライブラリがあり、 Result に馴染みのある人も多いと思います。節では、 Result に馴染みのない人のために Result について簡単に説明します。 Result はエラーハンドリングに用いられる型で、次のように宣言されます。 public enum

    Swift 5.x のResultに備える - Qiita
    Nyoho
    Nyoho 2019/03/30
  • マジレスすると『Optional(2018)年』を恐れる必要はない - Qiita

    あけましておめでとうございます。新年早々おもしろツイートがバズっていました。 おっ、null安全だ pic.twitter.com/RFta3RFXxu — yuga panda (@yugapanda) 2018年1月1日 これは、ネタとしてはおもしろいんですが、 Optional について良く知らないと 「 null 安全とか言っても『Optional(2018)年』 みたいな新しい問題を生んでしまうんだな。」 とミスリーディングされてしまう可能性があります。なので、 『Optional(2018)年』と表示されること自体は問題ではなく、むしろ null 安全( null safety )のために必要である 『Optional(2018)年』は確実に防ぐことができ、心配する必要はない ということをマジレスしてみます。 そもそも何が問題なのか 今回『Optional(2018)年』と表示

    マジレスすると『Optional(2018)年』を恐れる必要はない - Qiita
    Nyoho
    Nyoho 2018/01/06
    いいね。ことりんでは防げんのんかー意外だった。
  • Swift 4の魅力の一面を3行で表す - Qiita

    先日 Swift 4 がリリースされました。みんな注目しているのは Codable など劇的にコーディングが楽になる新機能だと思いますが、ちょっとした便利な小技もあります。 そんな、 Swift 4 の小技の魅力の一面を 3 行にぎゅっと詰め込んだコードを思い付いたので紹介します。 // User の Array から、 team ごとの人数を集計する let teamToCount: [String: Int] = users.reduce(into: [:]) { teamToCount, user in teamToCount[user.team, default: 0] += 1 } これは、 User の Array を team ごとに集計するコードで、次の二つの新 API を使っています。 Dictionary の subscript(_:default:) (リファレンス)

    Swift 4の魅力の一面を3行で表す - Qiita
    Nyoho
    Nyoho 2017/10/05
  • Swift 4の新しいreduceが素晴らしいので紹介する - Qiita

    この新しい reduce は、これまでの reduce の抱えていた問題を鮮やかに解決してくれるものなので、その素晴らしさについて説明します。 これまでのreduceの問題点 reduce を使って Array を生成する場合を考えてみます。たとえば、 [2, 3, 5] という Array があったときに [2, 2+3, 2+3+5] のように、その要素とそれまでの要素の合計値を格納した Array を作りたいとします[^1]。 そのような処理は reduce を使って↓のように書けます。

    Swift 4の新しいreduceが素晴らしいので紹介する - Qiita
    Nyoho
    Nyoho 2017/08/10
  • 純粋値型Swift - Qiita

    これは Swift Tweets 2017 Summer での発表を編集したものです。 それでは、"純粋値型Swift"というタイトルで発表します。 #swtws pic.twitter.com/maVe3JYmM8 — koher (@koher) 2017年7月22日 Swift は値型を中心とした言語です。この発表では、仮に参照型を使わずに値型だけを使った場合、 Swift でどれだけのことができるかを探ります。 Swift が登場した当初、僕は Swift が値型を中心としていることに驚きました。参照型でないとできないことがあるし、比較的新しい言語は値型を参照型に見せかけてすべてが参照型であるかのように振る舞うことが多いように感じていたからです。 しかし、 Swift を使うにつれて、値型だけでできることは当初考えていたよりもずっと幅広いことがわかってきました。また、値型の特性を活

    純粋値型Swift - Qiita
    Nyoho
    Nyoho 2017/07/24
  • インタフェースと型クラス、どちらでもできること・どちらかでしかできないこと - Qiita

    最近にわかに 型クラス が盛り上がっているようです。しかし、型クラスはインタフェースに似たものだという意見もあればまったく別のものだという意見もあり、混乱する人が多いのではないかと思います。 そのような混乱を招く理由は、 インタフェースと型クラスはどちらも抽象化を実現するためのもの であり、 インタフェースでも型クラスでもできること インタフェースでしかできないこと 型クラスでしかできないこと があるからです。 1 に着目した人は似ていると語り、 2 や 3 に着目した人はまったく違うものだと言います。 投稿では、 Java / Kotlin のインタフェース、 Haskell の型クラス、 Swift のプロトコルを比較し、上記の 3 点を整理します。 Swift のプロトコルを加えるのは、 Swift のプロトコルがインタフェースと型クラスの両方の性質を備えたものなので、比較対象とし

    インタフェースと型クラス、どちらでもできること・どちらかでしかできないこと - Qiita
  • Swiftのエラー4分類が素晴らしすぎるのでみんなに知ってほしい - Qiita

    これは Swift Tweets の発表をまとめたものです(次回開催はこちら)。イベントのスポンサーとして Qiita に許可をいただいた上で投稿しています。 ありがとうございました!Q&Aは他の人の発表中でも構わないのでリプを飛ばして下さい。 続いては僕 @koher の発表で、タイトルは "Swiftのエラー4分類が素晴らしすぎるのでみんなに知ってほしい" です。 #swtws — koher (@koher) 2017年1月14日 第 1 部: Swift の 4 種類のエラーについて あまり知られてませんが、エラー処理について、 Swift 2.0 設計時に Core Team がまとめた "Error Handling Rationale and Proposal" というドキュメントがあります。このドキュメントは、僕が去年 try! Swift で発表した際にも参考文献にしまし

    Swiftのエラー4分類が素晴らしすぎるのでみんなに知ってほしい - Qiita
    Nyoho
    Nyoho 2017/01/15
  • null安全でない言語は、もはやレガシー言語だ - Qiita

    これらは、表中の「リプレース対象言語」に挙げたように、多くのメジャー言語に対する代替手段でもあります。 Java の代わりには Kotlin や Ceylon が、 JavaScript には TypeScript や Flow が、 Objective-C には Swift が、そして PHP には Hack があります。 Python は自身に null 安全 を取り込みました。 Crystal は直接 Ruby と連携して使えるわけではありませんが、 Ruby 風の null 安全 な言語です。 RustC++ の代替を目指して開発され、 Firefox の一部で C++ のコードを置き換えるのに使われています [^100] 。 null が引き起こしてきた数々の問題を考えると、僕は、 null 安全 は GC (やその他の安全なメモリ管理手法)に匹敵するプログラミング言語の進

    null安全でない言語は、もはやレガシー言語だ - Qiita
    Nyoho
    Nyoho 2016/11/07
  • TensorFlowで学習したモデルを使ってiOS/Swiftで実行する - Qiita

    最近 Qoncept では TensorFlow を使った案件が続いており、その中で TensorFlow を iOS 上で使いたいことがありました。 ぱっと浮かんだ選択肢は次の二つでした。 TensorFlow を iOS 用にビルドして C++APISwift から叩く 学習は TensorFlow / Python で行って、テンソルの計算だけを iOS / Swift でシミュレーションする しかし、前者ついては、まだ TensorFlow を iOS 用にビルドできなさそうでしたしできるようになりました(コメント参照)、たとえできたとしても C++APISwift から叩くのは辛そうです。 TensorFlow がありがたいのは学習時の自動微分等の機能であって、学習済みのモデルを利用するときはただテンソルの計算をしてるだけです。別に学習を iOS 上でやり

    TensorFlowで学習したモデルを使ってiOS/Swiftで実行する - Qiita
  • 絶対に見逃せない投稿が、そこにはある - Qiita

    Qiita の 「見逃せない投稿」 を独自に評価してランキングするサービス Qaleidospace を作りました。 投稿では、そのようなサービスを作ろうと思った理由、投稿を評価するアルゴリズム、システム構成について書きます。 余談ですが、今なら Yearly Ranking がほぼ 2015 年の投稿ランキングとなっており、眺めていて楽しいです。 TL;DR Qiita の「見逃せない投稿」をランキングするサービス Qaleidospace を作った。 適切な評価システムがあれば、書き手も読み手もみんな幸せになれるはず。 ストック数だけで評価すると、初心者向けの投稿やキャッチーなキーワードを散りばめただけの投稿が注目されやすい。誰がストックしたのかを重視して「見逃せない投稿」を評価する。 風変わりなシステム構成: GitHub Pages でホスティング + Swift で書かれたバッ

    絶対に見逃せない投稿が、そこにはある - Qiita
    Nyoho
    Nyoho 2016/01/05
  • SwiftのOptional型を極める - Qiita

    投稿の個別の説明( Optional とは何か、 ?. と map, flatMap の関係、その背後にあるモナドという概念)は 2017 年現在でも通用するものですが、 Swift の Optional の使い方としては、僕の考えとのズレが大きくなってきました。 Swift の Optional をいつ・どのように使うべきかについてもまとめた ので、そちらも併せて御覧下さい。 Optional は Swift の仕様の中でもっとも素晴らしいものの一つだと、僕は考えています。 null参照 (多くの言語で nil や null と呼ばれるもの)を発明したトニー・ホーアは次のように述べています[^1]。 それは10億ドルにも相当する私の誤りだ。null参照を発明したのは1965年のことだった。(中略)これは後に数え切れない過ち、脆弱性、システムクラッシュを引き起こし、過去40年間で10億ド

    SwiftのOptional型を極める - Qiita
    Nyoho
    Nyoho 2015/09/01
    map, flatMap
  • まだSwiftyJSONで消耗してるの? - Qiita

    結論: Argo すげー!!特に Swift 2.0 以降で。 はじめに Qoncept では週に 2 回、みんなでコードリーディングする時間を設けています。先週から Carthage のコードを読み始めたところ、依存ライブラリの中に Argo という JSON パーサを見つけました。 僕はこれまで JSON のデコードに SwiftyJSON を使っていました。しかし、 Argo の README やソースを読んでみて、これは素晴らしいと思ったので Argo について紹介します。 JSONのデコード 次のような User 型があるとします。 struct User { let id: String let nickname: String? let age: Int let admin: Bool }

    まだSwiftyJSONで消耗してるの? - Qiita
    Nyoho
    Nyoho 2015/08/13
    JSONにArgo。アプリカティブで。
  • Swift 2.0 の try, catch ファーストインプレッション - Qiita

    WWDC 2015 で Swift 2.0 が発表されました。オープンソース化などのうれしいニュースでも盛り上がっていますが、言語仕様としては try, throw, catch が導入されるという大きな変更がありました。投稿は、 The Swift Programming Language の新章 Error Handling を読み、多少のコードを書いた上での個人的な感想です。 結論から言うと、 try, catch の導入は良い変更だと思えないけど、 try, catch を導入する前提なら考え得る限りベストに近い仕様だった、って感じです。 よかったのは、 ErrorType は enum タイプセーフなエラー情報 エラー処理が強制されている(検査例外のような形) try! でエラーを無視できる あたりです。個人的には、 try, catch でなく Either 的なものを公式サ

    Swift 2.0 の try, catch ファーストインプレッション - Qiita
    Nyoho
    Nyoho 2015/06/10
    検査例外
  • Swift 1.2で導入されたflatMapのユースケース7個を実際のプロジェクトから抜き出してみた - Qiita

    Swift 1.2 が正式にリリースされ、 flatMap が追加されました。僕は Extension を使って flatMap を独自に実装し1、利用していたため、これまでも実ブロジェクトで flatMap を使ってきました。 投稿は、 僕が携わった実際のアプリのコードから flatMap を使っている箇所を抜き出し、その使い方を紹介する ものです。 なお、コードを抜き出すに当たって問題がないように若干修正してあるので完全に元のままではありません。また、実プロジェクトからの抜粋なのでユースケースとして網羅的でないことをご了承下さい。 flatMap は Array だけでなく Optional のメソッドでもあるので、以下セクションを分けて記載します。 データ構造 初めに簡単にこのアプリで扱うデータ構造について説明します。今回取り上げるアプリでは、 Chapter, Section,

    Swift 1.2で導入されたflatMapのユースケース7個を実際のプロジェクトから抜き出してみた - Qiita
    Nyoho
    Nyoho 2015/06/04
  • 今すぐObjective-CをやめてSwiftを使おう - Qiita

    はじめに この3週間ほど仕事Swiftを使ってアプリ開発をしてみました。その感想として、すべての人に当てはまるとは言えませんが、 多くのiOSアプリ開発者にとっては今すぐにSwiftを使い始める価値があると感じました(Swift 1.0がリリースされてから1ヶ月ほど経った2014年10月時点での感想です)。 そこで、この投稿では Swiftの利点とよくある不安や疑問に対する回答 を書いていきます。 対象となる読者 この投稿は次のようなiOSアプリ開発者を対象としています。 Objective-Cで十分でしょと思っている人 なんとなくSwift良さそうだけど踏み出せない人 Swiftがいいのはわかったけどまだ実案件では使えないと思う人 どうしてObjective-CよりSwiftを使った方がいいの? Optional Type(これだけでSwiftを使う価値あり) 私見ですが、Object

    今すぐObjective-CをやめてSwiftを使おう - Qiita
    Nyoho
    Nyoho 2014/10/18
  • SwiftのArrayが実はすばらしかった - Qiita

    先日SwiftのArrayがヤバイという投稿をしましたが、その後仕様が変更されたこともあり、考えれば考えるほど SwiftのArrayがすばらしいように思えてきました。 SwiftのArrayがすばらしいと思うのは、 Arrayが参照型ではなく値型であることで無駄なコピーが回避できる からです。単純に考えると、代入の度にコピーが発生する値型の方が無駄なコピーが発生しそうなものです。 なお、投稿ではArrayのみを扱いますが、Dictionaryについてもまったく同じことが言えます。 可変長配列は普通は参照型なんじゃないの? 多くの言語では可変長配列は参照型として実装されています。しかし、SwiftのArrayは値型でした。最初にそれを知ったとき、気持ち悪い言語だなぁと思いました。 値型はその性質上、メモリ上でのサイズが固定されている必要があります[*1]。そのため、可変長配列のようにサイ

    SwiftのArrayが実はすばらしかった - Qiita
    Nyoho
    Nyoho 2014/07/29
  • SwiftのArrayがヤバイ - Qiita

    (2015.11.18に追記) 「Swift List」 で検索するとこの投稿にたどり着いてしまいますが、関数型言語でいうところのリストをお求めの方は "Swiftでhead、tailにパターンマッチできる遅延リスト" を御覧下さい。 (2014.7.24に追記) SwiftのArrayの新仕様(beta 3以降)がヤバイどころかすばらしいのでまとめました 。 (2014.7.10に追記) SwiftのArrayがヤバくなくなりました。 投稿に書かれているのはbeta 2までの古いSwiftについての情報ですのでご注意下さい 。beta 3以降では次のような挙動となり、値型としてごく自然な挙動になりました。 var a = [11, 22, 33] var b = a a[0] = 777 // b[0]は777にならない a.append(44) a[0] = 888 // b[0]は

    SwiftのArrayがヤバイ - Qiita
    Nyoho
    Nyoho 2014/06/21
  • 1