Codable Tech Blog

iPhoneアプリケーション開発と AWS(Amazon Web Service)活用に関する記事を配信

UIコンポーネントを拡張してStoryBoardで出来るようにする

ユースケース たとえばUIButtonを使って枠線を表示したいとき、ストーリーボード上の既存の設定値だけでは枠線を表示することができません。このような場合、ソースコードからプロパティをいじって枠線を追加するのが一般的なやり方です。しかし、UIに関して…

AVFoundationを利用してカメラが取り込んだデータを表示する

ユースケース iOSでは写真を撮影するためのフレームワークとしてiOSでは「UIImagePickerController」が用意されています。単純にカメラの機能を利用したいだけであればUIImagePickerControllerを利用するだけで充分です。しかし、UIImagePickerControllerで…

S3とGlacierの連携

ユースケース 重要度が低くほとんど参照されることのないファイル(ex.1年前のログファイルとか)をS3に保存していてはコストがもったいないのでGlacierに移動することでコスト削減を図る。また、手動での移動は管理工数を増やすのでS3のライフサイクルを利…

コンソールアプリケーション(C#)からSES(Simple Email Service)を利用してメールを送信

SESを利用してコンソールアプリケーションでメール送信を行う方法を記載します。実際に試すにはSESをセットアップする必要があります。まだSESのセットアップができていないかたは以下を参考にSESのセットアップを行ってください。(テストメール送信まで出…

AWSコンソールからSES(Simple Email Service)を利用したメール送信

ユースケース 自分でメールサーバーを構築せずにメール送信サービスを利用したい時にSES(Simple Email Service)を利用する。なお、SESはセキュリティに都合上、運用前に審査があるため環境は早めに構築するのが望ましい。以下にSESを利用する手順を記載する…

S3で履歴管理(バージョニング)

ユースケース 複数人でS3を共有して運用するとき、誰かが誤ってデータを削除したり、上書きしてしまう可能性がある。この問題を解消するためにS3のバージョニング機能を利用する。 利用方法 S3にアクセス > バケット選択 プロパティ > バージョニング > バー…

CloudTrailによるアクセス監査

ユースケース AWS上のリソースに対して誰がどんな操作を行ったかを情報として残しておきたい場合にCloudTrailを利用する 利用方法 CloudTrailを選択 証跡の作成を選択 任意の証跡名を入力 ストレージの場所で「はい」を選択し、CloudTrailのログを格納するS3…

CloudWatchを利用したEC2インスタンスの監視

ユースケース CloudWatchを利用することでAWSリソースの利用上を監視することが可能。今回はEC2のCPU利用率をCloudWatchを通じて監視する。 事前準備 CloudWatchで監視したいEC2インスタンスを事前に立ち上げておくこと 利用手順 CloudWatchを選択 メトリク…

CloudWatchLogsによるログの一括管理

ユースケース AWS上で運営するEC2インスタンスのログを一括管理したい時はCloudWatchLogsを利用する。CloudWatchLogsを利用することで個々のインスタンスのログ管理を集約することができるのでログ管理の簡素化できる。 利用手順 EC2インスタンスがCloudWatc…

Amazon Linuxでのタイムゾーンの変更

Amazon Linuxのデフォルトタイムゾーン Amazon LinuxのデフォルトタイムゾーンはUTC(世界標準時)となっているため、日本時間と-9時間の誤差がある。 date // xxxx UTC xxxxと表示される タイムゾーンを日本に変更 日本でサーバーを運営するにあたってUTCで…

Amazon S3 署名付きURLの作成

署名付きURLとは 一時的にユーザーに対してオブジェクトへのアクセスを許可したい時に利用するURL。例えばある商品の購入特典として特定ユーザーに3日間オブジェクトを公開したい場合などに利用する。署名URLを利用しておけば仮にURLが漏洩したとして被害を…

switch文

switch文 if文を利用した場合分けの処理の中で、変数がどの値とマッチしているかを判断して処理を切り分けることがよく行われます。次のif文はnumの値がある値とマッチしていれば、printlnで文字列を出力し、いずれもマッチしなければ、マッチしなかった旨を…

パッケージインストール時にパッケージの衝突が発生した時の原因追及について

Red Hat系Linuxではパッケージ管理システムとしてyumを利用する。 yumを用いたパッケージ管理において衝突が発生した時どのように問題を解消していくかを記述する。 準備 まずはパッケージのインストール。今回はgroupinstallコマンドを用いてPHP関連のパッ…

Cocoa Pods導入からライブラリインストールまで

Cocoa Podsとは Objective-CおよびSwiftのパッケージ管理マネージャー。ライブラリを利用する際の煩雑な依存関係を解消してくれる。ライブラリを利用する時にはCocoa Podsを利用して楽しましょう。 RubyGemsを利用したCocoaPodsの導入手順 CocoaPodsはRubyで…

Visual Studio 2017とGitHub連携

手順 1.GitHub Extensionのインストール 以下のURLからファイルをDLして実行。Visual Studio再起動後、拡張が有効になる visualstudio.github.com 2.GitHubと接続 Visual Studioのチームエクスプローラーを開く Git HubのConnectリンクをクリック ログイン画…

Razor レイアウト

レイアウト Razorではレイアウト機能が提供されています。レイアウト機能とはあらかじめページ全体のテンプレートを作成しておいて、そのテンプレートをWebサイト全体で共有して利用する機能です。レイアウト機能を利用することによって、サイトで利用してい…

Razor 基本構文

ビューエンジン Razor(レイザー)はASP.NET MVCで利用されているビューエンジンです。 ビューエンジンはHTMLを生成する機能のことを指しています。ビューエンジンを利用してHTMLを生成する場合、どのビューエンジンを利用するかでHTMLを生成するために利用す…

ジェネリックス(generics)

ジェネリックスとは型に束縛されず、型自体をパラメータ化して扱うことです。ジェネリックスを使用しない場合の問題を確認することでジェネリックスを使用する有用性を確認してみましょう。 既存コードの問題点 Swiftのように型付けを行う言語では、同じ問題…

型の拡張(extensions)

拡張は既に存在するクラスや構造体、列挙体に対して新しく機能を追加する仕組みです。また、拡張は継承とは異なり、オリジナルのソースコードをなしで、機能を拡張することが出来ます。拡張を利用することで次のような機能を新規に追加できます。 コンピュー…

プロトコル

プロトコルはメソッドとプロパティの雛形で、実装はもちません。プロトコルは、単純にプロトコルとして定義されているメソッドやプロパティを実装することを要求するだけのものです。プロトコルとして定義されているメソッドやプロパティを実装することを「…

クロージャ

クロージャは関数と同様にあるタスクを実行するための実行コードです。クロージャーには以下の3つのパターンがあります。 関数 ネストした関数 クロージャー式 関数およびネストした関数については下記の記事を参照してください。 Swift 関数(Function) - C…

列挙体(Enumlations)

列挙体は関連する値をグループ化して定義したものです。以降では、列挙体の定義、利用法、列挙体のもつ機能についてみていきます。 列挙体の定義 列挙体はenumキーワードの後にenum名を続け、{}の中に定義を記述します。 enum 列挙体名 { //列挙体の定義 c…

継承

オブジェクト指向プログラミングでは継承と呼ばれる機能が存在します。継承とはあるクラスのプロパティとメソッドを引き継ぐ機能のことです。例えば、次のようなPersonクラスがあったとします。 このクラスを継承した場合、Personクラスのイニシャライザを除…

プロパティ(ストアドプロパティとコンピューテッドプロパティ)

Swiftではプロパティとしてストアドプロパティ(Stored Property)とコンピューテッド・プロパティ(Computed Property)が用意されています。以降ではこれらのプロパティに関する説明を行います。 ストアドプロパティ(Stored Property) ストアドプロパティ(St…

クラス

Swiftにおいて、構造体とクラスはプロパティとメソッドをもつオブジェクトです。いくつかの違いがありますが、まず、知っておいてほしいのは構造体は値型、クラスは参照型であるという点です。値型と参照型の違いは変数や定数への値の格納方法です。値型の場…

構造体(Struct)

データと処理は別々に扱うのではなく、データとそのデータと関連する処理を一緒に扱うために用意されているのが構造体です。データと処理を一緒に扱うことのメリットは管理のし易さにあります。データと関連する処理がまとまっていることによって、プログラ…

関数(Function)

関数は特定のタスクを実行するためのコードの塊です。特定のタスクを実行するためのコードの塊である関数には名前を付けることができます。タスクを実行したい時にはその名前を指定すれば関数を呼び出すことができます。以降では、関数の定義、呼び出し方、…

繰り返し文(for-in文、while文)

プログラムを書いていると同じ処理を何度も実行することがよくあります。この時、コピペで同じコードを書くのではなく、繰り返し処理を用いてコードを記述することで簡潔に繰り返し処理を実現することができます。繰り返し処理には繰り返し回数が決まってい…

コレクション型 ArrayとDictionary

プログラムでは複数個の同じ型のデータを扱いたいことがよくあります。例えば、学校のテストの得点を管理するプログラムを作成したい場合、人数分のテストの点数を管理する必要があります。生徒数が100人いた場合、テストのデータを変数で管理しようとす…

オプショナル(Optional)

値とnil 通常、オブジェクトは何らかの値を持ちますが、値をもたないケースも存在します。例えば、名前を管理するプログラムを作成する時、ファーストネーム、ミドルネーム、ラストネームの3つで名前を管理したとします。日本人の多くはミドルネームを持ち…