Tips of how to understand the source code of big software projects
![大規模ソースコードの読み方](https://cdn-ak-scissors.b.st-hatena.com/image/square/d30415be0eb3659200832f75b9cbd23a474a8c88/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Faff7bedefca1478cac94b0ac47eba97f%2Fslide_0.jpg%3F8739236)
あるエンジニアがプログラムを紡いでいく様を見てみるでしたライブコーディングで言ったことや言わなかったことを書いてみます。 意識してるのは「コードをどまんなかに」です。 speakerdeck.com ……あ、このスライドのブログ書き忘れてた。 スライド中の「えらぶ」はだいたいIDEの機能を指します。なのでライブコーディング中に使用したIDEの機能も挙げようと思います。基本的にデフォルトのつもりだけど、vimとの兼ね合いで変更してるのもあるので、そこはごめんなさい。あとMacです。今回はメソッド抽出とかクラス間移動とかダイナミックなのがなくて地味だけど、便利な子たちなので使ってあげてください。 リプレイ 今日の公開コーディングはスゴい新鮮だった🎵 コミット後のソースには、どこに悩んだのか、どこにこだわったのかは残らないのですね。 実際のコーディングを見させて頂く事で、気づかされる事が多かっ
最近ガンプラ(ガンダムのプラモデル)の全塗装をやっているわけですが、僕がガンプラ全塗装でやっているプロセスは、まさに現代のソフトウェア開発プロセスのなんたるかを擬似的に短期間で凝縮して体験できる優れたプロセスである、と思わされましたので、それについて書きたいと思います。 僕のガンプラ全塗装のやり方を大まかにまとめると、 説明書チェック 各パーツの処理をしながら組み立てる 一度全てのパーツを仮組みし塗装箇所や全体の塗装行程を検討 全て分解して塗り分けパーツごとにパーツを分離 全塗装 再度仮組み後にスミ入れとデカール貼り 必要であれば再度分解してトップコート 完成 という手順になるわけですが、えっ、これってまさに今のソフトウェア開発プロセスそのものじゃないですか、作りたいソフトウェアなくてもそこそこのソフトウェア開発プロセスが今すぐにでも体験できるじゃないですか、ソフトウェア開発プロセスから入
引継ぎ資料を作るときには、ボードゲームの説明書の作り方を真似しましょう。すると誰でも分かりやすい資料ができて、後任の人がハッピーになって、感謝されて、あなたもハッピー。 本noteでは、そんなハッピーを生み出すために、ボードゲームの説明書の構造 & 引き継ぎ資料への作り方を解説していきます。ゲームを作る方なら、説明書をデザインするときも参考になるかもしれません。 まずは実際の説明書を見てみましょう。 下記の画像は、僕が以前つくった「切り裂きジャックは誰?」というゲームの説明書です。「B51枚に収める & フォントは最低でも7pt」という制約のため詰め込み気味ですが、内容は結構わかりやすくなっているかと思います。 これを踏まえて、各項目について解説していきます。 1.ゲームの名前おそらくどんな説明書でも、最初に書かれているのはそのゲームの名前ではないでしょうか。 引き継ぎ資料も同様に、最初は
English version available on dev.to はじめに matplotlibで作ったグラフの細かい調整は大変です。何をどういじったらいいのかを調べるのにアホみたいに時間がかかることがあります1。「何を」の部分の名前さえわからないこともあります。解決の糸口を掴んだ後も希望通りの見た目を実現するまでの最後のアレンジに苦労することが多いです2。これらの問題はmatplotlibのグラフがどういう要素で構成されていて、それらに対してどういうことができるかを知ることでいくらか改善されます。私はひたすらStack Overflowの回答を読むことでいろんなつまづきを時間をかけて乗り越えてきましたが、最近になってようやく公式チュートリアルにこの苦労を回避できたはずのヒントが書いてあることに気づきました。初期にざっと目を通したのですが「なるほど、よくわからん」と判断して読み込まな
The Qiita Advent Calendar 2017 is supported by the following companies, organizations, and services.
I’ve compiled a list of essential Vim commands that I use every day. I have then given a few instructions on how to make Vim as great as it should be, because it’s painful without configuration. Essentials Cursor movement (Normal/Visual Mode) h j k l - Arrow keys w / b - Next/previous word W / B - Next/previous word (space separated) e / ge - Next/previous end of word 0 / $ - Start/End of line ^ -
プログラミングやIT関連技術に関する情報を、以下のようなものを組み合わせて効率よく検索する検索方法を紹介します。 Stack Overflow Slideshare 画像検索 Githubのawesomeレポジトリ Github 背景 近年のOSSを積極的に活用した開発では、常に新しい技術や概念が登場します。全てを取り入れることはありませんが、顧客や社内の色々な事情により、こういった技術を調査して必要に応じて取り込んでいくことが以前よりも多くなっていると思います。このため開発者は以下のような状況に置かれることが多くなりました。 同じプログラミング言語、ライブラリを使い続けることができない 分かりやすい書籍、研修が存在しない 取り組むべき技術について詳しい人が回りにいない しかしこのような状況に陥ったとしても、新しく取り組む技術について素早く把握する必要がありますし、開発においても慣れいない
1 プログラミング作法 PRACTICE OF PROGRAMMING 8 ソフトウェア工学 Software Engineering 良いプログラムを作成するための経験的ノウハウが さまざまな作法としてまとめられている プログラミング作法とは • プログラミングの細かな実践的ノウハウ • ソフトウェア工学的な価値観 • 今回学ぶ内容: スタイル,テスト,デバッグ,移植性 【参考文献】 1) B. W. Kernighan, R. Pike: プログラミング作法, アスキー(2000) 2) D. Boswell, T. Foucher: リーダブルコード, オライリー(2012) 2 スタイル STYLE グローバル変数の名前はわかりやすく ■グローバル変数の宣言 int nusers = 0; // ユーザの人数 int n = 0; 3 ローカル変数の名前は短めに ■ローカル変数 i
自分で小さいツールを作る時に心に留めているtipsです. 書き始めたときは「どうせ書捨てだし」と思って書き始めると意外と長い間,もしくはいろんなところで使うことになったりするので,気をつけておくと後から楽になるというような小技です.大規模なソフトウェアの開発ではまた違った流儀があると思います. メインルーチンを関数にする 関数名はなんでもいいのですが,自分は趣味で main() という名前の関数を用意し,メインルーチンは全てそこに書くようにしています. #!/usr/bin/env python def main(): print('hello, hello, hello!') if __name__ == '__main__': main() pythonの小さなサンプルコードを見たりすると関数外の部分にベタで実行コードが書かれていたりします.もちろんそれでも動くのですが,以下の2点で後
こんにちは。 タダケン(@tadaken3)です。 プログラミングを学習する方法は、たくさんあります。入門書、プログラミングのスクール、オンラインでの学習サイト、プログラミングの入門動画などなど。たくさんの方法があってどれが効果的なのか迷ってしまいますよね。 そんなあなたに取って置きの方法をお伝えします。それは写経です。ボクはプログラミングを習得するには「写経」が一番いいと考えています。 とにかく書き写す プログラミングをはじめて学ぶ方は、まずはサンプルコードをひたすら書き写すのがオススメです。プログラミングは「言語」なので、習得するにはどうしても書いて覚える必要があります。言語なので書けば書くほどうまくなるというのが持論です。 書いているうちにその言語の特徴や文法が体に染み付いてきますし、「書いて動かす」を繰り返すことでプログラミングの勘所みたいなものが養われます。とくにプログラミング初
はじめに Linuxを学ぶ上で 先に教えて欲しかったことを書きます。 つまりは、教える機会があれば先に伝えておきたいことです。 便利なキー操作や誤りがあればぜひ教えてください。 また、この記事に対してmorimorihogeさんの分かりやすい補完がありますので、ぜひそちらと合わせてお読みください 流れ 1.キーボード操作編 知ってると便利なショートカット。 2.用語・概念編 知ってるとひらめくかも。 3.コマンド編 知っておくべき重要なコマンド、時短になるコマンド。 キーボード操作編 補完機能 Tab連打。 連打すると勝手にlsしてフォルダ内のファイル一覧を教えてくれる。 候補が絞られると勝手に名前を補完してくれる。 入力間違いでもBackspaceやDeleteできない ^H^H^Hや^[[3~、^[[Dが表示されて涙目。 Ctrl + U で入力したものがきれいに消える。 パスワードを
また、私たちバズ部は12年で400社以上のメディア支援を行い、 立ち上げから10ヶ月で14.6億円の売上を産んだ不動産メディア8ヶ月で月間140万PVを実現したアプリメディアなど大きな成果を挙げ続けている。 各サイトの成功要因をインタビューしているので、 あなたのサイトに役立てて欲しい⇒25サイトの成功事例インタビューはこちら 1. 平均CTRの5倍以上のCTRを叩き出したタイトル実例13選 平均CTRの5倍以上のCTRを叩き出したタイトル実例13選(弊社クライアント) (データは2017年7月時点の数値) 上半身ストレッチはイイコトばかり!部位別エクササイズ10選二の腕筋トレ5日間!腕幅-1.5cmを実現した5種目はコレ!お酒を飲むとニキビができる?美肌キープのポイント5つノンデザイナー必見!自社サイトをぐっと見やすくする3つのコツ熟睡必至の3大機能と素材とは?敷きパッドのおすすめの選
こんにちは!ほけきよです。 世の中のクリエイティブな仕事という人たちがどんな仕事をしているか知っていますか。 *1 この資料作成が2倍早くなると、どうなりますか?こうなります。 クリエイティブな時間を少しでも増やすために、パワポの効率化は不可欠なのです。*2 今日は、大学院から社会人にかけての数年間でパワポ職人となりつつある私が、爆速で資料を作る方法を紹介します。 絶対覚えておくべきものから、他の人と一歩差をつけられるものまで、レベル別に取り揃えるので、是非是非ご覧ください ※ 今回のはWindows PowerPoint 2016版です。互換性は各自試しながら確認してください。 初級編 超基本 スライドショー編 その他Tips 中級編 文字列の編集 微調整のCtrlキー マウス移動時Tips 上級編 図形を爆速で並べるための"位置揃え, 整列" 数式が書きたい マウスを使わずフォント変更
Rails開発用にvimの環境を整えようと思います。 今年、vimのメジャーバージョンアップがあったんですね。知りませんでした。せっかくなので、新しいバージョンを利用しようとvimアップグレード作業をしたのですが、これがかなりしんどかった。たかだかvimをインストールするだけで、こんなに大変だったとは。 環境情報は以下です。 CentOS 7.2 vim 8.0.134 pyenv利用環境 rbenv利用環境 rootで作業してます。 現行vimをアンインストール まず、現行でインストールされているvimを確認。 # vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 10 2014 06:55:55) 入っているのは7.4の古いバージョンなので、これをアンインストール。尚、アンインストールされる際に、依存の関係でs
はじめに 現状 仕事ではSubversionを使用。仕事とは関係なく、プライベートでGitHubを使ってみたい。 GitHubに登録してみたはいいものの、1年くらい放置。 今さらですが、勉強のために、GitやGitHubについてまとめてみようと思った。(自分のメモ用でまとめたので、もし間違ってるところとかおかしいところがあったら教えていただけると助かります) Git とは バージョン管理を行うためのツール。 リモートリポジトリ(共有リポジトリ)とローカルリポジトリを使い分けて開発を行う。 2005年に誕生。もともとはLinuxカーネルのソースコード管理のために、リーナス・トーバルズによって開発された。 売り → 高速。作業時にサーバ接続が必要ない。等 GitHub とは Gitを利用した、リモートリポジトリ(共有リポジトリ)を提供しているwebサービス。 ご利用には登録が必要。無料プランの
#(python-dev python3-dev ruby-devは個人的にPythonとRubyを使いたい為にいれているので、個人の環境に合わせて下さい。) sudo apt-get install -y git build-essential ncurses-dev lua5.2 lua5.2-dev luajit python-dev python3-dev ruby-dev #ディレクトリ移動。 cd /opt/ sudo git clone https://github.com/vim/vim cd vim/ #ビルドファイル生成 sudo ./configure --with-features=huge --enable-multibyte --enable-luainterp=dynamic --enable-gpm --enable-cscope --enable-font
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く