タグ

ブックマーク / dev.classmethod.jp (48)

  • 最近の業務での AWS サーバーレス開発を振り返ってみた | DevelopersIO

    AWS Lambda を使用した Web アプリケーションの開発プロジェクトで、バックエンド・フロントエンド・インフラを一貫して開発をしてきました。 改めてどのように開発をしていたのか、使った技術スタックや各サービスをどのように活用したかを整理したいと思い記事にしました。今後サーバーレス開発を行う際の技術選定の参考にしていただければ幸いです。 前提 Web アプリケーションです。 管理画面用の内部 Web API、外部のサービスと連携するための外部 Web API があります。 処理としてはリソースの CRUD がメインです。 管理画面は SPA で、バックエンドの Web API にリクエストします。 開発メンバーは 4 人ほどで、フロントエンドエンジニア、バックエンドエンジニアといった区分けはしていませんでした。 機能ごとにメンバー全員がバックエンドからフロントエンドまでを一気通貫で実

    最近の業務での AWS サーバーレス開発を振り返ってみた | DevelopersIO
  • Airflow のアーキテクチャをざっくり理解して、どうやって使うのか学んでみた | DevelopersIO

    こんにちは、みかみです。 Python で実装されている Job 管理ツール Apache Airflow。 WebUI のJob 管理画面で直感的に分かりやすい操作が可能で、エラー発生時などの通知機能もあり、スケールアウトにも対応していて複数サーバで分散実行もできます。 Python でバッチ Job 開発経験のある方には多分おなじみの Airflow、私も存在は知っていましたが、実際使ったことはありませんでした。 やりたいこと Airflow の構成(アーキテクチャ)を知りたい Airflow の使い方(Job 作成&実行方法)を知りたい Airflow のアーキテクチャ Airflowは、 管理画面表示部の Webserver と、Job実行のスケジュール管理部の Scheduler 、Job実行部の Worker(Executer) から成り立っているようです。 各モジュールは管理

    Airflow のアーキテクチャをざっくり理解して、どうやって使うのか学んでみた | DevelopersIO
  • React + Material-UIで管理画面を作成してみた | DevelopersIO

    Reactアプリを作成 Material-UIで管理画面を作るためのベースとなるReactアプリを作成します。 Create React App Create React Appで新しいReactアプリを作成します。 npx create-react-app react-material-ui-sample --typescript プロジェクトのディレクトリへ移動して実行します。 cd react-material-ui-sample npm start ブラウザにReactアプリが表示されます。 ディレクトリ構成 ディレクトリはあまりネストさせすぎずシンプルな構造にしました。コンポーネントの分け方はAtomic Designを参考にしています。 src/ ├ components/ │ └ atoms/ # 原子(個々のパーツ) │ └ molecules/ # 分子(原子の集合体)

    React + Material-UIで管理画面を作成してみた | DevelopersIO
  • [iOS]Firebase Crashlyticsを使って致命的でないとして回避したイベントを記録する | DevelopersIO

    アプリケーションのエラー設計で、アプリ側のクラッシュは極力避ける方針でコードを実装する場合があります。それでも開発中はクラッシュさせたい場合にassertなどを使うことがあると思います。番環境でユーザーがアプリを触る時にエラーを踏んで操作は継続するもののエラーを踏んで回避したいことを知りたい場合にCrashlyticsのnon-fatalが便利です。 Swiftのエラー分類 SwiftにはErrorHandlingRationale.rstというエラーハンドリングに関するドキュメントがあります。そこでは、Simple domain errors、Recoverbable errors、Universal errors、Logic failuresという四つのエラー分類があります。 このタイプのエラーはこれらのどれに分類される、といったような分類の仕方ではなく、どのようにエラーを扱いたいか

    [iOS]Firebase Crashlyticsを使って致命的でないとして回避したイベントを記録する | DevelopersIO
  • 【Swift】Codableで動的なキーを持つJSONに対応する | DevelopersIO

    Swiftで動的なキーを持つJSONに対応できるCodableなモデルの実装方法について調べてみました。 概要 大阪オフィスの山田です。この前APIClientを実装する記事を書きましたが、その中で、キーが動的に変わるJSONと遭遇しました。その際、Codableを使うにはどう実装したら良いか調べたので、記事にします。 開発環境 macOS: 10.15.4 Xcode: 11.5 キーが動的に変わるJSONの例 以前の記事にも登場した、Gistに投稿するGitHub APIを例にあげます。 以下のbodyでPOSTします。 { "public": true, "files": { "gist.txt": { "content": "Toukou!" } } } この中でgist.txtはGistに投稿するファイル名であり、登録したいファイル名によってキーの値が変わります。APIのドキュメ

    【Swift】Codableで動的なキーを持つJSONに対応する | DevelopersIO
    KatagiriSo
    KatagiriSo 2020/11/19
    Codable関連
  • [Swift] はじめてのCombine | Apple製の非同期フレームワークを使ってみよう | DevelopersIO

    こんにちは。きんくまです。 今回はiOS13から使えるようになったCombineをやってみました! Combineって何? イベントの発行と購読をすることができるフレームワークです。 非同期処理の中で使えばスッキリと書くことができるので、コールバック地獄とか死のピラミッドとかがおきなくなります。 Appleが元ネタにしたと明言しているのかどうかはわかりませんが、似たOSSライブラリにRxSwiftがあります。 ReactiveX/RxSwift: Reactive Programming in Swift - GitHub また最初に書いたのですが、iOS 13以降に使えるフレームワークなのでiOS 12以下は使えないことにご注意ください。 iOS 13から使えるようになったSwift UIとセットで使うと良さそうですね。 さて、Combineには大事な要素が3つあります。 Publish

    [Swift] はじめてのCombine | Apple製の非同期フレームワークを使ってみよう | DevelopersIO
  • SwiftUI チュートリアルを一通りやってみた- 前編 – | DevelopersIO

    SwiftUIのチュートリアルを一通りやってみました。 それぞれのチュートリアルで登場した概念ややってみた感想について書きます。 こんにちは。クラスメソッド 福岡オフィス CX事業部でiOSアプリの開発に携わっている田辺です。 先日の三連休の間にSwiftUIのチュートリアルを一通りやってみました。リリース後に一読してはいたものの手を動かしていなかったので連休の間にやってみました。 チュートリアルは複数ありますのでそれぞれについて書いていきたいと思います。 長くなったので二部構成です。 後編はこちらです。 SwiftUI チュートリアルを一通りやってみた- 後編 – | DevelopersIO どのようなチュートリアルがあるかについては当ブログで記事が公開されているのでご参照ください。 Appleの新しいUI構築フレームワーク「SwiftUI」を学ぶための教材まとめ #WWDC19 |

    SwiftUI チュートリアルを一通りやってみた- 前編 – | DevelopersIO
  • [iOS] AVFundationを使用して、「ビデオ録画」や「連写カメラ」や「QRコードリーダー」や「バーコードリーダー」を作ってみた  | Developers.IO

    [iOS] AVFundationを使用して、「ビデオ録画」や「連写カメラ」や「QRコードリーダー」や「バーコードリーダー」を作ってみた 1 AVFundation AVFoundationは、音声・動画などのメディアの再生や作成、編集を行うことの出来る巨大なフレームワークです。 入力側をデバイスと考えた場合、AVFoundationは、大まかに、次の3つの構成になっているといえます。 デバイス(AVCaptureDevice) セッション(AVCaptureSession) 出力(AVCaptureOutput) AVFoundationを使用するには、まずは、中心となるAVCaptureSessionをインスタンス化します。 そして、このAVCaptureSessionに対して、使用したいデバイスを入力として接続し、利用目的に合致したAVCaptureOutputを出力に接続することで

    [iOS] AVFundationを使用して、「ビデオ録画」や「連写カメラ」や「QRコードリーダー」や「バーコードリーダー」を作ってみた  | Developers.IO
  • AWSを使うときに確認すべき52のセキュリティチェック項目と15分でできる簡単なチェックの方法|DevelopersIO

    はじめに 自分が使っているAWS環境のセキュリティに問題がないかと心配になることはないでしょうか?私はよくあります。そこでCIS Amazon Web Service Foundations Benchmark というAWSセキュリティのガイドラインに沿って使っているAWSアカウントのセキュリティの状況をチェックしてみました。チェック項目は全部で52あります。内容を一通り確認したところ知らなかったAWSセキュリティの機能やノウハウを知ることができ、見ただけでもとても勉強になりました。簡単にチェックする方法も併せて紹介しますのでぜひ使っているAWS環境でチェックしてみてください。 1 IAM 1.1 rootアカウントを利用しない rootアカウントは強力な権限を持つため、rootアカウントを利用せずIAMユーザーを利用してください。通常運用でrootアカウントが利用されていないか確認し

    AWSを使うときに確認すべき52のセキュリティチェック項目と15分でできる簡単なチェックの方法|DevelopersIO
  • SQLiteからCSVファイルにSQLを投げてみた | DevelopersIO

    SQLite3.14(円周率πと同じですね!)が2016/08/08にリリースされました。 リリースノートによると、CSV仮想テーブルに対応したとありましたので、早速使ってみました。 Added the CSV virtual table for reading RFC 4180 formatted comma-separated value files. この機能を使うと、CSV形式のログファイルにSQLで問い合わせるといったことが簡単にできます。 仮想テーブルについて 仮想テーブル(Virtual Table)はSQLiteのデータベースで管理されていないデータを仮想的に管理されているように見せるテーブルです。 仮想テーブルで管理されているデータは、通常のテーブルのデータと同じように SQL インターフェースで操作できます。 SQLite では 全文検索インターフェース R-Trees

    SQLiteからCSVファイルにSQLを投げてみた | DevelopersIO
  • CORS(Cross-Origin Resource Sharing)について整理してみた | DevelopersIO

    ブラウザからAmazon S3に直接ファイルをアップロードしたい 先日、Amazon S3にファイルをアップロードするWebアプリを作ろうとして色々調べていたところ、S3にCORSという仕様のクロスドメインアクセスの設定をすることによって、ブラウザから直接S3にアップロードをする方法にたどり着きました。ただ、この方法を使うにあたってはCORSというクロスドメインアクセスの仕様をきちんと理解しておいた方が良さそうでしたので、まずはCORSについて自分なりに整理してみました。 なお、弊社の横田がCORSとS3についての記事を以前書いていますので、S3のCORSサポートに関する概要を知りたい方はそちらをご覧下さい。 CORS(Cross-Origin Resource Sharing)によるクロスドメイン通信の傾向と対策 CORS ブラウザでAjax通信を行う際には、同一生成元ポリシー(Same

  • CocoaHTTPServer を利用して iOS アプリにブラウザからアクセスする | DevelopersIO

    iOS アプリに CocoaHTTPServer の機能を組み込むOSS「CocoaHTTPServer」 ひょんなことから CococaHTTPServer を使うこと機会があったのでメモ。 CococaHTTPServer を利用すると、iOS アプリを HTTP サーバーとして利用することができます。 HTTP サーバーのようにドキュメントルートとなるディレクトリを用意して HTML ファイルなどを置けば、同一ネットワーク上であれば普通にブラウザからアクセスできます。 また、CococaHTTPServerのREADMEを見ると、 bonjourブロードキャストのサポート IPv4/IPv6のサポート GCDと標準のソケットを使用した非同期ネットワーク処理 パスワード保護をサポート SSL/TLS暗号化のサポート WebSocketのサポート WebDAVのサポート と書かれており、

    CocoaHTTPServer を利用して iOS アプリにブラウザからアクセスする | DevelopersIO
  • [Xcode][小ネタ] DerivedDataの削除についての備忘録 | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 日は自分のための備忘録ネタです。 iOSアプリの開発をしていると、たまにXcodeがおかしくなり、どうにもこうにもよく分からないエラーを吐き出し始めた時、 試しに DerivedData を削除してみるということをよくします。 DerivedData は、プロジェクトごとに生成されるキャッシュデータといいますか、インデックスやログや生成物の等の溜め場といいますか、中間データの類です。 ときにこれが悪さをして不穏な動きをさせてしまっていることもあるようです。 実際、開発時はこれを削除してXcodeを再起動すると、Xcodeの不安定動作やエラーが消えるということもよくあります。 その1. Clean Build Folder Xcodeにはビルドフォルダのクリーン機能があります。 しかし、いつも自分は方法を忘れてググってしまいます。 当に簡単

    [Xcode][小ネタ] DerivedDataの削除についての備忘録 | DevelopersIO
  • 遷移元のビューが透過で見えるモーダルビュー(UIPresentationControllerを使わないで、既存の画面遷移をいじる感じで実装してみました) | DevelopersIO

    遷移元のビューが透過で見えるモーダルビュー(UIPresentationControllerを使わないで、既存の画面遷移をいじる感じで実装してみました) 1 はじめに iOS 8以降で利用可能な、UIPresentationControllerを使用すると、ViewControllerのモーダルのような画面を自由に表示することが可能です。 [iOS 8] UIPresentationController でカスタムのモーダル表示を実装する 今回は、あえて、UIPresentationControllerを使用せず、通常の画面遷移の実装を修正していくことで、このようなバックを透過させたモーダルビューを幾つか試してみたいと思います。 題材としては、次のようなUICollectionViewから選択した画像を、モーダルビューで拡大表示するというような、簡単なサンプルを用意しました。 2 半透明

    遷移元のビューが透過で見えるモーダルビュー(UIPresentationControllerを使わないで、既存の画面遷移をいじる感じで実装してみました) | DevelopersIO
  • [iOS 8] UIPresentationController でカスタムのモーダル表示を実装する | DevelopersIO

    UIPresentationController とは UIPresentationController は iOS 8 から追加された、View Controller の上のレイヤーにモーダルのような形で画面を表示する機能を提供する View Controller です。 iPad ではよく目にする機会が多いですが、下図のように View Controller の上に重なる感じで表示される画面のことです。 このような機能は、これまでは UIPopoverController のように、カスタマイズ不可能な形で提供されていました。iOS 8 では UIPresentationController が追加され、自由な表示・アニメーションのモーダルが表示できるようになりました。 なお、UIPresentationController は抽象クラスで、標準では上記 UIPopoverContro

    [iOS 8] UIPresentationController でカスタムのモーダル表示を実装する | DevelopersIO
  • [iOS] UIWindowを追加する | DevelopersIO

    1 はじめに 前回、アラートやキーボードが表示された際の複数のUIWindowについて確認してみましたが、今回は、自分でこのUIWindowを追加して挙動を確認してみました。 参考:[iOS] 複数のUIWindowの挙動を確認する 今回も、iOS9.3で動作確認しておりますが、他のバージョンで挙動が異なる可能性があることは、予めご了承ください。 2 試験準備 前回のテストプログラムに3つほどボタンを追加し、ここにコードを追加することで試験を進めます。 アプリのUIWindowを列挙するログ出力などは、前回と同じです。 次に、自前で生成するUIWindowを見た目で区別しやすいように、UIWindowを継承したMyWindowを定義しました。そして、ViewControllerの中で、プロパティとしてこのMyWindowを定義し、ここに生成することにします。 @interface MyWi

    [iOS] UIWindowを追加する | DevelopersIO
  • [Swift] 爆速計算ライブラリ Surge を使う | DevelopersIO

    Accelerate.Framework + Swift Accelerate フレームワークは線形代数の計算を始めとし、音声、信号処理に応用の効くフーリエ変換や画像処理などでハイパフォーマンスな計算処理を提供します。 このフレームワーク内では OS X / iPhone で用いられている Intel, ARM などの CPUSIMD 命令を用いて計算が最適化されています。 Accelerate フレームワーク自体は iOS のフレームワークのなかでも比較的低レイヤな位置づけであるため、フレームワークを直接叩くような実装を開発者が行うことはまれです。 とはいえ、重量級の計算をアプリケーションのロジック部で行う際に、SIMD による最適化の恩恵が得られるにも関わらず、それを行わないのは宝の持ち腐れと言えます。 Surge はこの低レイヤな位置づけにある Accelerate フレームワ

    [Swift] 爆速計算ライブラリ Surge を使う | DevelopersIO
  • Play Frameworkアプリの負荷試験を行う前に確認すべきことまとめ | DevelopersIO

    はじめに Play Frameworkを利用してアプリケーションを開発する動機の一つとして「高い負荷に耐えることができる(C10K)」が挙げられます。 しかしながら、たとえPlayを使っていても、チューニングが十分でなければ高いスループットが出るとは限りません。 今回は、300RPS(RPS=リクエスト毎秒)を超えるような負荷をPlayアプリケーションにかける前に確認すべきポイントをいくつかご紹介します。 稿ではPlay Frameworkのバージョン2.4を前提としています。 Playアプリの負荷試験前に確認すべきこと 目次 ExecutionContextが適切に分割されているか 並列実行可能なスレッド数の設定は適切か ログ出力方法は十分考慮されているか (おまけ)Amazon Linuxの設定で配慮すべきもの ExecutionContextが適切に分割されているか Executi

    Play Frameworkアプリの負荷試験を行う前に確認すべきことまとめ | DevelopersIO
  • Xamarin.Forms レイアウト(Formsを使用したアプリ作成の次の1歩) | DevelopersIO

    1 レイアウト アプリの画面を作成する場合、画面上に各種のコントロールを配置していく事になると思いますが、この「配置」をサポートするのが「レイアウト」です。 レイアウトは、ページやビュー上に複数のコントロールを配置するためのコンテナです。 Xamarin.Formsには、7種類のレイアウトクラスがあります。 そして、このうち、複数の子要素を格納できるプロパティーであるChildrenを持つのは、次の4種類です。 StackLayout AbsoluteLayout Grid RelativeLayout 残りの3つは、単一の子要素しか格納できないプロパティーであるContentを持つため、1つの子要素を装飾するだけという位置づけになります。 Frame ContentView ScrollView Xamarin Developers Guide 「Xamarin.Forms Layout

    Xamarin.Forms レイアウト(Formsを使用したアプリ作成の次の1歩) | DevelopersIO
  • Xamarinの仕組み ( 超簡単バージョン ) | DevelopersIO

    1 はじめに 下記のページでは、Xamarinが異常に早いことをレポートしています。 Mobile App Performance Redux テストの内容によって色々あるとは思いますが、Xamarin.iOSが、Objective-Cより早く、Xamarin.AndroidJava Androidとほぼ互角と言うのは、正直すごいグラフだと思いました。 少なくとも、XamarinがObjective-CやJavaのコードを吐いているわけでは無いことだけは直ぐに分かります。 今回は、Xamarinが、どういう仕組みでiOSやAndroid上で動作しているかを可能な限り簡単に紹介したいと思います。 っと、偉そーに言ってますが、実は、これちゃんとした公式の資料を基づくものでなく、私が勝手に解釈している内容ですので、専門家からのツッコミを得て完成するエントリーと意味で投稿させて下さい。 [201

    Xamarinの仕組み ( 超簡単バージョン ) | DevelopersIO