サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
qiita.com/poly_soft
はじめに こんにちは。雑食系エンジニアの勝又です。 今回は、私が2年ほど参画させていただいた大規模サービスのインフラやDevOps周りを全面的にリプレイスしたお話について簡単にご紹介させていただきます。(内容に関しては事前に参画先企業様に確認していただいております) サービス概要 詳細な内容は伏せますが、メインとなるテーブルのレコード数が数十億件、スパイク時には数万〜数十万のユーザーが一斉にアクセスする大規模サービスです。 技術的負債 長く運用されてきたサービスのあるあるですが、新機能の追加が最優先されてきたことにより、こちらのサービスにも下記のような技術的負債が大量に積み上がっていました。 RubyやRailsやMySQLのバージョンがかなり古い インフラの構成がコードではなくドキュメントで管理されている アプリケーションの構成管理がおこなわれていない CI/CDパイプラインが構築されて
「どの言語を学ぶべきか」という議論はエンジニア向け記事の定番ネタですが、HackerNoonに投稿された5 Programming Languages Every Master Developer Should Learnという記事がなかなか興味深かったので翻訳してみました。 (2018/11/04追記) こちらの記事に関する「別視点からの意見」として下記のような記事を追加いたしました。宜しければこちらも併せてご参照ください。 Ruby->Go->Scalaという習得順序がエンジニアの爆速の成長に最適である理由 はじめに 「プログラマーは新しい言語を毎年1つは習得するべきだ」という趣旨の文章をどこかで読みました。(多分CODE COMPLETEだったと思いますが) もしそれが難しくても、キャリアの中で最低限この後に紹介する5つの言語に通じておくことをお薦めします。 あらゆる会社は、多言語を
qiita.com
若い頃は誰でも「強いエンジニア」を目指すものだと思いますし、エンジニアとして強固な軸足を確立する上では、「技術競争」つまり「ストリートファイト」に邁進する期間は必要だと思います。 しかし「手を動かすエンジニア」には「ファイターとしての賞味期限」が必ず存在しますので、いつまでも「アンダーグラウンドの喧嘩自慢」として君臨することはできませんし、戦い続けることによる見返りは決して大きいものではありません。 エンジニアが、自分の投下する膨大な労力に対するリターンを最大化していきたいならば、どこかで上手に軌道修正していく必要があるわけですが、今回はそういった辺りに関する私の見解を簡単に述べてみたいと思います。 おまえ誰よ? 雑食系エンジニアです。本業では主にインフラとバックエンドおよびDevOps系の業務を担当しており、登録者数5万人超えのエンジニア系YouTuberでもあり、会員数2千名様超えの雑
ちなみに、IT業界全体のシェアとしてはMicrosoftのAzureの方がGCPを上回っていますが、Web業界においてIaaSにAzureを採用している企業さんは2019年時点ではまだまだ少ないので、現状ではとりあえずAzureへのキャッチアップは後回しにしておいて問題ないと思われます。 クラウドアーキテクチャ設計 前述したAWSやGCPの各種マネージドサービスを適切に組み合わせてアーキテクチャ設計を行い、それを構成図に落とし込める能力は必須となります。 いわゆる「アーキテクト」という職種の担当領域でもありますが、「サービスを安定稼働させたまま、バリューをユーザに迅速に届ける」ためには、自動化のしづらい構成が採用されてしまったり、無駄な機能が開発されてしまったり、アンマネージドなツールやサービスが使用されて管理工数が肥大化したりしないように、アーキテクチャ設計の段階からDevOpsエンジニ
「初学者向けの勉強会でマルチ商法の勧誘をされた」という体験談を耳にするケースがここ最近非常に増えましたが、どうやら「勉強会の参加者の方から」勧誘されるケースだけでなく、「勉強会そのものがマルチ商法の勧誘を目的として開催されているのでは?」という疑念を持たざるを得ないケースもあるようです。 先日、私のTwitterフォロワーの方から「ENGINEER STYLE TOKYOという勉強会の主催者と運営サイドの人たちはアムウェイの勧誘をしています」というご連絡がありまして、私の方で主催者の方および主催者の方の運営されている団体様に関して調べてみたところ、何らかの形でアムウェイと関わっていると疑わざる得ない情報をいくつか発見いたしました。 私が主催している「雑食系エンジニアサロン」内でも質問してみたところ、「勉強会主催者の方にカフェに誘われたので行きました。徐々にプログラミングとは無関係の話題にな
エンジニアの情報発信というと「ブログ」あるいは「Qiita」が定番ですが、1年3ヶ月ほどの試行錯誤の末、先日ついにYoutubeチャンネル「雑食系エンジニアTV」のご登録者が1万名様を突破しましたので、これからYoutubeや動画メディアを活用した情報発信を考えているエンジニアの皆様のご参考になればということで、これまでの軌跡と振り返りを書き留めておきたいと思います。 Youtubeに投稿を始めた経緯 私はファッション好きということもあって、当初はYoutuberではなく「ファッション系おっさんInstagramer」を目指しておりまして、Instagramerの方たちが良く使っているというカメラを購入して、壁紙セット等も買って最初はファッション系の静止画を撮影しておりました。 ちなみにその時の写真がこちらです。 そのカメラにたまたま動画機能も付いていたので、「せっかくだから動画も撮ってみ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 「実務未経験からWeb系エンジニアにジョブチェンジする方法」に関しては、最近かなり広く知見が共有されるようになってきましたが、「Web系エンジニアにジョブチェンジした後の転職戦略」に関してはまだまだ有用な情報が少ないという印象です。 学生時代からプログラミング経験があり、レベルの高い有名Web系企業さんに新卒で就職できた方たちは別として、キャリアの途中でWeb系エンジニアにジョブチェンジされた方たちが「エンジニアとして爆速で成長していく」「早い段階でガッツリ稼げるようになる」ためには、「適切なタイミングで適切な環境に移動する」ことが必須
雑食系エンジニアです。バックエンドの多種多様な言語/DB/フレームワーク、AWSとGCPの様々なマネージドサービスに精通しています。クラウドアーキテクチャ設計、クラウドインフラ構築管理、基盤コード開発、サービスのモダン化、DevOps/MLOpsが現在の専門です。 オンラインサロン→https://bit.ly/2u4D5ZN youtube→https://t.co/izTybmGHUN Follow
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 先日、全ての開発者が学ぶべき5つの言語という翻訳記事を投稿させて頂いたのですが、「プログラミング力を伸ばす」という観点においては記事主の方のご意見に大きな異論はないものの、これからエンジニアを目指す初学者の方や経験の浅い方が「日本のWeb業界でキャリアを爆速で成長させるための最適な習得順序」としてはまた別の組み合わせが必要だと思いますので、この記事ではそれに関する私の考えを簡単に述べさせて頂きたいと思います。 (注:主にバックエンドエンジニアの方を対象としています) 結論 未経験から日本のWeb業界でキャリアを爆速で成長させるためにはR
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 「どの言語を学ぶべきか」という議論はエンジニア向け記事の定番ネタですが、HackerNoonに投稿された5 Programming Languages Every Master Developer Should Learnという記事がなかなか興味深かったので翻訳してみました。 (2018/11/04追記) こちらの記事に関する「別視点からの意見」として下記のような記事を追加いたしました。宜しければこちらも併せてご参照ください。 Ruby->Go->Scalaという習得順序がエンジニアの爆速の成長に最適である理由 はじめに 「プログラマー
@rana_kualuさんの 2018年の最先端フロントエンドエンジニアになろう 2018年の最先端バックエンドエンジニアになろう という翻訳記事のDevOps版という感じですが、HackerNoonに投稿されたThe 2018 DevOps RoadMapという記事が個人的に大変参考になりましたので、翻訳してみました。 ちなみに関連記事として 2018年の最先端バックエンドエンジニアに必要なスキルについて考えてみました。 という私の記事もございますので、併せてご参照頂けますと幸いです。 はじめに DevOpsは最近非常にホットなトピックで、私の友人や同僚、シニア開発者のほとんどは、DevOpsエンジニアになるために非常に熱心に取り組んでおり、組織やチームの中で「DevOpsのチャンピオン」として自分自身をセルフプロデュースしていいます。 私自身は、ソフトウェア開発とデプロイプロセスの改善
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 以前「転職ドラフトで1000万円超えのオファーを2度貰ったエンジニアが「評価された理由」と「正社員で働く意味」について考えてみました。」という記事を書いたのですが、転職ドラフトと同様な「年収確約型のエンジニアスカウトサービス」としてmoffersというものがあります。 転職ドラフトがここ最近非常に盛り上がっているのに対してmoffersはかなり知名度が低いのですが、現在開催中のmoffersで、転職ドラフトでも頂いたことのない「年収1200万円」という高額オファーを頂きましたので、若いエンジニアの方たち(特にバックエンド系の方たち)の今
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 先日投稿したプログラミングが大好きなWeb系エンジニアの50代以降のキャリアに関する考察という記事は、かなり拡散して色々な方に読んで頂いたようなのですが、ネット上の反応を見る限り、フリーランスエンジニアというワークスタイルに良くも悪くも歪んだイメージを持ってしまっている方が多いというか、実体験を伴わない聞きかじりの情報に影響されて誤った認識を持ってしまっている方がかなり多いという印象でしたので、こちらの記事ではそういった誤解に対する私なりの反論というか見解を述べさせて頂こうと思います。 誤解1:案件や顧客は全て自分で探さなければならない
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 先日、サイバーエージェントさんの「身に着けた技術をいかに捨てられるか。エンジニア歴39年、今でもエンジニアで居続ける理由。」という記事が大変話題になりました。 プログラミングやテクノロジーが大好きでWeb業界で働いているエンジニアの方の多くは、「可能であれば50代以降も現場で"手を動かすエンジニア"として働きたい」と考えてらっしゃると思いますが、平松さんのような方はかなり例外的で、Web業界で多数の現場を経験してきた私でも、50代以上の現役エンジニアの方とご一緒にお仕事をさせて頂いた経験は残念ながら一度もありません。 私は現在、雑食系エ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? @rana_kualuさんの2018年の最先端バックエンドエンジニアになろうという翻訳記事がとても興味深かったのですが、記事内で提示されているロードマップに関して微妙に違和感を感じる部分もありましたので、 記事に記載されているスキルは現場でどの程度必要なのか 記事に記載されていないが現場において重要なスキルは何か といった辺りを、自分なりの意見を交えてちょっと書き出してみました。 自分をエンジニアとして最先端だとは全く思っていないのですが、最近のバックエンドのトレンドに一応多少なりともきちんとキャッチアップしてるかなとは思うので、若い方
【キャリア/転職ドラフト】正社員/契約社員エンジニアという働き方のメリット/デメリット - YouTube ここ数年はフリーランスエンジニアとして色々な企業様でお世話になっているのですが、「正社員は嫌だ」というわけではなく、また「自分の市場価値をシビアに知っておきたい」ということもあり、転職ドラフトには毎回参加させて頂いております。 転職ドラフトに関してご存知ない方はこちらとかこちらの記事が参考になると思われます。 ちなみに私は転職ドラフトや運営会社のリブセンスさんとは何の関係も無いのでステマとかではありません。 どんなオファーを貰ったのか 私の場合、年齢的に普通におじさんだということもありまして、オファーが0件の場合も多いのですが、有り難いことに今までに1000万円超えのオファーを2回頂いた経験があります。 1回目のオファーに関しては、実際に面談にも伺ったのですが、労働環境やチーム方針等
JavaScriptのモジュール管理(CommonJSとかAMDとかBrowserifyとかwebpack) | tsuchikazu blog AMD & RequireJS - Qiita RequireJS使い方メモ - Qiita CommonJSは(Webpack等を使用した)ビルド時に依存関係を解決する方式だが、AMD(RequireJS)は実行時に依存関係を解決する方式である。 CommonJSはツールやライブラリではなく仕様のため、ビルド時に依存関係を解決する何らかのツールが必要となる。それが後述するBrowserifyやWebpackである。 AMDも仕様のため、それに対応するライブラリが必要である。それがRequireJSであり、さらにRequireJSはAMDには存在しない便利記法を導入している。 コードの中でmodule.exportsとrequireが使われていた
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 昨年の丁度同じ時期に、1ヶ月ほど仕事を休んで小学校の算数から高校数学までを学び直しまして、文系エンジニアが機械学習に入門するために小学校の算数から高校数学までを一気に復習してみましたという記事を書きました。 その後、機械学習やディープラーニングに関する勉強をどんどん進めていく予定だったのですが、Go、Scala、DDD、関数型言語の基礎、Rust、そしてGCPやKubernetes等、仕事上でキャッチアップしなければならない分野が山積みだった(&とても面白かった)ため、中々手を付けられませんでした。 それらの学習がやっと一段落した&今年
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
いまお世話になっている会社様の業務では、Scalaの様々な関数型ライブラリを使用する機会があるのですが、こちらの記事でもちょっと調べたFreeモナドとかをしっかり理解するためには、Scalaの関数型ライブラリがどういう考え方で作られているのか基礎から積み上げて勉強しないとちょっと厳しそうだなということで、Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイドを1章〜13章までざーっと学習&練習問題を7割ほど消化してみたので、その個人的な要約というか振り返りを備忘録代わりに書き留めておきたいと思います。 学習時間としては、1章と2章はそれぞれ数時間程度でしたが、3章以降は練習問題が多くなってくる(&それぞれの難易度が高い)ということもあり、私の場合は1章につきほぼ丸一日ほど必要になるという感じでした。 特にこの書籍では、前の章で作成したデータ型をそれ以
※この記事の1年後に文系エンジニアがCourseraの機械学習コースを1ヶ月で修了したので振り返ってみました。という記事もアップしました。 文系エンジニアが機械学習に入門しようと思うと、どうしても「数学の壁」にぶつかります。 一般的に、機械学習を理解するためには、大学レベルの「微分積分」「線形代数」「確率統計」の知識が必須とされていますが、私のような典型的文系エンジニアの場合、それを学習するための基本的知識自体が圧倒的に不足しているため、まずは高校までの数学を一からやり直してみました。 学習前の私の数学スペック 学生時代の数学の学習歴は高校2年生の2学期位まで。 大学で経済数学の授業があった気がするがほとんど出席していない。 仕事で使った数学知識は三角関数程度。(画像処理ソフトを開発した際に使用) 学習に要した時間 小学校の算数 5時間 中学数学 6時間 数I/数A 12時間 数II/数B
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? アドテク用語に関する個人的メモです。 前提 このまとめの内容は、下記書籍やリンク先記事からの抜粋、もしくは私個人が理解しやすいように文言を多少編集したものになります。 あくまで私個人のメモなので内容の正しさは保証されませんのでご注意ください。 引用書籍/記事 改訂2版 ネット広告ハンドブック アドテクノロジーの教科書 デジタルマーケティング実践指南 アドテクノロジー プロフェッショナル養成読本 ネット広告がわかる基本キーワード70 DSP/RTBオーディエンスターゲティング入門 頻出略語 CV Conversion(コンバージョン) 資
defmodule MyApp.EntryService do def insert(params) do Ecto.Multi.new |> Ecto.Multi.insert(:entry, Entry.changeset(%Entry{}, params)) |> Ecto.Multi.insert(:log, Log.changeset(%Log{}, event: "entry inserted")) end end defmodule MyApp.SectionService do def insert(params) do Ecto.Multi.new |> Ecto.Multi.insert(:section, Entry.changeset(%Section{}, params)) |> Ecto.Multi.insert(:log, Log.changeset(%Log
# ホームディレクトリに移動 cd # gitをインストール sudo yum install git # nvmをgitリポジトリからclone git clone git://github.com/creationix/nvm.git .nvm # .bash_profileを変更 vi ~/.bash_profile # 以下の設定を追加 source ~/.nvm/nvm.sh # 一旦ログアウトして再ログイン # インストール可能なnode.jsのバージョンの一覧を確認 nvm ls-remote # node.jsをインストール(LTSであるv4の最新版をインストールしておく) nvm install v4.3.1 # バージョンを確認 node -v # nvmのデフォルトバージョンを定義 nvm alias default v4.3.1 # erlangの依存パッケージをイ
Facebook Messenger PlatformやLINE BOTが話題になっていますが、下記の記事でも言及されているように、BOTサーバーとして大量メッセージに対応するには「並行処理」がキモになってきます。 大量メッセージが来ても安心なLINE BOTサーバのアーキテクチャ そしてElixirといえばやっぱり「並行処理」なわけです。ということで「BOTサーバーを効率よく開発するにはElixir/Phoenixってとても良い選択なのでは?」という仮定のもと、色々と検証してみました。 並行処理のコード Elixirでプロセスを起動・管理する方法はいくつも用意されていますが、BOTサーバーの要件的に「状態」を管理する必要はありませんし、プロセスから「戻り値」を返してもらう必要もありません。要するにプロセスは「使い捨て」というか、実行が終わったら勝手に終了してくれればそれでオッケーなわけで
ex_adminは、Railsのactiveadminと同様なCRUD画面を簡単に作成できる非常に便利なパッケージです。 READMEでは説明されていませんが、ElixirのProtocol機能を使用して、ueberauth等の認証パッケージとの連携が可能ですのでその方法について解説したいと思います。 手順 ueberauthによる認証の実装方法から説明するとかなり長くなってしまうため、ueberauth_exampleに対してex_adminを組み込む方法を説明したいと思います。 1. ueberauth_exampleの取得 まず、下記からueberauth_exampleを取得してください。 ueberauth_example 2. ex_adminのインストール 次に、上記のueberauth_exampleプロジェクトに対してex_adminをインストールしてください。 ex_a
備考 ecto_migrate ridgepoleと同様に、マイグレーションファイルを生成する必要がないのでその点は便利です。(自動的にALTER文を生成してくれる) フィールドの型(string等)を変更しないと、フィールドのサイズ変更が行えないようです。(ここがかなり不便) iexから実行する場合(EctoItを使用する場合)、MySQLではrootユーザのパスワードを空にしておく必要があります。 現時点の最新バージョン(0.6.3)がectoのバージョン1.0.xに依存しています(ectoの最新バージョンは1.1.3なので古いectoを使用する必要があります。ここもちょっと問題) 結論として、現時点ではectoの通常のmigrate機能を使用しておいた方が良いと思われます。 (2016/02/23追記) ectoの通常のmigrate機能を使う場合、スキーマ変更時にマイグレーションフ
このページを最初にブックマークしてみませんか?
『poly_soft - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く