OOC 2024 の発表資料です。後のフィードバックを参考に、より妥当な文言に改訂してあります。 ※ 本コンテンツには、一部特定の宗教思想の迫害に言及する表現がございますが、そのような行いを肯定する意図の内容ではございません。
OOC 2024 の発表資料です。後のフィードバックを参考に、より妥当な文言に改訂してあります。 ※ 本コンテンツには、一部特定の宗教思想の迫害に言及する表現がございますが、そのような行いを肯定する意図の内容ではございません。
Photo by Kenny Louie こんにちは。谷口です。 プログラミング初心者の中には、最初の言語としてPythonを学習している人も多いのではないでしょうか。 特に最初の言語の習得で難しいのが「まず何から始めたらいいか」かと思います。 独学でどう勉強したらいいのか分からない 経験者向けの解説を読んでも難しい といった悩みを持つ人も多いと思います。 そんな人におすすめなのが、プログラミング学習ゲームなど、遊び感覚でやる勉強です。楽しみながらできるだけでなく、反復練習で確実に基礎文法を身につけることができます。 そこで今回は「初心者だけどPythonについて楽しく勉強したい!」という方のために、ゲーム感覚で楽しくPythonを学べるサイトを紹介していきます。 最近は、こういった遊び感覚でプログラミングについて学べるサイトやサービスがかなり増えてきましたので、以前より学習のハードルはか
初めてゲーム作ろうと思った時、私はエクセルでゲームが作れる教本を手にしました。 結果は惨敗。配列は四角い箱ってなんですか?って感じで、何も出来ずに投げ出して終了しました。 そもそもゲームを作る本を読んでみても、基礎知識が抜けていたり、小難しく書いていることが多いなと個人的に思います。本を読んでもわからなかった、なんてことがあるのではないでしょうか。そこで私は私の知っている基礎知識を少しでも共有したいなと思いこの記事を書くことにしました。(Web業界のプログラミングの記事に対してゲーム業界のプログラミングの記事って少ないですしね) ふわっとした知識で書いている所や、分かりやすくするために、あえて書き換えている所もあるので、書いてあることをすべて鵜呑みにせず、読んでいただいて、この記事をきっかけに素人さんも含めゲームを楽しんで作ってたりして貰えれば幸いです。 第二回はこちら あんた誰 なにはと
こんにちは。pixiv Sketch(ピクシブスケッチ)チームでアルバイトをしているnontanです。pixiv Sketchは日々のお絵かきを今までよりもっと手軽に楽しめるコミュニケーションプラットフォームです。きちんとした絵だけではなく、落書きや描き途中の絵も気軽にシェアできることを目指して、日々開発をしています。 そのためにpixiv Sketchではブラウザ上でお絵描きができ、そのまま投稿できる機能を提供しています。このお絵かき機能は以前までCanvas 2D Contextベースで実装されていましたが、今年の3月にWebGLとEmscriptenを使って、よりパワフルにリニューアルされました。この記事では、WebGLとEmscriptenのそれぞれがお絵かき機能を実装する上で、どのように活用されているのか紹介します。 WebGL pixiv Sketchのお絵かき機能では、ブラシ
はじめに GoogleさんがShellスタイルガイドを共有していたので、いくつか気になった点をピックアップしました。 自分のShellスタイルはかなり我流なので、自省の意味も込めてコメントも併記します。 Googleスタイルガイドの元ネタ (Python/C++/Java/Rとかだけでなくdocumentガイドなど色々あります) https://github.com/google/styleguide Shellスタイルガイド (今回はこちら) http://google.github.io/styleguide/shell.xml 本当は人間がチェックするのではなくcpplintのためXML定義なのかもですが、気にしない気にしない。 (見たところcpplintはc++だけだと思ってます) commitフックでshell系のlint走らせろっていうのが今風なのかもしれませんが、キニシナイキ
JavaScriptは大変難しい言語です。Rubyの難易度を2、Cの難易度を5、C++の難易度を8にすると、JavaScriptの難易度は12ぐらいあると思います。このコーディングガイドはそんなJavaScriptの深みに嵌まらないようにするためのJavaScriptの書き方を規定したものです。初級者1のための物ですので、わかってやっている人に好きにやってください。 このコーディングガイドは絶対に従わなければならないものではありません。私は一切強制はしませんし、初級者が従わなければならないという義務もありません。採用するしないはみなさんの自由です。 禁止編 JavaScriptには安易に使用してはいけない機能があります。下記の機能は、それぞれの機能を使っても良い、または、使うべきであるという理由を説明できない限り、使用してはいけません。 ==、!= ==と!=を使用してはいけません。代わり
Webアプリにリアルタイムの双方向通信が必要な場合、WebSocketを選ぶのは自然なことだと思います。では、どのツールでWebSocketサーバを構築すべきでしょうか。パフォーマンスは重要ですが、開発のプロセスも見過ごしてはなりません。パフォーマンスを基準にするだけでなく、開発のしやすさも考慮に入れるべきでしょう。今回の大合戦では、Clojure、C++、Elixir、Go、NodeJS、Rubyのそれぞれの言語によって慣用的な手法で実装されたシンプルなWebSocketサーバを比較したいと思います。 テスト内容 サーバに実装するのは、 echo と broadcast の2つのメッセージのみを扱う非常に単純なプロトコルです。echoは送信クライアントに返され、ブロードキャストは全ての接続クライアントに送信されます。そしてブロードキャストが完了すると、結果メッセージが送信者に返されます。
(訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) はじめに 本稿では、高速で汎用的なハッシュテーブルを作るために行う、設計についての多くの意思決定事項を紹介します。最終的に、私の emilib::HashSet とC++11の std::unordered_set の間のベンチマークが出来上がりました。もし、ハッシュテーブルに興味があって、自分で設計したいなら(どのプログラミング言語かに関わらず)、本稿がヒントになるかもしれません。 ハッシュテーブル は、素晴らしい発明です。 ならし計算量O(1) ( O(√N)時間 )で、挿入、削除、検索を行うことができます。ならし計算量とは、ハッシュテーブルの計算に平均でO(1)の計算量がかかることを意味しますが、時々、これよりも多くの時間がかかる場合があります。具体的には、ハッシュテーブルに空きがない場合で、挿入の
以前、Salvatore Sanfilippo氏によって開発されたエディタ「Kilo」を取り上げたところ、高い関心を集めた。Kiloはclocカウントでソースコードが1000行以下で、しかもcursesなどのライブラリも使っていない。VT100の基本的なエスケープシーケンスとlibcで提供されている機能だけを用いて実装されたエディタで、シンタックスハイライトにも対応している。C言語1000行程度でここまで実用的なエディタが開発できるというのは、教育向けの素材として興味深い。 本連載では、Kiloのソースコードを読み、どのような仕組みでエディタが作られているかについて紹介する。C言語でソフトウェアを開発する際に利用する機能が網羅されており、学習素材としてなかなかのポテンシャルを持っている。エディタがどのように実装されているのかを知るためにも、一度は読んで見てほしいソースコードだ。 頭から読む
読み終わった。たった100Pにプログラム言語を作るための基礎(字句解析、構文解析、ランタイム、インタプリタ、仮想マシン、ネイティブコンパイルまで!)が一通り学べ、さらに本書で作った実際に動くプログラミング言語がついてくる。 $39.99 とちょっと高いがプログラム言語を作る勉強代だと考えれば最も安くそして早く(ドラゴンブックは1090P)学べるのではないだろうか。洋書なのが難点だが半分くらいはソースコードなので苦労しながらなんとかなりました。(日本語訳出てほしいなぁ) 書籍内で作る言語は2種類で Awesome Rubyの構文にPythonのインデントブロックを混ぜ合わせたようなオブジェクト型 Mio Ioを参考にしたメッセージ型 言語自体はどちらもRubyで書かれているが紹介される概念は特に言語の制約を受けないものが多い。 よかったところ yaccやbison, JVM系の構文解析ツール
Go言語の主な特徴として、「実行が高速である」「言語仕様がシンプルである」という点が挙げられます。 発表当初の対応OSはOS X(Mac)とLinuxのみでしたが、Go 1.0(2012年3月リリース)からはWindows、Go 1.4(2014年12月リリース)からはAndroidも対象となり、開発範囲が広がりました。 次世代のプログラミング言語として注目を集めるGo言語をこれから学ぼうと考えている方のために、Go言語が基礎からわかるサイト・記事、スライドを12個まとめてご紹介します。 Go言語が学べるサイト・記事 golang-jp - The Go Programming Language http://golang-jp.org/ Go言語の本家サイト(golang.org)を日本語に訳しているサイトです。 未翻訳の部分もありますが、英語が苦手な方にはとても役に立つサイトでしょう。
WebSocketを用いたオープンソースなリアルタイムチャットシステムrespassをリリースしました。 TL; DR 無職2人が3週間で https://respass.sketch-glass.io/ を作りました。 ソースコードはGitHub上で公開されています。 github.com 自己紹介 @minamorl 無職 Pythonエンジニア GitHub @seanchas_t 無職 C++/TypeScriptエンジニア GitHub はじめに この記事は主に技術者に向けて書かれていますが、そうでない方にも読めるような表現を重視しています。難解な用語にはなるべく注釈をいれました。技術的な話よりも「無職2人がいかにして3週間で作り上げたのか?」という開発フローの話に重きをおいたので、非技術者の方にも楽しく読んでいただけると思います。 なぜ作ったか オープンソースなチャット 近年、
Sublime Text は、私のお気に入りのプログラミング用テキストエディタです。 Sublime Textで気に入っている特徴の1つは、あいまい検索アルゴリズムです。ファイルや関数の検索が超高速なのです。これまで多くの人が、インターネット上で、この仕組みについて質問していましたが、満足の行く回答はありませんでした。そこで、私が自らこれを解明することにしました。 全部読むのが面倒な方へ 本文を読まずに最終結果だけ知りたいですか? 了解! 私は、あなたを責めたりしませんよ。 インタラクティブなデモ: こちらをクリック ソースコード: C++ 、 JavaScript Sublime Textの仕組み Sublime Textのあいまい一致とは何でしょうか。そして、なぜそれはそんなに賢いのでしょうか。聞いてくれてうれしいです。 Sublime Textには、2つの非常に便利なナビゲーション関
コードを試したい場合だったり、プログラミングの学習をしたりするときに、開発環境を整えるのが面倒なことはありませんか?今回は面倒なアカウント登録も不要で、ブラウザだけですぐにプログラミングができるWebサービスをご紹介します。 Runstant http://phi-jp.github.io/runstant/release/alpha/ 対応言語:HTML, CSS, JavaScript Web系のコードを試すときに便利なサービスです。エディタがSublime Text風のハイライトで見やすく動作もサクサクなので非常に使いやすいです。saveボタンを押すことでコードの情報が入ったURLが自動的に生成され、簡単に他の人にシェアすることができます。また、上のshareボタンを押した後にembed codeの内容を記事内に埋め込むとコードと開発環境自体も埋め込むことができます。Webデザイナー
あるとき突然『チームのキーマンが抜ける』というイベントが発生しました! まあ会社という組織ではよくありますよね(苦笑 チームメンバーが不安がっていたので、以前、楽天の川口さんに教えてもらったドラクエ風スキルマップを使って今の状況を可視化してみました。 これもまさにゲーミフィケーションって感じですねぇ~ スキルマップを作る過程 元々はWebアプリケーションエンジニアのスキルマップだったため、自分達に合うように数人でスキルマップを練り直しました。 これだけでもかなり盛り上がりましたッ!! 以下は川口さんのオリジナルから変更したところです。 要件定義のスペシャリストとして、商人を追加。 旅芸人はマネージメントのイメージに変更 スキルの方向を上方向に変更 盗賊のスキルレベルの見直し CやC++をイメージして文言を見直し 特性に対応するキーワードを追加 スキルマップを記述する チームメンバーに実際に
Boostnoteを使用してみた 最近話題になっているBoostnoteを使ってみました。しかし今日、Boostnoteについて書かれたブログ記事がまだ少なかったため、今回は設定法や簡単な使用例の説明、使ってみた感想について記していこうと思います。 (この記事は随時更新予定です。) Boostnoteとは? boostnote.io 簡単に言ってしまうとプログラマのための"メモ帳"アプリです。使い方としては、 簡単なメモを取る よく使うコードをメモしておく この2種類が挙げられます。前者について、Boostnoteは他のテキストエディタに比べて起動が早くMarkdownにも対応しているので簡単に綺麗なメモをとることができます。また、後者が特にこのアプリの良い所だと思うのですが、後述するFinderを使うことで簡単にソースコードの使い回しができるようになります!よく使うソースコードや忘れてし
TensorFlowは主に機械学習、特に多層ニューラルネットワーク(ディープラーニング)を実装するためのライブラリになりますが、その基本的な仕組みを理解するのにそうした難しい話は特に必要ありません。 本記事では、TensorFlowの仕組みを、算数程度の簡単な計算をベースに紐解いていきたいと思います。 TensorFlowの特徴 初めに、TensorFlowの特徴についてまとめておきたいと思います。 TensorFlowは、その名前の通りTensor(多次元配列、行列などに相当)のFlow(計算処理)を記述するためのツールです。その特徴としては、以下のような点が挙げられます。 スケーラビリティ PC、サーバー、はてはモバイル端末まで、各マシンのリソースに応じてスケールする。つまり、低スペックなものでもそれなりに動くし、GPUを積んだハイスペックなサーバーであればそのリソースをフルに活用した
TensorFlowとは2015/11/9にオープンソース化されたGoogleの機械学習ライブラリです。この記事ではディープラーニングと言われる多層構造のニューラルネットワークをTensorFlowを利用して構築しています。 TensorFlowはPythonから操作できますがバックエンドではC++で高速に計算しています。macのPython2.7系環境でTensorFlowの上級者用チュートリアルを行い、手書き認識率99.2%の多層構造の畳み込みニューラルネットワークモデルの分類器を構築したときの作業メモです。特別な設定なしにCPU使用率270%メモリ600MByteとちゃんと並列計算してくれました。MNISTランキングを見ると認識率99.2%は上位のモデルとなるようです。 TensorFlowチュートリアル TensorFlowの初心者用と上級者用チュートリアル2つに取り組んでみました
Malwarebytes は、驚くべき成長を見せています。1年以上前にこのシリコンバレーの会社に入社して以来、私の主な仕事は急成長するセキュリティ企業の力となるシステムの設計と開発です。日々数百万人が利用する製品をサポートするために必要な、全ての基盤をつくります。私は12年以上、アンチウイルスとアンチマルウェアに関わるいくつかの会社で働いてきました。毎日処理する膨大なデータのせいで、これらのシステムがどれだけ複雑なものになるかを理解しています。 面白いことに、ここ9年ほどで私が携わったWebのバックエンド開発のほとんどは、Ruby on Railsが使われていました。誤解されないように言っておきますが、私はRuby on Railsが大好きですし、すばらしい環境だと思っています。しかし、Rubyでシステムを設計し始めると忘れてしまうのは、マルチスレッド化や並列化、高速化、メモリオーバーヘッ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く