技術サイト
- Hacker News:プログラミング向けのリンク集約サイトとして非常に優れている
- Programming reddit:同上
- MSDN:マイクロソフト関連の公式技術情報が集まる場所、主にドキュメント類
- infoq:エンタープライズアプリケーション、ソフトウェア開発分野に注目
- OSChina:オープンソース技術コミュニティ、オープンソース分野ではかなり良い
- cnblogs、51cto、csdn:よくある技術コミュニティ、それぞれに得意分野がある
- stackoverflow:IT技術Q&Aサイト
- GitHub:世界最大のソースコード管理プラットフォーム、Linuxカーネルなど多くの有名なオープンソースプロジェクトが置かれている、
- OpenStackなどの無料IT電子書籍:http://it-ebooks.info/
- DevStore:開発者向けサービスストア
おすすめの書籍
- ピープルウェア
- 人月の神話
- コード大全2
- コンピュータプログラミングの芸術
- プログラマーの自己修養
- 達人プログラマー
- 高効能プログラマーの修練(優れたプログラマーになることは、実はコードを書くこととはあまり関係がない)
- コンピュータシステムの深い理解
- ソフトウェア随想録
- アルゴリズム入門(MITプレス)
- 離散数学とその応用
- デザインパターン
- プログラミングの美
- ハッカーと画家
- プログラミングの真珠
- C++ Prime
- Effective C++
- TCP/IP詳解
- Unixプログラミングの芸術
- 『精神分析入門』フロイト
- やり遂げる:ストレスフリーの仕事術
プラットフォームツール(すべてオープンソースの素晴らしいものだよ)
- Redmine/Trac:プロジェクト管理プラットフォーム
- Jenkins/Jira(非オープンソース):継続的インテグレーションシステム(Apache Continuum、これはApacheのCIシステムで、まだ研究できていない)
- Sonar:コード品質管理プラットフォーム
- git、svn:ソースコードバージョン管理システム
- GitLib/Gitorious:自分専用のGitHubサーバーを構築する
- gitbook:https://www.gitbook.io/本を書くのに良いもの、もちろんドキュメントを書くのにもとても良い
- Travis-ci:オープンソースプロジェクトの継続的インテグレーションに必須、GitHubと連携する、https://travis-ci.org/
- オープンソーステストツール、コミュニティ(Selenium、OpenQA.org)
- Puppet:Linux、Unix、Windowsプラットフォームに対応した自動管理エンジン。いわゆる構成管理システムとは、マシン内のファイル、ユーザー、プロセス、ソフトウェアパッケージといったリソースを管理するもの。Puppetは1台でも数万台でも簡単に管理できる。
- Nagios:システム状態監視アラート、さらにIcinga(nagiosの全てのプラグイン、動作原理、設定ファイル、方法と完全互換で、ほぼ同じ。設定は簡単で、機能は強力)
- Ganglia:分散監視システム
- fleet:分散initシステム
クローラー関連(面白いツール)
- Phantomjs
- berserkJS(Phantomjsをベースにした改良版)
- SlimerJS
- CasperJS
- selenium
Webサーバー性能/負荷テストツール/ロードバランサー
- http_load:プログラムが非常に小さく、解凍後も100K未満
- webbench:Linux向けのウェブサイト負荷テストツールで、最大3万の同時接続をシミュレートしてサイトの負荷耐性をテストできる
- ab:Apache付属の強力なテストツール
- Siege:オープンソースの負荷テストツール。設定に応じてWebサイトに対して複数ユーザーによる同時アクセスを行い、各ユーザーの全リクエストプロセスの応答時間を記録し、一定数の同時アクセス下で繰り返し実行する。
- squid(フロントエンドキャッシュ)、nginx(負荷分散)、nodejs(そう、これも可能。自分でコードを書けば高性能なロードバランサーを実装できる):よく使われるロードバランサー
- Piwik:オープンソースのウェブサイトアクセス解析システム
- ClickHeat:オープンソースのウェブサイトクリック状況ヒートマップ
- HAProxy:高性能TCP/HTTPロードバランサー
- ElasticSearch:Luceneベースの検索エンジン
- Page Speed SDKとYSLOW
- HAR Viewer:HAR解析ツール
- protractor:E2E(end to end)自動化テストツール
Webフロントエンド関連
- GRUNT: js task runner
- Sea.js:JSモジュール化
- knockout.js:MVVMでフロントエンド開発、バインディング技術
- Angular.js:超ダイナミックなHTML & JSでWebアプリを開発!
- Highcharts.js、Flot:よく使われるWebチャートプラグイン
- Raw:非常に優れた高度なデータ可視化ツール
- Rickshaw:時系列グラフライブラリ、リアルタイムチャートの構築に使用可能
- JavaScript InfoVis Toolkit:もう一つのWebデータ可視化プラグイン
- Pdf.js、HTML内でPDFを表示する
- ACE、CodeMirror:HTMLコードエディタ(ACEはとても良い)
- NProcess:華麗なローディングプログレスバー
- impress.js:目を見張るようなコンテンツ表示効果を作成できる(似たものにrevealもある)
- Three.js:3D Webライブラリ
- Hightopo:HTML5ベースの2D、3D可視化UIライブラリ
- jQuery.dataTables.js:非常に柔軟なテーブルプラグイン
- Raphaël:JSとcanvasの描画ライブラリ、後に百度指数(Baidu Index)のグラフもこれで描かれていると分かった
- director.js:JSルーティングモジュール。フロントエンドルーティング、Node.jsバックエンドルーティングなど。シングルページアプリケーションの構築に適している
- pace.js:ページ読み込みプログレスバー
- bower:Webパッケージマネージャー
- jsnice:面白いJS逆コンパイルツール。圧縮された変数名を推測するhttp://www.jsnice.org/
- D3.js:JavaScriptベースのデータ可視化ライブラリ(類似のものにP5.jsもある)
- Zepto.js:モバイル向けにjQueryを代替するもの。もちろんjquery-mobileも使用できる。
UIフレームワーク:Foundation、Bootstrap、Pure、EasyUI、Polymer
フロントエンドUIデザイナー必見のサイト:Dribbble、awwwards、unmatchedstyle、UIMaker
Mozilla 開発者センター:https://developer.mozilla.org/en-US/
アイコンリソース:IcoMoon(私のお気に入り)、Themify Icons、FreePik、Glyphiconsart
- Dialog:とても美しいダイアログ
- AdminLTE:GitHub上のオープンソースプロジェクト、Bootstrap3ベースのバックエンド管理ページフレームワーク
- Respond.js:IE6-8でレスポンシブデザインをサポートさせる
- require.js:JSモジュールローダーライブラリ
- select2:chosenよりも多くの機能を持つセレクトボックス代替ライブラリ
- AngularUI:angular.jsを統合したUIライブラリ
- normalize.css:モダンな標準を用いて、各ブラウザで描画されるHTMLを統一するライブラリ
- CreateJS:HTML5ゲームエンジン。Less、Compass:CSS開発を簡素化
- emojify.js:ウェブページ上の絵文字テキストを自動認識して画像として表示するために使用
- Simditor:優れたオープンソースのHTMLエディタ、シンプルで効率的
- Sencha:HTML5ベースのモバイル開発フレームワーク
- SuperScrollorama+TweenMax+skrollr:超クールなパララックススクロール効果のWebアニメーションを実現
- jquery-smooth-scroll:同上、スムーズスクロールプラグイン
- Animate.css:さまざまなアニメーション効果を実現するCSSライブラリ
- Emmet: フロントエンドエンジニア必携、ZenCodeの前身
- MagicDraw: UML図ツール
ビッグデータ処理/データ分析/分散ツール
Hadoop: 分散ファイルシステムであり、そのMapReduceプログラミングモデルと組み合わせて大量データのバッチ処理に使用できる(Hive、Pig、HBaseなどは言うまでもない)。特筆すべきはClouderaのHadoopディストリビューションCDH5で、YARN MRv2ベースでSparkを統合し、本番環境で直接使用できるHadoopであり、企業がデータウェアハウスを迅速に構築するのに非常に有用である。
Ceph: Linux分散ファイルシステム(特徴:中央集権なし)
Storm: リアルタイムストリームデータ処理。IBMの紹介記事を参照のこと(YahooのS4もストリームデータ処理を行う)
Spark: 大規模ストリーミングデータ処理(企業で一般的な3種類のデータ処理シナリオに対応可能:複雑なバッチデータ処理(batch data processing);履歴データに基づくインタラクティブクエリ(interactive query);リアルタイムデータストリームに基づくデータ処理(streaming data processing))。CSNDに良い紹介記事がある
Spark Streaming: Sparkベースのリアルタイム計算フレームワーク
Tachyon: 分散インメモリファイルシステム
Mesos: コンピューティングフレームワークのクラスタマネージャであり、分散アプリケーションやフレームワーク間で効果的なリソース分離と共有を提供する。Impala: 次世代のオープンソースビッグデータ分析エンジンで、SQLセマンティクスを提供し、速度においてHiveより優れている。
SNAPPY: 高速データ圧縮システムで、Hadoopエコシステムに適している
Kafka: 高スループットの分散メッセージキューシステム
ActiveMQ: Apache提供の、最も人気があり、高性能なオープンソースメッセージバス
MQTT: Message Queuing Telemetry Transport(メッセージキューイングテレメトリトランスポート)はIBMが開発した即時通信プロトコルであり、IoTの重要な構成要素となる可能性がある
RabbitMQ: OpenStackがこれを使っていたのを覚えているだろう
ZeroMQ: 分散コンピューティングをよりシンプルにすると謳われている分散メッセージキュー。雲風の記事の紹介を参照のこと。オープンソースのログ収集システム:scribe、chukwa、kafka、flume。比較記事がこれ
Zookeeper: 信頼性の高い分散調整を行うオープンソースプロジェクト
Databus: LinkedInのリアルタイム低遅延データ取得システム
データソース取得:Flume、Google Refine、Needlebase、ScraperWiki、BloomReach
シリアライズ技術:JSON、BSON、Thrift、Avro、Google Protocol Buffers
NoSql:Apache Hadoop、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j
MapReduce関連:Hive、Pig、Cascading、Cascalog、mrjob、Caffeine、S4、MapR、Acunu、Flume、Kafka、Azkaban、Oozie、Greenplum
データ処理:R、Yahoo! Pipes、Mechanical Turk、Solr/Lucene、ElasticSearch、Datameer、Bigsheets、Tinkerpop。NLP自然言語処理:Natural Language Toolkit、Apache OpenNLP、Boilerpipe、OpenCalais
機械学習:WEKA、Mahout、scikits.learn、SkyTree
可視化技術:GraphViz、Processing、Protovis、Google Fusion Tables、Tableau、Highcharts、EChats(百度のは結構良い)、Raphaël.js
- Kettle: オープンソースのETLツール
- Pentaho: ワークフローを中心としたオープンソースBIシステム
- Mondrian: オープンソースのROLAPサーバー
- Oozie: オープンソースのHadoopワークフロー調整エンジン
オープンソースのデータ分析可視化ツール:Weka、Orange、KNIME
Cobar: 阿里巴巴(Alibaba)のMySQL分散ミドルウェア
C & C++
Thrift: 拡張可能でクロスランゲージなサービスの開発に使用する(類似のものとしてAvro、Google protobufもある)
libevent: イベントトリガーのネットワークライブラリで、Windows、Linux、BSDなど複数のプラットフォームに対応し、内部でselect、epoll、kqueueなどのシステムコールを使用してイベントメカニズムを管理する。(そういえばlibevもある)
Boost: 言うまでもなく、準C++標準ライブラリ
Ptmalloc\Valgrind\Purify
NetworkServerアーキテクチャ: acceptor -> dispatcher -> worker(これはツールではない)
breakpad: クラッシュダンプおよび分析モジュールで、多くのクラッシュレポートで使用される
UI関連:MFC、BCG、QTなどは言うまでもないが、よりハイレベルなものとしてHTMLやDirectUI技術がある:libcef(Chromeカーネルベースで、HTML5でページを開発することを考えると少しワクワクする)、HtmlLayout、Duilib、Bolt。C++以外ではnode-webkitも良く、nodeとwebkitカーネルを統合している。
ゲーム開発関連
MINA: Javaを使用してモバイルゲームやWebゲームのサーバーを開発する(そういえばNettyもあり、これも強力で、どちらもNIOベースである)
HP-Socket: 一部のWebゲームサーバーがこれを使用して構築されているのを見かける
雲風(Cloud Wind)の技術ブログ:http://blog.codingnow.com/
OGRE: 有名な3Dグラフィックスレンダリングエンジン
OpenVDB: ドリームワークスのC++エフェクトライブラリで、オープンソース
cocos2d: クロスプラットフォーム2Dゲームエンジン
unity3d: クロスプラットフォーム3Dゲームエンジンで、とても人気がある
Nodejs: これを使用してモバイルゲームやサーバーを開発する例も多い(網易(NetEase)のPomeloがそうだ)
ログ集約、分散ログ収集
Scribe: Facebookのもの(nodejs + scribe + inotify でログを同期)
logstash: 強力なログ収集システムで、logstash+kibana+elasticsearch+redisをベースに強力なログ分析プラットフォームを開発できる
log.io: Node.jsで開発されたリアルタイムログ収集システム
RTP、リアルタイム転送プロトコルと音声・映像
RTP、RTCP、RTSP -> librtp、JRTPLIB(RFC1889標準に準拠)
リングバッファ、リアルタイムデータ転送用
SDL,ffmpeg,live555,Speex
Red5: Javaで開発されたオープンソースのFlashストリーミングメディアサーバー。対応機能:音声(MP3)とビデオ(FLV)の再生ストリームへの変換;クライアント再生ストリームの録画(FLVのみ);共有オブジェクト;ライブストリーム配信;リモート呼び出し。
Python
Eric, Eclipse+pydev: 比較的良いPython IDE
PyWin: Win32 APIプログラミングパッケージ
numpy: 科学計算パッケージで、主に大規模行列計算などを処理する。他にもSciPy、Matplotlibがある
GUI関連:PyQt、PyQwt
supervisor: プロセス監視ツール
Java関連
よく使われるIDE:IntelliJ IDEA、Eclipse、Netbeans
Web開発関連:Tomcat、Resin、Jetty、WebLogicなど。よく使われるコンポーネントはStruts、Spring
Hibernate、Netty: 非同期イベント駆動型ネットワークアプリケーションプログラミングフレームワークで、高並行ネットワークプログラミングに適している(NIOフレームワーク)
MINA: 高性能で高信頼性のネットワークアプリケーションを簡単に開発できる(これもNIOフレームワーク)。多くのモバイルゲームサーバーはこれを使って開発されている
jOOQ: JavaのORMフレームワーク。Activiti: ワークフローエンジンで、類似のものにjBPM、Snakerがある
Perfuse: 構造化データと非構造化データをインタラクティブな可視化グラフィックとして表示するためのユーザーインターフェースパッケージ
Gephi: 複雑ネットワーク分析ソフトウェアであり、主にさまざまなネットワークや複雑システム、動的および階層グラフのインタラクティブな可視化と探索に使用されるオープンソースツール
Nutch: 有名なクローラープロジェクトであり、Hadoopはこのプロジェクトから発展した
web-harvest: Webデータ抽出ツール
POMツール:Maven+Artifactory、Netflix
Curator: Netflix社がオープンソース化したZookeeperクライアントライブラリであり、Zookeeperクライアントプログラミングを簡素化するために使用される
Akka: actorモデルに基づいて実装された並行処理フレームワーク
EclEmma: カバレッジテストツール
.NET関連
Xilium.CefGlue: CEFフレームワークの.NETラッパーであり、.NETベースでChromeカーネルブラウザを開発する
CefSharp:同上、WebKitのラッパーがあり、C#とJsの連携がより簡単になる。
netz: 無料の .NET 実行ファイル圧縮ツール
SmartAssembly: 驚異的な .NET コード最適化・難読化ツール
NETDeob0: .NET難読化解除ツール、まさに魔高一尺道高一丈ですね(de4dot もあり、GitHub上で、どちらもオープンソースです)
ILMerge: 参照しているすべてのDLLとexeファイルを1つのexeファイルにまとめる
ILSpy: オープンソースの .NET プログラム逆コンパイルツール
Javascript.NET: とても良いJS実行エンジンで、v8をラップしている
NPOI: Excel操作
DotRAS: リモートアクセスサービスのモジュール
WinHtmlEditor: Winform向けHTMLエディタ
SmartThreadPool: C#で実装された、高度な機能を備えたスレッドプール
Snoop: WPF Spy Utility
Autofac: 軽量なIoCフレームワーク
HtmlAgilityPack: HTML解析の強力ツール
Quartz.NET: ジョブスケジューリング
HttpLib: @CodePlex、HTTPリクエストを簡素化
SuperSocket: Socket操作を簡素化。これに基づくSuperWebSocketもあり、スタンドアロンのWebSocketサーバーを開発できる
DocX: Officeがインストールされていない環境でWordファイルを操作
Dapper: 軽量なORMクラスで、性能が良い
HubbleDotNet: データベース接続をサポートする全文検索システム
fastJSON: @CodeProject、高性能なJSONシリアライゼーションクラス
ZXing.NET: @CodePlex、QR、バーコード関連
Nancy: 軽量なHTTPサーバー。小規模なWebアプリならIISから解放される(Nancy.Viewengines.RazorでRazorエンジンを追加できる)
AntiXSS: マイクロソフトのXSS防御ライブラリ Microsoft Web Protection
LibraryJint: JavaScriptインタプリタ
CS-Script: C#コードファイルをスクリプトとして実行
Jexus: Linux上で動作する高性能、使いやすい、無料のASP.NETサーバー
Clay: dynamicをより柔軟に活用して、JavaScriptを書くようにC#を書ける
DynamicJSON: データモデルを定義せずにJSONデータを取得
Antlr: オープンソースの構文解析器(C#に分類するのは適切ではないが、他の言語でも使える)
SharpPcap: C#版のWinPcap呼び出し側。すごいネットワークパケット解析ライブラリ(パケットプロトコル解析用のPacketNotNetが付属)
Roslyn: C#、VBコンパイラ
ImageResizer: サーバー側で画像サイズを自由に制御。まさに神ツールだ。モバイル端末には小さい画像を、PCには大きい画像を配信するCMSで使うととても便利
UI関連: DevExpress, Fluent(Office 07スタイル), mui(Modern UI for WPF)
NetSparkle: アプリの自動更新コンポーネント
ConfuserEx: オープンソースの .NET 難読化ツール
ServiceStack: オープンソースの高性能Webサービスフレームワーク。高性能なRESTサービスの構築に使用できる
Expression Evaluator: C#用のEval、文字列式を処理
よく使うツール
- Fiddler: 非常に使いやすいWebフロントエンドデバッグツール。もちろん低層のHTTPプロトコル向け。通常はChromeなどの標準デバッグツールで十分だが、特殊な場合はこれを使う必要がある
- wireshark: 有名なネットワークパケット解析ツール
- PowerCmd: Windows Cmdの代替となる強力なツール
- RegexBuddy: 強力な正規表現テストツール
- Soure Insight: ソースコード閲覧の神ツール
- SublimeText: プログラマーに最も愛されるエディタ
- Database.NET: 汎用のリレーショナルデータベースクライアント。.NET 4.0ベースで開発されており、簡単な処理にはかなり便利
- Navicat Premium: MySql、PostgreSQL、Oracle、Sqlite、SQL Serverをサポートするクライアント。汎用性はDatabase.NETに及ばないが、性能はDatabase.NETよりはるかに優れている。バックアップ機能も内蔵されており、データベースの定期バックアップにも使える
- Synergy: ローカルネットワーク内で1セットのキーボードとマウスで複数のPCを操作
- DameWare: リモート支援ツールセット(会社では主に大画面の制御に使用)
- Radmin: リモート制御ツール。しばらく使っていた
- DameWareはクラックが必要だし、Win7のサポートも良くない。結局これ(Radmin)が使いやすいと分かった
- Listary: Windowsのファイル閲覧・検索速度と効率を飛躍的に向上させる「超神ツール」
- Clover: エクスプローラーにマルチタブを追加
- WinLaunch: Mac OSのLaunchをシミュレートするツール
- Fritzing: 回路図の描画
- LICEcap: GIFチュートリアル作成ツール
- svn: バージョン管理システム。Enigma Virtual Box(exe、dllなどを1つの実行可能プログラムにカプセル化)
- Open DBDiff(SqlServer向け): データベース同期
- SymmetricDS: データベース同期
- BIEE、Infomatica、SPSS、weka、R言語: データ分析
- CodeSmith、LightSwitch: コード生成
- Pandoc: Markdown変換ツール、書籍出版用。以前docbookを使っていたが、今はやはりMarkdownが主流だね
- Window Magnet[Mac]: Macのウィンドウ管理機能を強化。Win7のようにウィンドウを画面端にドラッグすると自動的にサイズ調整される
- log explorer: SqlServerログを表示
- dependency walker: WindowsアプリケーションのDLL依存関係を照会
- Shairport4w: iPhone、iPad、iPodのオーディオをAirPlayプロトコルでPCに転送
- ngrok: 内網トンネルツール。Axure: 高速プロトタイピングツール。オンラインで作図できるツールもあり、中国のスタートアップチームが作ったもので、なかなか使いやすいhttp://www.processon.com
- tinyproxy:(Linux)HTTPとHTTPSプロトコルをサポートする小規模なプロキシサーバー
- EaseUS Partition Master: 非常に簡単なパーティション調整ツール。速度もかなり速い。Cドライブの容量が足りなくなったら、これでDドライブから領域を移動しよう。OSを再インストールする手間は不要だ
- CheatEngine: ゲームのメモリ値変更に必須の神ツール(軒轅剣6をプレイしていたときこれを使っていた、超便利だった)
- ApkIDE: Android逆コンパイルの神ツール。グレートファイアウォール回避ツール(自|由|门、天行浏览器)
設計ツール: Sketch、OmniGraffle
MindManger: マインドマップ