SwiftのCompilerはOSSとして公開されているので、興味のある方はぜひチェックしてください。github.com また、Swift Compilerのアーキテクチャについては、こちらの記事がとても分かりやすいです。 qiita.com 末尾再帰にしたとして、最適化を無効にしたときと有効にしたときで実行結果が変わってくるのであれば、Compilerの生成物も当然異なっているはずです。 それでは、最適化を無効にしたときと有効にしたときで、上記のどのタイミング(Component)でどのような生成物の違いがあるのか、見ていきます。 各Componentにおける差分 次の内容をsum.swiftとして保存し、生成物の差分を実際に見ていきます。 func sum(_ n: Int, _ res: Int) -> Int { if n == 0 { return res } return

本連載は、はてなエンジニアが、はてなのサービスを支えている技術や日頃注目している技術について解説するものです。Appleは毎年WWDCでいくつもの新規技術を発表していますが、筆者はその中でもObjective-Cの進化に特に注目していました。新たに追加されるAPIやサービスの前では、Objective-Cの進化はあまり注目されてきませんでしたが、実はここ数年の間も進化し続けていました。これにはAppleがコンパイラ技術にコミットしてきたことが大きく影響しています。今回は、Appleのコンパイラ関連技術を振り返り、Swiftにどう繋がるのかを解説します。 はじめにSwiftはAppleによって開発された全く新しいプログラミング言語です。WWDC 2014で稲妻のように現れたこのプログラミング言語は、またたく間に世界中のモバイルアプリ開発者の注目を集めました。Swiftは衝撃的な登場だった

(訳注:記事をご覧の環境によって文字列が正しく表示されない場合がございます。) 投稿が遅れたFriday Q&Aにようこそ。Swiftユーザの最大の不満の一つに、 StringAPIがあります。Swiftの文字列APIは難しく鈍いため、多くのユーザが他言語の文字列APIのようであればと感じているのではないでしょうか。今日はなぜSwiftの StringAPIがこのように設計されているのか(少なくとも私がなぜそう設計されていると思うのか)を説明します。そして、基本的設計の観点から見て、なぜこれが最高の文字列APIなのかを説明します。 文字列とは何か 説明に入る前に、まず基本的な概念を構築しましょう。文字列について、漠然とは理解しているものの、あまり深くは考えないものなのではないでしょうか。文字列をじっくり考えることで、どのようなことが起きているのか理解することができます。 概念としての文

このエントリーは読者としてスマートフォンアプリ開発者とWebフロントエンドエンジニアを想定して書いています。 CROSS2016に出るので、最近の自分の考えを整理しておく。 最近ReduxのSwift実装であるReSwiftを使って開発している。使った感想なども最後の部分に書いたけれど、このエントリーの本題はアプリの状態管理の話。 アプリは大きなシングルトン iOS、Android共にアプリを実装しようと思うと大抵シングルトンが必要になる。各ViewController内をまたがってデータを共有したいというユースケースが多いからだ。例えば ユーザーのログイン情報を集約するUserManager コンテンツへのいいね情報を集めるLikesManager ブックマーク情報を集めるBookmarkManager などなど。もちろんアプリの内容によってこれらの顔ぶれは違ってくると思うけれど、大抵U

この記事では、ドワンゴから今秋リリースされた 「ニコニコ漫画」iOSアプリ の開発での取り組みや内部の設計、ニコニコ漫画アプリのこれからについてご紹介します。あまり変わったことはやっていないとは思いますが、よくあるアプリ開発の一例としてご覧いただければと思います。 なお、一応お約束として書いておくと、この記事は個人の見解であり、所属する組織の公式見解ではありません。 はじめに "ニコニコ漫画"は、縦スクロールでサクサク、マンガを読めるのはもちろんのこと、新感覚のダイナミックな見開きページ表現を楽しめたり1、紙芝居のような形式のマンガが読めたりするなど2、かなり**アグレッシブなマンガアプリ3**です。 読み手はもちろん、マンガの作り手が作品を公開して嬉しい気持ちになれるサービスになっているかと思います。まだ使ったことがないという方は、この機会にご利用いただければ幸いです(宣伝)。 サービス

エンジニアの id:cockscomb です。この記事ははてなデベロッパーアドベントカレンダー2015の8日目の記事です。昨日は id:Songmu によるMarkdownドキュメントをgithubで管理して、はてなブログでホストする ~Mackerelの場合 でした。Swiftがオープンソース化されて数日が過ぎました。皆さんいかがお過ごしでしょうか。Swiftのオープンソース化そのものは今夏のWWDCでアナウンスされていた通りです。しかし私を含めた多くのSwiftプログラマーは、このオープンソース化にとても興奮しています。 WWDC 2015のキーノートで、Swiftが今年中にオープンソースになり、OS Xに加えてLinux上での動作がサポートされると発表されたとき*1、私たちはそれを予感していたにも関わらず熱狂しました。しかし同時に、いったいどこまでがオープンソースになるのか、

はじめに コードでAutoLayoutを適用しようとすると、Swift、Objective-Cにかかわらず、どうしても長くなってしまいがちで見難くなってしまいます。その見難くなる問題を解決するために、MisterFusionというライブラリを使用して改善する例を挙げていこうと思います。 レイアウト 下記のスクリーンショットは 赤いViewと緑のViewと黄色のViewが同じ高さ 黄色のViewと緑のViewは同じ幅 すべてのスペースは10px という条件のレイアウトになります。このレイアウトをSwiftでMisterFusionを使って再現した例Swiftで使わずに再現した例 Objecive-CでMisterFusionを使って再現した例 Objecive-Cで使わずに再現した例 という形で書いていきます。Swift MisterFusionを使ったコード 上記のレイアウトをMis

今開発中のPlayer!のログイン・登録画面で、こんな進捗表示をしていますが、これ実はフェイクだったりします( ´・‿・`) (Qiitaの画像サイズ制限が厳しくて粗いです。キレイなものは実際にアプリダウンロードしてご覧下さい。) 経緯 元々、この画面はこういう進捗表示では無く、単にインジケーターがクルクルするだけで、進捗状態が分からないものでした。 特にネットワークが悪いところだと、バグって固まってしまったのでは?とユーザーを不安にさせるようで、たまにそういう声を聞くことがありました。 登録フローは大事なところなので、そういうところでこれが原因で離脱してしまうと残念なので、改善が必要でした。 そこで、ネットワーク処理にもたつきつつもちゃんと正常に処理をしているということを示すために、進捗を表示することにしました。 ただ、例えば大きな画像などメディアファイルダウンロードなどならともかく、こ

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? iOSでサウンドの再生をしたい。 でもいろいろな再生方法があって、ややこしいので整理しておく。 公式ドキュメント:Core Audioの概要 なお、OSXでしか扱えないものは割愛している。iOS特化。 CoreAudioアーキテクチャ iOSでは、オーディオまわりの機能はCoreAudioというアーキテクチャにまとめられている。 iOSのCoreAudioは5つののフレームワークから成り、各フレームワークにはサービスと呼ばれる各種機能が入っていたりいなかったり。 AVFoundation.framework AVAudioPlayerク

SkypeのiOSアプリで見るバウンドするアニメーションを実装してみた。 その要点をまとめておく。 デモ https://github.com/ytakzk/Hokusai 実装方法 CADisplayLink アニメーションにはCADisplayLinkを使用した。 ディスプレイが更新されるタイミングで関数が走るため、 NSTimerよりもアニメーション適している。UIBezierPath 波のようなアニメーションを作るために、 ベジェ曲線を利用する。 具体的にはUIBezierPathで毎フレームごとにCALayerを描画。 // レイヤーの開始点に移動UIBezierPath().moveToPoint(開始点) // 現在の点からベジェ曲線を描いて次の点へ移動UIBezierPath().addQuadCurveToPoint(次の点, controlPoint:曲率を作るた

今回の概要 アプリ上にパーセンテージを表示する際、一番簡単なのは、UILabel を使って数値を表示する方法でしょう。 ただ、もっとカッコよく、分かりやすく表示したいとなると、やはりグラフ表示となるのではないでしょうか。 そこで、今回ご紹介するのは、このような円弧グラフを簡単に実現する MBCircularProgressBar です。イスラエルの Mati Bot さんが作成されました。 この OSS を Xcodeプロジェクトに組み込み、円形プログレスバーを表示し、さらにプロパティを変更して様々なビジュアル表現をするところまでご紹介します。プロジェクト作成 と pod install まずは、Single View Application テンプレートを使ってプロジェクトを作成します。 次に、プロジェクトフォルダ上に Podfile を作成します。 上記を Podfile に追加し
![[iOS][Swift] MBCircularProgressBar で円形のプログレスバーを実現! | DevelopersIO](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2fc83d413afe58d904e71a2ee3e849a272825f43c1%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fdevio2023-media.developers.io%252Fwp-content%252Fuploads%252F2015%252F01%252Fios_ui.png&f=jpg&w=240)
SwiftはOptimization Levelによって顕著にパフォーマンスに差が出ます。 参考:Apples toapples, Part II · Jesse Squires また、Dynamic Dispatchでの呼び出しもオーバーヘッドになります。 参考:Swiftのfinal・private・Whole Module Optimizationを理解しDynamic Dispatchを減らして、パフォーマンスを向上する - Qiita ドキュメントなど読み解けば「どういう記述をすればどうコンパイルされるか」は大体予測付きますが、やはり実際にその予測通りになっているかは確認しておきたい時があります。 特にロガーなどグローバルに呼び出されるものの場合、そういう確認大事だと思っています。 (この記事もロガーの検証が元々の目的で、そのために調べてまとめています。ロガーについても記事

26種類のアニメションパターンを設定できます。 shake pop morph squeeze wobble swing flipX flipY fall squeezeLeft squeezeRight squeezeDown squeezeUp slideLeft slideRight slideDown slideUp fadeIn fadeOut fadeInLeft fadeInRight fadeInDown fadeInUp zoomIn zoomOut flash デモ デモアプリでアニメションの動きを確認できます。 design+code Springの開発元ではDesignとCodeを連携した開発手法の情報を有料で販売しています。$50です。ほしい。 PageMenu ★425 左右にスワイプすることで画面の表示をアニメションしながら切り替えるライブラリです。 インスト

昨年AppleのWWDC2014で新しく発表された新言語「swift」。アマツバメ(雨燕)、速いの意味をもつそうです。Objective-Cよりも早く動く。おそらく数年のうちに、もしかするとObjective-Cがなくなるかもしれません。 ということで、今後のアプリ開発はSwiftで作っていきたいので、あらためて基礎から学習しなおそうと思っています。このブログで、勉強したことを日々アップしていく予定ですので、よろしければRSSのご購読お願いいたします。 今回はSwiftの概要と特徴、勉強用リンクをまとめました。Swiftで開発できるOSのバージョン・OS X version 10.9以降 ・iOS 7以降Swiftの特徴型の指定がかんたん変数を指定する際に、Objective-Cでは型の指定が必要でしたが、型の指定をしなくても動きます。代入する値を推論して、型が自動で決められます。もち

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く