ブックマーク / www.clear-code.com (36)

  • 共有するほど皆が得するモデルをつくりたい話 - 2024-06-17 - ククログ

    業の傍ら、「クリアコードをいい感じにする人」として働いているたなべです。「クリアコードをいい感じにする人」とは何かについては過去に『「クリアコードをいい感じにする人」の採用を開始』という記事や採用情報の『「クリアコードをいい感じにする人」』にて解説されています。 今回はその活動の中で最近取り組んでいる「共有するほど皆が得するモデルをつくりたい」という取り組みを説明します。興味を持ってくれる人・助けてくれる人と話すきっかけになることも期待しているので、記事を読んで話を聞いてみたい・してみたいと思った方は sunao.tanabe@gmail.com 宛に連絡をください。 「共有するほど皆が得するモデル」とはなにか 「共有するほど皆が得するモデル」とは、ソフトウェアに関わる人が増えれば増えるほど、そのソフトウェアに関わる人が得をするという、関わる人の増加と得られる恩恵に正の相関がある状態のこ

    共有するほど皆が得するモデルをつくりたい話 - 2024-06-17 - ククログ
  • 研鑽Rubyプログラミング - 2023-04-27 - ククログ

    Rubyコミッターの須藤です。 2023年4月に「すでにRubyをよく知っている」人向けの書籍研鑽Rubyプログラミングが出版されました。私はRubyをよく知っているので読む資格があるはず! 内容 Jeremy Evansさんはもりもりコードを書いているRubyコミッターです。そんな人が書いた内容なので、上級者なら知っていそうだけど中級者は知らないかも?というレベルの情報がバンバン出てきます。初心者はついていけないでしょう。あるいは書いている内容を鵜呑みにしてしまうかもしれません。 しかし、ここに書いている内容を鵜呑みにしてはいけません。サブタイトルが「実践的なコードのための原則とトレードオフ」とある通り、一部は「原則」としてベースの考えとしてもいいものですが、そうでないものは「トレードオフ」として考えなければいけません。「トレードオフ」ということはあちらを優先するとこちらがおろそかになる

    研鑽Rubyプログラミング - 2023-04-27 - ククログ
  • 高速データ収集ツール『Fluentd』の開発体制強化 - クリアコード

    株式会社クリアコード(社:埼玉県所沢市、以下クリアコード)は日、オープンソースソフトウェア『Fluentd』プロジェクトの開発・メンテナンスにおいて、トレジャーデータ株式会社(社:東京都千代田区、以下トレジャーデータ社)が担当していた活動を引き継ぎ、開発体制を強化することをお知らせします。 『Fluentd』は2011年にトレジャーデータ社によって開発の始まったオープンソースソフトウェア(以下OSS)プロジェクトで、クリアコードは2015年9月から同プロジェクトに参加。コミュニティサポート、プラグインのメンテナンスといった活動を開始し、以降『Fluentd』体の不具合修正、機能拡張、ドキュメント整備など活動範囲を拡大してきました。法人向けの各種サービスも提供しており、トレジャーデータ社と協働で、トレジャーデータ社の顧客に対する『Fluentd』の導入支援等も行っています。また、20

    高速データ収集ツール『Fluentd』の開発体制強化 - クリアコード
  • Ruby on Railsと素のPostgreSQLで日本語全文検索 - 2020-12-22 - ククログ

    PostgreSQLに超高速な日語全文検索機能を追加するPGroongaを開発している須藤です。今回はPGroongaやpg_bigmなど拡張モジュールを使わずにPostgreSQLの組み込み機能だけで日語全文検索を実現する方法を紹介します。PGroongaを使う方法はRuby on RailsでPostgreSQLとPGroongaを使って日語全文検索を実現する方法を参照してください。 Heroku PostgresなどDBaaSとして提供されているPostgreSQLではPGroongaを使えません。(DBaaSとして提供しているベンダーがPGroongaをインストールしてくれないから。)PostgreSQLの組み込み機能だけでは日語全文検索を満足に実現することができないので、DBaaSのPostgreSQLを使っていると次のように日語全文検索で困ってしまいます。 日人のプ

    Ruby on Railsと素のPostgreSQLで日本語全文検索 - 2020-12-22 - ククログ
  • ノータブルコード3 - 危険なバグを仕組みで予防する - 2020-02-12 - ククログ

    第三回目のノータブルコードで取り上げるのは、分散バージョン管理システムGitのヘッダファイル「banned.h」です。 banned.h とは何か? これは何かと言うと、その名前の通り「危ない関数の利用を禁止する」ためのヘッダです。実際にコードを見てみましょう。 #ifndef BANNED_H #define BANNED_H /* * This header lists functions that have been banned from our code base, * because they're too easy to misuse (and even if used correctly, * complicate audits). Including this header turns them into compile-time * errors. */ #define

    ノータブルコード3 - 危険なバグを仕組みで予防する - 2020-02-12 - ククログ
  • 2019年、fat gemをやめる - 2019-11-22 - ククログ

    fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。過去にfat gemの作り方をまとめたこともあります。 Ruby 1.8.7/1.9.1どちらでも使えるWindows用バイナリ入りgemをDebian GNU/Linux上で作る方法 Windowsの32bit/64bitRuby用バイナリ入りgemをDebian GNU/Linux上で作る方法 fat gemが有用な時代もあったのですが、今はメリットよりもデメリットの方が大きいのでfat gemをやめたらどうか、という話をします。 fat gemについて fat gemとはビルド済みバイナリーが入ったgemのことです。Pythonで言えばwheelのようなものです。 RubyはC言語でRuby用のライブラリーを実装することができます。これを拡張ライブラリーと呼びます。拡張ライブ

    2019年、fat gemをやめる - 2019-11-22 - ククログ
  • OSSへのフィードバックはユーザーフォーラムとイシュートラッカーのどちらに書くべきか? - 2019-06-18 - ククログ

    ※注:この記事の対象読者は、「OSSを使用していてトラブルに遭遇しているか、改善の提案があり、その情報を開発元に伝えたいが、どこで伝えればよいかわからない」という人です。「どういう体裁で報告すればよいか分からない」「何を報告すればよいか分からない」という人向けの話はまた日を改めて書くつもりです。 結城です。 OSS Gateワークショップで、初めてフィードバックをしようとしているビギナー参加者のサポートをしていると、ビギナー参加者から以下のような質問を受ける事があります。 こんな簡単な・くだらないレベルの事を報告してもいいんでしょうか? ユーザーフォーラムとイシュートラッカー(バグトラッキングシステム)1のどちらに報告すればいいんでしょうか? どのプロジェクト(開発元)に報告すればいいんでしょうか? これらの点に対する筆者の回答は、端的には以下のようになります。 簡単でも些細でも何でも、あ

    OSSへのフィードバックはユーザーフォーラムとイシュートラッカーのどちらに書くべきか? - 2019-06-18 - ククログ
  • Webアプリや拡張機能(アドオン)で、Web Crypto APIを使ってローカルに保存されるデータを暗号化する - 2019-01-30 - ククログ

    株式会社クリアコード > ククログ > Webアプリや拡張機能(アドオン)で、Web Crypto APIを使ってローカルに保存されるデータを暗号化する ※注記:文末尾の「公開鍵暗号ではなく共通鍵暗号を使う理由」の説明について、2019年1月30日午前0時から21時までの間の初出時に内容の誤りがありました。また、2019年1月30日午前0時から2月5日20時頃までの間において、文中での AES-CTR による暗号化処理が、 nonce を適切に指定していないために脆弱な状態となっていました。お詫びして訂正致します。初出時の内容のみをご覧になっていた方は、お手数ですが訂正後の説明を改めてご参照下さい。 クリアコードで主にMozilla製品のサポート業務に従事している、結城です。 FirefoxやThunderbirdがSSL/TLSで通信する際は、通信内容は自動的に暗号化されます。その一

    Webアプリや拡張機能(アドオン)で、Web Crypto APIを使ってローカルに保存されるデータを暗号化する - 2019-01-30 - ククログ
  • Ruby 2.6.0とtest-unitとデータ駆動テスト - 2018-12-26 - ククログ

    Rubybundled gemのtest-unitをメンテナンスしている須藤です。 歴史 test-unitはxUnitスタイルのテスティングフレームワークです。Rubyのテスティングフレームワークの歴史(2014年版)にまとめてある通り、Ruby体に標準添付されています。 Rubyに標準添付されているライブラリーには実は次の3種類あります。 ただの標準添付ライブラリー(例:URI) requireするだけで使えるライブラリー default gem(例:csv) requireするだけで使えるライブラリー RubyGemsで更新できる Gemfileでgemを指定しなくても使える bundled gem(例:test-unit) requireするだけで使えるライブラリー RubyGemsで更新できる どれも標準添付ライブラリーなのでrequireするだけで使えます。違いはRubyG

    Ruby 2.6.0とtest-unitとデータ駆動テスト - 2018-12-26 - ククログ
  • db tech showcase Tokyo 2018 - MySQL・PostgreSQLだけで作る高速あいまい全文検索システム #dbts2018 - 2018-09-20 - ククログ

    関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 去年は「MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム」というタイトルで話しました。去年はMySQL(Mroonga)・PostgreSQL(PGroonga)で次のことを実現するための具体的なSQLを紹介しました。 全文検索 キーワードハイライト 周辺テキスト表示 入力補完 同義語展開 関連文書の表示 構造化データ(オフィス文書・HTMLPDFなど)対応 今年は「MySQL・PostgreSQLだけで作る高速あいまい全文検索システム」というタイトルで話しました。今年も話の流れは同じにしました。あることを実現する具体的なSQLを紹介するというスタイルです。今年はMySQL(Mroonga)・PostgreSQL(PGroonga)で次のことを実現す

    db tech showcase Tokyo 2018 - MySQL・PostgreSQLだけで作る高速あいまい全文検索システム #dbts2018 - 2018-09-20 - ククログ
  • PostgreSQL Conference Japan 2017 - PGroonga 2 - PostgreSQLでの全文検索の決定版 #pgcon17j - 2017-11-07 - ククログ

    PostgreSQL Conference Japan 2017の前にPGroonga 2のリリースアナウンスを出せた須藤です。間に合ってよかった。 PostgreSQL Conference Japan 2017でPGroonga 2を紹介しました。PGroongaを使ったことがない人向けの内容です。実際、聞いてくれた人たちはほとんど使ったことがない人ばかりでした。 関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 PostgreSQLをバックエンドに「今っぽい」全文検索システムを作るためのPGroongaの使い方を紹介するという内容になっています。具体的には次の機能を実現する方法を紹介しています。 高速全文検索 それっぽい順でのソート 検索結果表示画面で検索キーワードをハイライト 検索結果表示画面で検索キーワード周辺テキ

    PostgreSQL Conference Japan 2017 - PGroonga 2 - PostgreSQLでの全文検索の決定版 #pgcon17j - 2017-11-07 - ククログ
  • Windows 10のWindows Subsystem for Linux(WSL)を日常的に活用する - 2017-11-08 - ククログ

    この表に示す通り、WSLは既存の取り組みでそれぞれ諦めざるを得なかった部分の両立を図った新しい選択肢と言えます。 端的に言うと、「WindowsLinux互換のコマンド操作インターフェースが加わった」状態に近いものとなっています。 Linuxデスクトップ環境やmacOSでは、「普段の操作はGUIで行いつつも、定型的な処理を素早く済ませたい場合には『端末』のウィンドウを開いて、その中で普段サーバーの操作に使っているのと同様のコマンド操作を行う」という使い方ができますが、WSLによってWindowsでもこれに近いことができるようになります。 WSLそのものの導入手順やWSLの仕組みの概要については、技術情報サイトの記事やまんがでわかるWSLなどに譲る事にして、この記事では具体的な活用事例にフォーカスしてご紹介していきます。 なお、Windows 10 Creators Updateおよびそ

    Windows 10のWindows Subsystem for Linux(WSL)を日常的に活用する - 2017-11-08 - ククログ
  • 書き捨てのRubyスクリプトをgemにするときの育て方の一例 - 2016-09-08 - ククログ

    Rubyでちょっとしたこと、例えばテキスト処理などをしたくてスクリプトを書くことはよくあります。そんなスクリプトは意外と再利用したくなるものです。しかし、作業用ディレクトリに適当なファイル名で保存していたりすると探し出すのは困難ですし、コマンドラインにワンライナーで書いたものだとそもそも残っていないこともあります1。別のPCでの再利用も、それらの保存方法では当然ながら不可能でしょう。 そこで、どこか整理された場所に保存しておいて再利用に備えたいのですが、保存先が問題になります2。そんなとき、私は次のような理由からgemRubyGems)にしてしまうことにしています。手元ですぐに実行できますし、別の環境へのインストールも簡単です。また、他のRubyプログラムへの組み込みもコピペせずに実現できます。もちろん他の人が使えるようになるというメリットもあるのですが、自分の用途に限っても長い目で見れ

    書き捨てのRubyスクリプトをgemにするときの育て方の一例 - 2016-09-08 - ククログ
  • Ruby on RailsでPostgreSQLとPGroongaを使って日本語全文検索を実現する方法 - 2015-11-09 - ククログ

    PostgreSQLは標準機能では日語のテキストを全文検索することはできません。PostgreSQLにPGroonga(ぴーじーるんが)という拡張機能を導入することで日語のテキストを全文検索できるようになります。しかもPGroongaは高速です。Wikipedia語版のテキスト(約185万件・平均約4KB)から約2万件ヒットするような全文検索をしても0.2秒かかりません。 PostgreSQLと全文検索エンジンサーバーを組み合わせて日語全文検索を実現することもできますが、管理するサーバーが増える・SQL以外に全文検索エンジンサーバーのことを覚える必要があるなど開発・運用時のコストが高くなります。PostgreSQLだけで完結できた方が開発時も運用時も楽になります。 この記事ではRuby on Railsで作ったアプリケーションからPGroongaを使って日語全文検索機能を実現す

    Ruby on RailsでPostgreSQLとPGroongaを使って日本語全文検索を実現する方法 - 2015-11-09 - ククログ
  • OSS開発に参加する人を増やす取り組み「OSS Gate」を開始 - 2015-10-20 - ククログ

    クリアコードは去年からSEゼミという企画に協力していました。SEゼミというのは技術的なテーマを軸にして工学系の学生と企業を結びつける就職支援系の企画です。(明示的にそう書かれているページを見つけられませんでしたが、そんなに間違っていないはず。) 去年はリーダブルコードというテーマで協力し、今年はOSSというテーマで協力しました。運営のSEプラスさんは、クリアコードが提案した(チャレンジングな)内容を最大限に活かしてくれました。幸い、参加してくれた学生の方にも企業の方にも楽しんでもらえたようです。クリアコードとしても非常に学ぶことが多いステキな機会でした。ただ、残念ながらお金の面でSEゼミを継続することはできないことが決まりました。 事業としては継続できないのですが、今年のSEゼミで得られた次の知見を活かして「OSS開発に参加する人を増やす取り組み」を始めます。 OSS開発に未参加の人は参加

    OSS開発に参加する人を増やす取り組み「OSS Gate」を開始 - 2015-10-20 - ククログ
  • 自己流JavaScriptを書いていた人がAngularJSのユニットテストで躓いた点 - 2015-07-10 - ククログ

    結城です。 最近、AngularJSを使ったWebアプリ開発のプロジェクトに参加する事になり、とりあえず一通りの事は把握しておかなければと思って公式のチュートリアル(英語)を実践してみたのですが、JavaScriptの経験が浅い人だとハマらなさそうだけれども、中途半端に経験があったせいでドハマり、という場面に遭遇してしまいました。 恥ずかしい話ですが、せっかくなので同じように躓いている人(もしいれば)のために、分かった事や理解のポイントを書き記しておこうと思います。 この記事の対象読者は、以下のような状況にある人です。 フレームワークを使わないJavaScript(例えば、jQueryを使ったJavaScript程度)は書いた事がある。 自動テスト(特に、ユニットテスト)は書いた事がある。 AngularJSを始めたばかりである。 依存性注入という概念は理解できるが、実際にどう使うかはあま

    自己流JavaScriptを書いていた人がAngularJSのユニットテストで躓いた点 - 2015-07-10 - ククログ
  • クリアコードに入社した理由: フリーソフトウェアを仕事にしたい - 2015-03-19 - ククログ

    はじめまして、今年の2月にクリアコードに入社した横山です。この記事では、私がクリアコードに入社した理由のひとつである「フリーソフトウェアを仕事にしたい」ということについて、フリーソフトウェアやクリアコードに興味を持ったきっかけと、入社までの経緯をお伝えします。 フリーソフトウェアに興味を持ったきっかけ 私は社会人になってから格的にプログラミングを始めました。研修や仕事でプログラミングに触れるにつれて楽しさを感じ、研修で触れたRubyがよさそうだったので、趣味でもプログラムを書いたりしていました。 その頃、何度か社内外の勉強会で発表する機会があり、既存のプレゼンテーションツールに不満を感じていました。そこで、新しいツールを探していたところ、Rubyで作られているRabbitというソフトウェアがあることを知り、次のような点が気に入って使い始めました。 テキストエディタで書けるのでバージョン管

    クリアコードに入社した理由: フリーソフトウェアを仕事にしたい - 2015-03-19 - ククログ
  • Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ

    2014年12月にRuby 2.2がリリースされる予定です1。 Ruby 2.2にはRuby 1.9.1のときに外されたtest-unitというテスティングフレームワークが再びバンドルされる予定です。Rubyのテスティングフレームワーク周りに詳しくない人にはよくわからない状況でしょう。そこで、Rubyのテスティングフレームワークの歴史を説明することで状況を整理します。 名称の整理 この説明の中ではたくさんのテスティングフレームワークが登場します。似たようなものもあるため、最初にテスティングフレームワークの名称を整理します。この説明の中で登場する名称は次の通りです。 RubyUnit Lapidary rubyunit Test::Unit test/unit test-unit miniunit minitest RSpec 違いがわかりますか?ざっくり説明すると次の通りです。 RubyU

    Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ
  • メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ

    毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。 「ん?」と感じてコミットを見直してみても、何が気になったか自分でもすぐにわからない場合があります。そんなとき、気になったことをコミットした人に伝えるために、コミットへのコメントをまとめ始めます。「コミットした人に伝えるため」というように、他の人に伝えようとすることがポイントです。他の人に伝えるためにまとめようとすると、思いの外なにが気になったかまとまるものです。 今回は、メタプログラミングを使ってコードを整理したコミットで「ん?」と感じたときのことについて紹介します。このおかげで「メタプログラミング

    メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ
  • わかりやすいコミットメッセージの書き方 - 2013-04-24 - ククログ

    もう1年以上前になりますが、コミットメッセージの書き方を説明しました。ざっくりまとめると、以下のことを説明しています。 わかりやすいコミットメッセージがいかに大切か どのようなコミットメッセージがわかりやすいか(具体例付き) この説明をしてからも、日々コミットしていくなかで新たに得られた「どうすればもっとわかりやすいコミットメッセージになるか」という知見が増えていました。これは、コミットへのコメントサービスの提供を開始した1ことも影響しています。このサービスでは、コミットへコメントするときに「どうして自分は他の書き方よりもこの書き方をわかりやすいと感じるか」を説明しています。その過程で「なんとなくこっちの方がよさそう」だったものを「具体的にこういうときにこう感じるのでこっちの方がよさそう」と何かしら理由を考えるようになりました。これにより、今までそれぞれの開発者でなんとなくだった考えが共有

    わかりやすいコミットメッセージの書き方 - 2013-04-24 - ククログ