タグ

ブックマーク / blog.takuros.net (12)

  • 自分を首に出来るように働く - プログラマでありたい

    年末ということで、自分がどのような働き方を目指しているのかを改めて考えてみました。結論的には、自分がいなくても仕事が回るような仕組みやチームを作り、いつでも抜けられる状態にするということです。つまり、いつ首になっても問題が無いポジションに落としこむということです。この働き方は、圧倒的に楽です。自分にしか出来ないことがないので負荷が集中しないし、代わりの人間がいるので心理的にもプレッシャーは少ないです。そもそもルーチンの仕事は、自動化などでシステムが出来るようになります。そうすると、面白い仕事が出てきた時に取り組み易くなります。 反対に自分にしか出来ない仕事を抱え込んでしまうとどうでしょう?自分自身がボトルネックになるので、休めないし心理的なプレッシャーもあります。そして、延々と同じ仕事を続ける必要があります。10数年働いてそれなりの数の人を見てきましたが、自分のポジションを保つために仕事

    自分を首に出来るように働く - プログラマでありたい
  • 不確実性コーンの話 - プログラマでありたい

    アジャイル界隈では割と知られているのですが、見積もりが何故ずれるかという説明の1つに不確実性コーンというものがあります。ざっくり説明するとプロジェクトの初期段階では不確定要素が多いので見積もりには4倍くらいの誤差があり、プロジェクトの進行とともに不確実な部分が少なくなってきて誤差は収束に向かうという話です。 引用:プロジェクトマネジャーのための「プロセス設計術」 - プロジェクト質とはなにか:ITpro この不確実性コーンですが、個人的には次のように解釈しています。 プロジェクト開始時には、全ての情報が揃うことはないので見積もりには誤差が生じる 全ての情報を集めてからプロジェクトを始めるのは現実的ではない。 ブレを小さくするには、出来るだけ対象となる範囲を小さくする。(タスクを細かい単位に分解する) 個々の仕事の処理能力が高いのに、何故か仕事が遅い人というのがたまにいます。そんな人を見

    不確実性コーンの話 - プログラマでありたい
  • Google PlayからAndroidアプリのランキングを取得する - プログラマでありたい

    前回、手軽にAppStoreからiOSアプリのランキングを取得する方法を紹介しました。Androidの場合は、どうしたら良いのでしょう?幾つか方法を考えてみます。対象は売上トップのAndroidアプリとして、URLは次の通りです。 https://play.google.com/store/apps/collection/topgrossing?hl=ja import.io + Google スプレッドシートのあわせ技 Google スプレッドシートのIMPORTXML関数で何とかする Google Apps Scriptで頑張る みんな大好きExcelを使う import.io + Google スプレッドシートのあわせ技 まず試すのが、import.ioとGoogle スプレッドシートのあわせ技です。これで実現できれば、一番ラクです。 import.ioでログインし、New Extr

    Google PlayからAndroidアプリのランキングを取得する - プログラマでありたい
  • AppStoreからiOSアプリのランキングを取得する - プログラマでありたい

    スマホアプリの人気の動向を知りたい場合は、AppleのAppStoreとGoogle Playを見ると思います。今回は、それを自動的に取得する方法を紹介します。 AppStoreのRSS Feed GeneratorからURL取得 AppStoreのランキングは、RSS Feedで配信されています。また、いつから存在するのか解らないのですが、このRSS Feedを生成するGeneratorサイトがあり、任意の国/カテゴリー/データ種別用のRSSを指定できるようになっています。 RSS Generator 例えば、日での有料のiOSアプリのトップ25を取得する場合は、次のようなURLとなります。 https://itunes.apple.com/jp/rss/topgrossingapplications/limit=25/genre=6015/xml 取得できるXMLは、次のような形です

    AppStoreからiOSアプリのランキングを取得する - プログラマでありたい
  • Swaggerとは何か? - プログラマでありたい

    最近、Swaggerという単語を聞く機会が増えていませんか?MicrosoftGoogle,IBMが、REST APIの記述標準化を目指した「Open API Initiative」という団体を立ち上げ、そのベースをSwaggerを利用するということで一躍注目を集めるようになりました。しかし、Swaggerというものを調べるとツールの話やドキュメントの話が出てきて、何なのこれとなることが必定です。ということで、WebAPIとは切っても切れない関係のSwaggerの話を簡単にしてみます。 Swaggerとは? Swaggerとは、一義的にはREST APIを記述する為の仕様です。当初から、Swaggerが標準の仕様になることを目指しますよと宣言していて、米国等ではデファクト・スタンダードとなっていました。それが、「Open API Initiative」が出来たことにより、実際に標準の仕様

    Swaggerとは何か? - プログラマでありたい
  • サーバレスアーキテクチャとは? - プログラマでありたい

    サーバレスアーキテクチャの整理です。少し前は、2-Tier Architecture(クラウドネイティブなアーキテクチャ)と3-Tier Architecture(従来のアーキテクチャ)という対比で論じられることが多かったです。しかし、API Gatewayの登場により、3-Tierな構造でもクラウドネイティブなアーキテクチャにしやすくなりました。ということで、サーバレスアーキテクチャ(ServerLess Architecture)と呼ばれることが多いです。 サーバレスアーキテクチャのパターン それでは、従来型のアーキテクチャ(旧3-Tier)と2-Tierパターン、API Gatewayを利用したサーバレスアーキテクチャをそれぞれ見てみましょう。 従来型のパターン( アプリケーションサーバ・パターン) まずは従来型のアーキテクチャです。間にELBを挟んでAutoScaleにすることは多

    サーバレスアーキテクチャとは? - プログラマでありたい
  • JenkinsとSelenium WebDriverでUI層のテストも自動化&永続化する - プログラマでありたい

    思い立ったようにJenkins特集をしておりますが、今回はJenkinsとSelenium WebDriverでUI層のテストの自動化をする話です。Seleniumは面倒臭い画面のテストを自動実行してくれるツールで、出てきてからもう7〜8年がたちます。Web系の開発に携わっている人であれば、一度は試したことがあるのではないでしょうか?そして、必ず挫折したことがあると思います。 その理由としては、せっかく作ったSeleniumのテストケースが腐ってくるからです。一般的にはUI層の変更は、ロジック層に比べて変化が激しいです。だからこそテスト自動化して保証することに意味があるのですが、そのテストケースを維持するのは大変です。そこで、Jenkinsの登場です。Jenkinsでサーバサイドで継続的に実行することにより、Seleniumのテストケースが成功を保てるようにします。また、複数のブラウザ・バ

    JenkinsとSelenium WebDriverでUI層のテストも自動化&永続化する - プログラマでありたい
  • Jenkinsでビルド・パイプラインを構築する - プログラマでありたい

    前回、Jenkinsのインストールについて書きました。今回は、Jenkinsでビルド・パイプラインを構築する話です。 ビルド・パイプラインとは? ビルド・パイプラインとは、ビルドのプロセスを分割して順番に実行していくことです。例えばビルドの流れとして、コミット→静的解析→コンパイル→ロジック層のユニットテスト→UI層のユニットテスト等があったとします。これを1つのジョブとして登録するのではなく、1つ1つのジョブとして実行し、成功した場合のみ次のステップに進めるようにします。これがビルドパイプラインです。 メリットとしては、どの工程で失敗しているのか解りやすいことが第一にあります。またJenkinsの特性を活かして、特定のジョブを並列で動かしたり出来るので効率化も出来ます。また、更に検証済みマージなど、高度な活用にもつながります。 Jenkinsでビルド・パイプラインの構築 元々Jenkin

    Jenkinsでビルド・パイプラインを構築する - プログラマでありたい
  • Amazon Linux AMIにGit + Gitolite + Gitlabをインストールして、プライベートGitHubを構築する - プログラマでありたい

    半年くらい下書きフォルダーにあったGitLabのインストール記事をサルベージしました。今回は、Amazon Linux AMIと最新のGitLab 4.1系でインストールしています。が、あまりに長く面倒くさいので、三行でまとめてみました。 GitLabGitHubのクローンで、セキュリティー・ポリシー的にGitHubがNGな会社に最適 GitLabの中身は、Git + GitoliteをラッパーしたWebインターフェース インストールが死ぬほど面倒くさいので、後でAWSのPublic AMIとして公開するよしたよ →GitLabのPublic AMIを公開しました。 以下、手順です。気が長い人は読んでください。 ライブラリのインストール 素のAmazon Linux AMIを立ち上げたら、まずライブラリをインストールしましょう。一部sudoでやっていくと詰まるところがあったので、素直にr

    Amazon Linux AMIにGit + Gitolite + Gitlabをインストールして、プライベートGitHubを構築する - プログラマでありたい
  • UIWebViewでWebサイトとネイティブアプリを連携する方法について - プログラマでありたい

    iOSによるiPhone/iPadのネイティブアプリで、サーバサイドのプログラミングと連携するケースは割とあるかと思います。その場合に、iPhone/iPadで表示する一部の機能についてはサーバサイドでサクッと作ってしまって、UIWebViewで呼ぶという方法は有力な手段の一つです。ここで問題となるのが、サーバ側とiOS側の連携だと思います。幾つか方法はあるのですが、簡単に実現出来るものを紹介したいと思います。 連携の方法としては、iPhone/iPadからWebページの制御とWebページからiPhone/iPadの2通りがあると思います。今回は、WebページからiPhone/iPadのケースを紹介します。 大まかな流れとしては、次の3つの順番になります。 UIWebViewのDelegateを使って、画面処理のイベントを取得する UIWebViewのメソッドのstringByEvalua

    UIWebViewでWebサイトとネイティブアプリを連携する方法について - プログラマでありたい
  • Objective-Cで、プライベートメソッド・プロパティにアクセスし、ユニットテストを実行する方法 - プログラマでありたい

    iPhone/iOSの開発をしていく上で、Objective-CでPrivate Methodにアクセスしたいなぁと思うことがあると思います。パブリックメソッドには、外部からのインターフェースのみを実装し、ロジック部分はプライベートメソッドに隠蔽するといったケースは多々あると思います。その場合、ユニットテストはプライベートメソッドに対して行う必要があります。 そもそもObjective-Cでのプライベートメソッドは、どう実装するのでしょうか?実はObjective-Cでは、厳密な意味でのプライベートメソッドは存在しないのです。一般的にはカテゴリーという機能を使って、実装ファイル(.mファイル)に宣言して代用します。次のサンプルのような感じです。 #import "ExampleClass.h" @interface ExampleClass(private) - (void) privat

  • UITextFieldの入力制限を実装する - プログラマでありたい

    UITextFieldに入力された文字列チェックをスマートに行う方法がないか探していました。 どうやらロード時にテキストフィールドをデリゲートすれば、shouldChangeCharactersInRangeでイベントを取れるようです。このメソッドは、booleanで返すのでチェックして不可であればFALSEを返せばよいのです。実装の抜粋は、以下のとおりです。この例では、文字列長を5桁以内に制限しています。 - (void)viewDidLoad { [textField setDelegate:self]; [super viewDidLoad]; } - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)s

    UITextFieldの入力制限を実装する - プログラマでありたい
  • 1