はじめに Pythonは今最も習得希望人口の多い言語である。 それはヘビーなデベロッパーからライトなオフィスコンピューティングまで多岐にわたる。 おそらく「Pythonを使えば○○ができる」と喧伝されているのを見聞きしているからだろう。 この記事ではそんなPythonを一から導入し開発できるようにすることを主にする。 OSのセンテイ Pythonの開発でもっとも優れたOSはWindowsである。 単純にPython.orgの公式から対象のバージョンをいくつか選んでダウンロードして適当にインストールすればそれですべてを始められるので、MacやLinuxのようにシステムデフォルトと別verとのインストール共存やパッケージ管理ツールを意識する必要はない。 パスは通るし、複数のバージョンを同時に入れてもビルドバージョンですら分けて共存できるので簡単。 処理系 Pythonはインタプリタ界の変態言語
おはようございます、なのくろです。年の瀬ですね。 この記事は ABEJA Advent Calendar 2020 の最終日です。 追記:おかげさまで Qiita LGTM賞 を受賞いたしました、ありがとうございます! 私は2020年01月にABEJAへ入社しました。チームではフロントエンド開発全般を任されています。 参入してちょうど1年が経過しましたので、今年取り組んだことをまとめました。 「フロントエンドを100倍速く」というタイトルは誇張気味なのですが、難しいことはせず、基本的なパフォーマンス改善を素直に実践したという話を書きます。 本稿では事例とやったことを紹介するのみですが、何かしらの知見や改善のきっかけに役立てば幸いです。 サービスについて 話をする前に、どんなサービスを開発しているかについて少しだけ触れます。 ABEJA社では「Insight for Retail」という、小
随分前にブログに書いたのですが、アクセスが多かったのでこちらにも書きます。 http://t-kashima.hateblo.jp/entry/20110203/1296748262 ここでは色々な方法でリソースIDを取得する方法を説明します。
こんにちは、食べログシステム本部長の京和です。 本エントリでは Shopify の Engineering Blog から、Kirsten Westeinde による「Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity」を翻訳して掲載します。 食べログではユーザーや飲食店に価値を届けるスピードを最大化するべく、マイクロサービス化などをはじめとしたこれまでの組織やアーキテクチャを刷新するための取り組みを始めています。しかし、マイクロサービスはアプリケーションアーキテクチャとインフラアーキテクチャが複雑に絡み合ったシステムで技術的難易度が非常に高く、適切に構築できなければ「分散されたモノリス」と呼ばれるアンチパターンに陥ります。1 Shopifyではマイクロサービスではなく、
はじめに こんにちは。こんばんはかもしれません。爲岡 (ためおか) と申します。 2020年4月から株式会社グロービスにて機械学習エンジニアとして働いています。 グロービスでは機械学習技術を利用したプロジェクトや、データ基盤の運用改善プロジェクトを担当しています。 機械学習技術を利用したシステムには様々なものがあると思いますが、 現状のグロービスにおいては、ユーザのリクエストに対して機械学習を行い、 すぐに結果を返す必要があるようなシステムは扱っておらず、 ある程度の時間をかけて学習、推定した結果を非同期にアプリケーションに連携するシステムのみを扱っています。 ゆえに、今のところは機械学習技術を利用したロジックを書くときに、速さを意識することはあまりありません。 一方で、空いている時間に競技プログラミングをやっていることもあり、 高速なコードについて考えたり、書いたりすることは個人的には好
これは、言語実装 Advent Calendar 2020 19日目の記事です。 最近は、コンパイラやインタプリタなどの言語処理系や、それに類するものを作る人が増えてきています。(私の周りだけかもしれませんが。) しかし、もう一歩進んで、コンパイラ基盤を作ってみたという話はあまり聞きません。 コンパイラ基盤は、それの対象とするアーキテクチャについてや、それ自体の使い勝手を考えるのが非常に面白いものです。また、コンパイラ基盤を作る中で、コンパイラや計算機自体についてより深く学ぶことが出来ます。 この記事では、私が開発中のコンパイラ基盤を例として、コンパイラ基盤について語っていきます。 そもそもコンパイラ基盤とは コンパイラ基盤と言えば、近年色々な所で目にするのがLLVMです。 LLVMを使うことで、コンパイラの複雑で面倒な部分を避けつつ、コンパイラを構成することができるようになりました。 下
この記事は Go 2 Advent Calendar 14日目の穴埋め記事です。 はじめに @okdyy75 さんによる Go 5 Advent Calendar 14日目の の記事「だから僕はGo言語を辞めた」 が「ベンチマークっていうのはこうやるんだよ」というのを説明するために反面教師的な意味で良い教材だと思ったので、反証記事を書きたいと思います。 ベンチマークを取りながらコードを改善して、最終的にGoは遅くないからやめる必要はないということ、そして、なぜ遅いという結論になってしまったのかを掘り下げていきたいと思います。 下準備 幸いなことに、ベンチマークのソースコードがGitHubにある ので、こちらを実行しながら問題点を改善していきましょう。 ちゃんとコードが上がっているのは素晴らしいですね! 一方で、元記事には測定環境が明記されていませんでしたので、同じ環境で測定することはできま
この記事は「データ構造とアルゴリズム Advent Calendar 2020」16日目の記事です。 15日目の記事はyurahunaさんの「木分解上の動的計画法」で、 17日目の記事はtsukasa__diaryさんの「Lawler の K-Best 列挙アルゴリズム」です。 この記事内で使用しているプログラムやそのテストプログラムは全て以下のGitHubリポジトリで閲覧可能です。プログラムの詳細に興味がある方はこちらをご覧ください(ついでにStarを押していってくれると喜びます🙂)。 Github: ashiba/Imprementation_of_IKERUKANA: Momotaro Dentetsu is a game. 変更履歴 2020/12/21に「最終的に貧乏神が付かない移動方法 ~貧乏神持ちの場合~」, 「最終的に貧乏神が付かない移動方法 ~貧乏神がついていない場合~
とある休日 娘(5歳)「パパ、今日はお休みだから一緒にゲームしよ?」 ワイ「ええで!なんのゲームする?」 ワイ「スーパー正男ブラザーズでもやろか?」 娘「ううん」 娘「コードジャンケンしよ!」 ワイ「なんや、その恐ろしそうな名前のゲームは。。。」 娘「なんか仕様を決めて、どっちが読みやすいコードで実装できるか勝負するの!」 ワイ「おお、ええで」 ワイ「流石に5歳児には負けへんで!」 ワイ「6歳児だと危ういけどな!」 娘「じゃあ、ママ」 娘「何か仕様をちょうだい!」 よめ太郎「ええで」 仕様: 数値を文字列に変換する よめ太郎「仕様、考えたで」 よめ太郎「数値を文字列に変換する、っちゅう内容や!」 【いま考えた仕様書】 とあるAPIから0〜2の数値が返ってくるとする 0〜2の数値は、ユーザーの申込進捗状況を表しているものとする 0〜2の数値は、それぞれ以下の状態を表している 0 → 申込書到
はじめに 本稿では、iOSアプリ開発に関する初歩的な情報を共有します。 ※本稿の情報は2020年2月現在です。 Xcode + Swiftによる開発を前提として記述しています。 私の認識違いなどがありましたらコメントでお知らせいただけると幸いです。 iOSアプリ開発に必要なもの Mac iOSアプリの開発ツールの"王道"は、Appleが提供しているXcodeです。 XcodeはMacでのみ動作します。 まずはMacの操作に慣れる必要があります。 Mac をはじめてお使いになる方(Apple公式) Xcode Xcode(エックスコード)はAppleが提供している、無料の統合開発ツール(IDE)です。 iPhone、iPad、Mac、Apple Watchのアプリを開発することができます。 Apple製品ユーザーであれば、Apple IDはお持ちかと思います。 MacとApple IDがあれ
はじめに 本稿は、ソフトウェア開発を進める際に直面する様々な技術的な意思決定やライブラリ・フレームワーク・XaaS等を選択し正しく活用していくのかについての考え方をサポートすることを目的としています。「すべてにおいてこのようなワークフローを通じて検討すべきである」という主張ではありません。読者の抱える問題領域に応じて、必要な箇所を取捨選択するための1種の考え方を提供するものです。 そもそもアーキテクチャ・技術選定に時間をかけるべきか まず第一に伝えておきたいことは、技術選定やアーキテクチャ設計に常に慎重であるべきではないということです。ソフトウェアの規模やライフサイクルに応じて、そもそも時間をさく必要がないということも多くあります。書き捨てのシェルスクリプトにも読みやすいコードを求めて書くことは非常に重要ですが、だからといって組織だって議論・検討するようなものでもないのです。一方で、5年も
ライブラリの紹介ページや GitHub のリポジトリで登場する「割と見るけど意味はよくわからない単語」をまとめてみました 誤りがあればガンガン指摘してもらえると助かります opinionated 意味をググると「[形容詞] 自説を固執する」という謎の和訳が出てきて理解を諦める方もいるんじゃないでしょうか opinionated については色々な記事で紹介されています https://qiita.com/baby-degu/items/7dc4548bf7befc2671f4#opinionated%E3%81%A8un-opinionated https://stackoverflow.com/questions/802050/what-is-opinionated-software プログラミングの文脈に落とし込むと「ライブラリやフレームワークが定義したやり方に利用者(プログラマ)を従わ
自己紹介 本職のエンジニアではありませんが、ちょっとICT系に詳しそうなやつって感じで、部署のサーバ管理を任されたりもしています。 背景 私の(当時所属していた)部署では、毎年、数週間かけて前年の各人の業務実績をとりまとめて一つの冊子(PDF)にするという仕事があり、この作業を少しでも自動化するため、Webサービスが内製されました。当初は単純に各ユーザが自分の業務実績一覧をテキストで用意してアップロードするというものでしたが、秘伝のタレのように毎年少しずつ改良されたり、大幅に作り直されて別システムから業務データを取り込んでからブラウザ上で編集できるようになったりしつつ、なんやかんやあって私が引き継ぎます。他にやりたい人もなく、ひとり鯖管です。OSはCentOS6でした。 このシステムでは、毎年新しいデータを編集するため、その作業開始時にデータを初期化する必要があります。この作業も自動化し、
2015年、とある休日 よめ太郎「あ・・・あんた!」 よめ太郎「こっち来て!!!」 ワイ「ど、どうしたん?」 ワイ「えらい大っきい声出して」 よめ太郎「娘ちゃんが初めて立ったんや!」 娘(0歳)「ヨチ・・・ヨチ・・・」 ワイ「おお・・・!」 ワイ「これはめでたいこっちゃ・・・!」 娘「・・・パパァ・・・」 ワイ「!?」 ワイ「いま、パパ言うたで!?」 ワイ「立ったと同時に言葉も喋れるんか!?」 ワイ「なんて末恐ろしい子や・・・!」 娘「・・・エテ・・・教エテ・・・」 ワイ「な、なんや喋っとるで・・・」 ワイ「なんや、娘ちゃん・・・?」 娘「・・・パパ・・・」 娘「・・・プログラミング・・・教エテ・・・」 ワイ「ファッ!?」 ワイ「Hello, World!でええか・・・?」 よめ太郎「いや、Hello, World!は産声で言うてたわ」 ワイ「せやった!」 ワイ「お医者さんが思わず・・・」
はじめに この記事はRust Advent Calendar 2020の3日目です。 今年の春から夏にかけて、「実践Rustプログラミング入門」という本を書いていました。お陰さまで売上好調のようでありがとうございます。(ちなみにちょうど昨日、電子書籍版も出ました) この本を書くにあたって、すでにいくつかRustの日本語書籍があるなか新しい本を出すということで、既刊との差別化をどう図るかは考えないといけないと思っていました。その時にRust本を一通り読み直したので、それぞれどのような本であるかを簡単にまとめておこうと思います。 基本的な書誌情報に加え、Rustコンパイラのバージョンとエディション、内容のざっくりとした方向性(実践よりか文法解説よりか、といったような)を書いていきます。いくつかの本にはよく使われる呼び名があるのでそちらも書いておきました。 Rustはいろいろなプログラミング言語
はじめに システム作ってるとかライブラリ作ってるみたいなある程度Pythonを綺麗に1書くことが求められる方々に向けた記事です。 (機械学習系のライブラリを使うためにPython書いてる方とか、初学者の方にはちょっとあわないかも知れません) 綺麗に書くための作法の難しさって共有が面倒なところだと思うんですよね。その書き方は間違いじゃない、間違いじゃないけどもっといい書き方があるぞみたいなやつってなかなか指摘し辛いですし、じゃあ1人に対してレビューしたら他のメンバーにはどう伝える?そもそも伝える必要?俺の工数は?みたいになりがちです。 一番いいのはこういう時はこう書く!みたいなドキュメントを作って「ドキュメント違反です」ってレビューをしてあげることなんですが、まーそれもそれで超面倒じゃないですか。なのでこの記事がそのドキュメントの代わり、とまではいかなくとも礎くらいになればいいなと思って書き
はじめに 今日は、ニコニコのプレミアム会員サービスを支える「プレミアム課金システム」を動画システムのモノリスから切り出し、変更可能にしていった過程について書きます。プレミアム課金システムは金銭を扱うシステムですので、「(特に、失敗した)話を聞くのは面白いけど、自分で触りたくない」と思われる方も多いのではないでしょうか。 この記事では、決済にかかわるシステムでも一般的なシステム改善の方法が適用できることをお伝えしたいと思います。また、コストを抑えつつ着実なシステム改善を行う方法論としてもご理解していただけると嬉しく思います。 背景 プレミアム会員サービスについて 月額500円(税別)のプレミアム会員制度には159万人(2020年9月末現在)の方が加入してくださっており、ニコニコ事業を支える主要な有料サービスです。 ニコニコ動画は2006年にサービスを開始し、2007年にプレミアム会員サービス
EC2 (Amazon Linux) Apache php7.1 私がやってしまったこと この事件が起きたのは2020年6月。既に稼働しているWebサービスでとあるデータ取得の処理が止まってしまっているので調査してほしいと頼まれました。また、サービスに影響が出るものだからなるべく早めに対処してほしいと言われました。 マネージャー 「今日の夕方までにはお願いね。もし難しそうだったら午後イチで一旦MTGしよう。14時までに連絡をください。」 わたし 「任せてください!」 ・・・・ とは言ったものの、本番サーバーで起きている障害の調査は今までやったことがありませんでした(もちろん本番サーバーにログインしたこともない)し、進め方も全く思いつきませんでした。しかも、対応するサービスの開発には携わったことがなく、sshログインの設定から行う次第でした。 まあ、今まで頼まれたタスクを期限内に終えられなか
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く